亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

操作系統(tǒng)

Linux系統(tǒng)故障排查和解決方法

時間:2024-07-09 04:13:14 王娟 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

Linux系統(tǒng)故障排查和解決方法

  Linux系統(tǒng)在啟動過程中會出現(xiàn)一些故障,導致系統(tǒng)無法正常啟動,我在這里寫了幾個應用單用戶模式、GRUB命令操作、Linux救援模式的故障修復案例幫助大家了解此類問題的解決。

  (一)單用戶模式

  Linux系統(tǒng)提供了單用戶模式(類似Windows安全模式),可以在最小環(huán)境中進行系統(tǒng)維護。在單用戶模式(運行級別1)中,Linux引導進入根shell,網(wǎng)絡(luò)被禁用,只有少數(shù)進程運行。單用戶模式可以用來修改文件系統(tǒng)損壞、還原配置文件、移動用戶數(shù)據(jù)等。

  以下列舉了幾個單用戶模式修復系統(tǒng)故障的典型案例:

  案例一:root密碼忘記

  在單用戶模式中,Linux不需要root密碼(Red Hat系統(tǒng)不需要root密碼,但SuSe則需要,不同Linux系統(tǒng)稍有差別,本文以Fedora Core6為例講解),這使更改root密碼非常容易。了解當系統(tǒng)引導進入多用戶模式失敗時,如何進入單用戶模式,非常重要。

  1、在系統(tǒng)啟動過程中,會出現(xiàn)開始界面,按任意鍵,進入GRUB菜單選項。(若希望以后無此提示,直接進入GRUB菜單選項,刪除配置文件grub.conf中“hiddenmenu”項即可。)

  2、按“e”鍵編輯GRUB引導菜單選項,按“e”鍵后的GRUB屏幕。通過箭頭鍵下移到kernel行,并按“e”鍵。

  3、在尾行光標處添加single,按回車鍵返回前一個屏幕,按“b”鍵進行引導,則系統(tǒng)自動進入單用戶模式,如果要改變root密碼,則執(zhí)行命令:sh-3.1#passwd root

  更改成功后,執(zhí)行命令exit退出重啟即可。

  大家可以在單用戶模式中去糾正阻止系統(tǒng)正常啟動的很多問題,比如:

  1、禁用可能中止系統(tǒng)運行的服務如禁用Samba服務,則執(zhí)行:sh-3.1#chkconfig smb off下次系統(tǒng)引導就不會啟動Samba服務了。

  2、更改系統(tǒng)缺省運行級如果X Window無法啟動或者出現(xiàn)故障,可以編輯/etc/inittab文件,采用文本方式登錄,更改initdefault引導級別為3:id:3:initdefault:

  案例二:硬盤扇區(qū)錯亂

  在啟動過程中最容易遇到的問題就是硬盤可能有壞道或扇區(qū)錯亂(數(shù)據(jù)損壞)的情況,這種情況多由于異常斷電、不正常關(guān)機導致。

  此種問題發(fā)生,在系統(tǒng)啟動的時候,屏幕會顯示:Press root password or ctrl+D:

  此時輸入root密碼系統(tǒng)自動進入單用戶模式,輸入:fsck-y/dev/hda6

  (fsck為文件系統(tǒng)檢測修復命令,“-y”設(shè)定檢測到錯誤自動修復,/dev/hda6為發(fā)生錯誤的硬盤分區(qū),請依據(jù)具體情況更改此參數(shù))

  系統(tǒng)修復完成后,用命令“reboot”重新啟動即可。

  案例三、GRUB選項設(shè)置錯誤

  “Error 15”顯示系統(tǒng)無法找到grub.conf中指定的內(nèi)核。

  GRUB引導錯誤信息,我們觀察發(fā)現(xiàn)因為打字錯誤,內(nèi)核文件的“vmlinuz”打成了“vmlinux”,所以系統(tǒng)無法找到內(nèi)核的可執(zhí)行文件。

  我們可以按任意鍵回到GRUB編輯界面,修改此錯誤,回車保存后按“b”鍵即可正常引導,當然不要忘記進入系統(tǒng)后修改grub.conf文件中此處錯誤。

  這是很多初學Linux的用戶在修改GRUB設(shè)置時很容易犯的錯誤,出現(xiàn)此黑屏提示時注意觀察報錯信息,即可針對性修復。

  (二)GRUB引導故障排除

  我發(fā)現(xiàn)有時Linux啟動后會直接進入GRUB命令行界面(只有“grub>”提示符),此時很多用戶就選擇了重新安裝GRUB甚至重新安裝系統(tǒng)。

  其實一般而言此故障的原因最常見的有兩個:

  一是GRUB配置文件中選項設(shè)置錯誤;

  二是GRUB配置文件丟失(還有少數(shù)原因,如內(nèi)核文件或鏡像文件損壞、丟失,/boot目錄誤刪除等)

  如果是第一種情況,可以首先通過GRUB命令引導系統(tǒng)后修復;若是第二種情況,則要使用Linux救援模式修復了。

  首先,我們需要了解GRUB啟動系統(tǒng)的引導過程,grub.conf文件中主要的配置選項如下:

  (注意,GRUB配置文件為/boot/grub/grub.conf,/etc/grub.conf只是此文件的軟鏈接)

  title Fedora Core(2.6.18-1.2798.fc6)

  root(hd0,0)

  kernel/boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/rhgb quiet initrd/boot/initrd-2.6.18-1.2798.fc6.img

  其中:

  “title”段指定了GRUB引導的系統(tǒng):

  “root”段指定了/boot分區(qū)所在的位置:

  “kernel”段指定了內(nèi)核文件所在位置,內(nèi)核加載時權(quán)限屬性為只讀(“ro”)以及指定根分區(qū)所在位置(root=LABEL=/);

  “initrd”指定了鏡像文件所在位置。

  所以GRUB在引導時順序為首先加載/boot分區(qū),然后依次載入內(nèi)核與鏡像文件。

  案例

  “title Fedora Core(2.6.18-1.2798.fc6)”段被誤刪除

  此時,系統(tǒng)啟動后會自動進入“GRUB>”命令行,為排除故障我們可以依次做如下操作:

  1、查找/boot/grub/grub.conf文件所在分區(qū)GRUB>find/boot/grub/grub.conf(hd0,0)

  2、查看grub.conf文件錯誤GRUB>cat(hd0,0)/boot/grub/grub.conf建議系統(tǒng)安裝設(shè)置好后,要將grub.conf文件備份,如果有備份文件如grub.conf.bak,則此時可以查看備份文件,與當前文件比較,發(fā)現(xiàn)錯誤:GRUB>cat(hd0,0)/boot/grub/grub.conf.bak

  3、確認錯誤后,先通過命令行方式完成GRUB引導,進入系統(tǒng)后再行修復grub.conf文件錯誤:

  1)指定/boot分區(qū)root(hd0,0)

  2)指定內(nèi)核加載kernel/boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/rhgb quiet

  3)指定鏡像文件所在位置initrd/boot/initrd-2.6.18-1.2798.fc6.img

  提示:GRUB支持tab鍵命令補全功能

  4、從/boot分區(qū)啟動boot(hd0,0)

  命令行模式可以在GRUB菜單模式中通過按“c”鍵調(diào)用,也可以用于測試新編譯的內(nèi)核(設(shè)置kernel、initrd引導新內(nèi)核及鏡像文件)。增加對GRUB引導以及Linux系統(tǒng)引導知識的了解將對此類故障排除大有幫助。

  (三)Linux救援模式應用

  當系統(tǒng)連單用戶模式都無法進入時或出現(xiàn)GRUB命令行也不能解決的引導問題,我們就需要使用Linux救援模式來進行故障排除了。

  步驟如下:

  1、將Linux安裝光盤(如果使用CD光盤,則放入第一張引導光盤)放入光驅(qū),設(shè)置固件CMOS/BIOS為光盤引導,當Linux安裝畫面出現(xiàn)后,在“boot:”提示符后輸入“l(fā)inux rescue”回車進入救援模式。(想了解救援模式詳細信息,還可以按F5鍵查看)

  2、系統(tǒng)會檢測硬件,引導光盤上的Linux環(huán)境,依次提示你選擇救援模式下使用的語言(建議選擇默認的英文即可,根據(jù)筆者測試,部分Linux系統(tǒng)選擇中文會出現(xiàn)亂碼);鍵盤設(shè)置用默認的“us”就好;網(wǎng)絡(luò)設(shè)置可以根據(jù)需要,大部分故障修復不需要網(wǎng)絡(luò)連接,可不進行此項設(shè)置,選擇“No”。

  3、接下來系統(tǒng)將試圖查找根分區(qū),出現(xiàn)掛載提示,設(shè)置默認在救援模式,硬盤的根分區(qū)將掛載到光盤Linux環(huán)境的/mnt/sysimage目錄下,默認選項“continue”表示掛載權(quán)限為讀寫:“Read-only”為只讀,如果出現(xiàn)檢測失敗可以選擇“skip”跳過。此處,因為要對系統(tǒng)進行修復,所以需要有讀寫權(quán)限,一般選擇默認選項“continue”。

  進入下一步后,系統(tǒng)提示執(zhí)行“chroot/mnt/sysimage”命令,可以將根目錄掛載到我們硬盤系統(tǒng)的根目錄中去。

  案例一:雙系統(tǒng)啟動修復

  當我們安裝雙系統(tǒng)環(huán)境,先安裝Linux再安裝Windows;或者已經(jīng)安裝好雙系統(tǒng)環(huán)境的Windows損壞,在重新安裝Windows后,保存GRUB的MBR(Master Boot Record,主引導記錄)會被Windows系統(tǒng)的自舉程序NTLDR所覆蓋,造成Linux系統(tǒng)無法引導。

  1、如果要恢復雙系統(tǒng)引導,首先用上述方法進入救援模式,執(zhí)行chroot命令如下:sh-3.1# chroot/mnt/sysimage

  2、將根目錄切換到硬盤系統(tǒng)的根目錄中,然后執(zhí)行g(shù)rub-install命令重新安裝GRUB:sh-3.1# grub-install/dev/hda“/dev/hda”為硬盤名稱,如使用SCSI硬盤或Linux安裝在第二塊IDE硬盤,此項設(shè)置要做相應調(diào)整。

  3、然后依次執(zhí)行exit命令,退出chroot模式及救援模式(執(zhí)行兩次exit命令):sh-3.1# exit系統(tǒng)重啟后,將恢復GRUB引導的雙系統(tǒng)啟動。

  案例二:系統(tǒng)配置文件丟失修復

  系統(tǒng)在引導期間,很重要的一個過程就是init進程讀取其配置文件/etc/inittab,啟動系統(tǒng)基本服務程序及默認運行級別的服務程序完成系統(tǒng)引導,如果/etc/inittab誤刪除或修改錯誤,Linux將無法正常啟動。此時,只有通過救援模式才可以解決此類問題。

  /etc/inittab文件丟失引導錯誤示例

  1、有備份文件的恢復辦法進入救援模式,執(zhí)行chroot命令后,如果有此文件的備份(強烈建議系統(tǒng)中的重要數(shù)據(jù)目錄,如/etc、/boot等要進行備份),直接將備份文件拷貝回去,退出重啟即可。

  如果是配置文件修改錯誤,如比較典型的/boot/grub/grub.conf及/etc/passwd的文件修改錯誤,也可以直接修正恢復。

  假設(shè)有備份文件/etc/inittab.bak,則在救援模式下執(zhí)行:sh-3.1#chroot/mnt/sysimage sh-3.1# cp/etc/inittab.bak/etc/inittab

  2、沒有備份文件的恢復辦法如果一些配置文件丟失或軟件誤刪除,且無備份,可以通過重新安裝軟件包來恢復。

  首先查找到/etc/inittab屬于哪一個RPM包(即便文件丟失,因為存在RPM數(shù)據(jù)庫,一樣可以查找到結(jié)果):

  sh-3.1#chroot/mnt/sysimage sh-3.1#rpm-qf/etc/inittab initscripts-8.45.3-1

  退出chroot模式:

  sh-3.1#exit

  掛載存放RPM包的安裝光盤(在救援模式下,光盤通常掛載在/mnt/source目錄下):

  sh-3.1#mount/dev/hdc/mnt/source

  Fedora系統(tǒng)的RPM包存放在光盤Fedora/RPMS目錄下,其他Linux存放位置大同小異,我在這里不一一列舉;

  另外,因為要修復的硬盤系統(tǒng)的根目錄在/mnt/sysimage下,需要使用——root選項指定其位置。

  覆蓋安裝/etc/inittab文件所在的RPM包:

  sh-3.1#rpm-ivh——replacepkgs——root/mnt/sysimage/mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm

  其中的rpm命令選項“——replacepkgs”表示覆蓋安裝,執(zhí)行完成后,即已經(jīng)恢復了此文件。

  如果想只提取RPM包中的/etc/inittab文件進行恢復,可以在進入救援模式后,執(zhí)行命令:

  sh-3.1#rpm2cpio/mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm|cpio-idv ./etc/inittab sh-3.1#cp etc/inittab/mnt/sysimage/etc

  注意此命令執(zhí)行時不能將文件直接恢復至/etc目錄,只能提取到當前目錄下,且恢復的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功后,將其復制到根分區(qū)所在的/mnt/sysimage目錄下相應位置即可。

  救援模式是維護Linux的有力武器,本文以上述兩個例子講解了它的應用方法,希望能夠給讀者一點啟示。解決Linux系統(tǒng)啟動的故障,必須充分理解Linux的引導過程,才能夠?qū)收线M行有效的判斷和處理。

  擴展:使用Linux系統(tǒng)常見的問題

  1、在不登錄情況下,獲得root權(quán)限

  如果沒有設(shè)置GRUB密碼,那我們可以使用最簡單的方法,首先啟動電腦,等待GRUB菜單,如果GRUB菜單隱藏,可以按Esc調(diào)出,選擇Ubuntu,kernel 2.6.12-*-*(recovery mode),也就是“恢復模式”按Enter啟動就可以了。

  另外一個辦法是用Ubuntu安裝盤獲得root權(quán)限,用Ubuntu安裝盤啟動電腦,當顯示“boot:”時,輸入“rescue”

  boot:rescue

  按屏幕提示操作就可以了。

  2、通過改變內(nèi)核啟動參數(shù)獲得根權(quán)限

  啟動電腦,等待GRUB菜單,如果GRUB菜單隱藏,可以按Esc調(diào)出,如果設(shè)置了GRUB密碼,按p來解鎖,比如我們選擇了Ubuntu,kernel 2.6.12-8-386,按e在啟動前編輯啟動參數(shù),選擇kernel/boot/vmlinuz-2.6.12-8-386 root=/dev/hda 2ro quiet splash,按e編輯選定的啟動菜單項,在參數(shù)最后添加rw init=/bin/bash,即改為如下命令行:

  grub edit>kernel/boot/vmlinuz-2.6.12-8-386 root=/dev/hda2 ro quiet splash rw init=/bin/bash

  按b啟動即可。

  3、忘記了root用戶/主用戶密碼

  按照第一項:在不登錄情況下,獲得root權(quán)限后,在命令行輸入:

  passwd root

  按照提示,輸入兩次密碼就可以設(shè)定root用戶密碼了,

  要更改主用戶密碼:

  passwd system_main_username

  按照提示,輸入兩次密碼就可以了。

  4、忘記了GRUB菜單密碼

  在命令行輸入

  grub

  等提示符變?yōu)間rub>后,輸入:

  md5crypt

  這是計算密碼的md5值,也就是加密值,然后在提示Password:后,輸入新密碼:

  Password:******(ubuntu)

  系統(tǒng)會計算出加密值:

  Encrypted:$1$ZWnke0$1fzDBVjUcT1Mpdd4u/T961

  按quit退出,

  quit

  然后備份并編輯文件menu.lst:

  sudo cp/boot/grub/menu.lst/boot/grub/menu.lst_backup

  sudo gedit/boot/grub/menu.lst

  找到

  ...

  password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/

  ...

  替換為

  password --md5 $1$ZWnke0$1fzDBVjUcT1Mpdd4u/T961(這是我們上面計算出的加密值)

  保存文件即可。

  5、在安裝Windows后恢復GRUB啟動菜單

  經(jīng)常出現(xiàn)的情況是,我們想重裝一下windows系統(tǒng),但是重裝會把啟動Linux的菜單沖掉,這是個讓人頭疼的問題,我們這樣來解決它:

  首先按照第一項,用Ubuntu安裝盤獲得root權(quán)限,我們假定/dev/hda為/boot所在分區(qū),然后在提示符輸入:

  #grub-install/dev/hda

  這樣grub-install程序會為我們安裝grub菜單。

  6、在Windows中讀取Linux分區(qū)(ext2,ext3)

  我們用軟件Ext2fs可以在Windows中讀取Linux分區(qū),軟件官方首頁:http://www.fs-driver.org/,下載地址是:http://www.fs-driver.org/download/Ext2IFS_1_10b.exe程序

  7、開機時,某些服務啟動太慢

  比如Configuring network interfaces...和Synchronizing clock to ntp.ubuntulinux.org...可能要長時間才能啟動,對于這些服務,我們可以用Ctrl+C在啟動時暫時跳過一些服務的啟動

  也可以運行服務設(shè)置:系統(tǒng)->系統(tǒng)管理->服務,清除勾選“時鐘同步服務(ntpdate)”等服務,然后 確定。

  8、把系統(tǒng)時間從UTC(GMT)改回來

  如果你裝linux系統(tǒng)時,設(shè)置啟用UTC(GMT),那么每當重啟到了我的windws分區(qū),系統(tǒng)時間總是和本地時間有N小時的誤差。在Ubuntu下我這樣解決這個問題呢。

  編輯文件/etc/default/rcS,在命令行輸入:

  sudo cp/etc/default/rcS/etc/default/rcS_backup

  sudo gedit/etc/default/rcS

  找到

  ...

  UTC=yes

  ...

  替換為

  UTC=no

  保存文件,在系統(tǒng)->系統(tǒng)管理->日期和時間中,設(shè)置為正確的日期和時間,

  在命令行輸入下面的命令重啟時間:

  sudo/etc/init.d/hwclock.sh restart

  9、給Flash配置聲音

  如果你播放Flash是沒有聲音,在命令行輸入這個命令:

  sudo ln -fs/usr/lib/libesd.so.0/usr/lib/libesd.so.1

  10、強制清空回收站

  如果你點了清空回收站,但還是有垃圾的話,你可以運行這個命令:

  sudo rm -fr $HOME/.Trash/

  Ubuntu Linux的回收站就是一個隱藏文件夾,在主目錄的.Trash/下,rm-fr命令的意思是強制、遞歸的刪除。

  11、清除GNOME菜單中的重復項

  如果菜單中出現(xiàn)重復項,不能像windows里一樣,直接刪去,我們要啟動Applications Menu Editor:應用程序->系統(tǒng)工具->Applications Menu Editor,逐個刪除重復項即可

【Linux系統(tǒng)故障排查和解決方法】相關(guān)文章:

Linux 系統(tǒng)故障排查和修復技巧10-01

Linux中ftp連接530錯誤的解決方法07-31

linux中pagbuffer和cache的區(qū)別06-13

Unix和Linux有什么區(qū)別07-24

Linux系統(tǒng)是怎么辨別gmtime和localtime06-20

Linux安裝和使用Glances的方法介紹10-28

Linux格式化硬盤的方法和步驟09-10

Oracle、Linux和CentOS安裝配置步驟10-10

怎樣創(chuàng)建Linux靜態(tài)庫和動態(tài)庫10-24

Linux和Windows操作系統(tǒng)遠程互訪的方法05-13