0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解決Linux系統(tǒng)故障排查和修復(fù)技巧的3種方法解析與案例分享

Linux愛好者 ? 2018-01-23 17:58 ? 次閱讀

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

(一)單用戶模式

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

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

案例一:root密碼忘記

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

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

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

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

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

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

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

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

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

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

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

Press root password or ctrl+D:

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

fsck -y /dev/hda6

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

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

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

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

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

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

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

(二)GRUB引導(dǎo)故障排除

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

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

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

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

如果是第一種情況,可以首先通過GRUB命令引導(dǎo)系統(tǒng)后修復(fù);若是第二種情況,則要使用Linux救援模式修復(fù)了(本文后續(xù)有描述)。

首先,我們需要了解GRUB啟動系統(tǒng)的引導(dǎo)過程,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引導(dǎo)的系統(tǒng):

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

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

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

所以GRUB在引導(dǎo)時順序為首先加載/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引導(dǎo),進入系統(tǒng)后再行修復(fù)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引導(dǎo)新內(nèi)核及鏡像文件)。增加對GRUB引導(dǎo)以及Linux系統(tǒng)引導(dǎo)知識的了解將對此類故障排除大有幫助。

(三)Linux救援模式應(yīng)用

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

步驟如下:

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

2、系統(tǒng)會檢測硬件,引導(dǎo)光盤上的Linux環(huán)境,依次提示你選擇救援模式下使用的語言(建議選擇默認的英文即可,根據(jù)筆者測試,部分Linux系統(tǒng)選擇中文會出現(xiàn)亂碼);鍵盤設(shè)置用默認的“us”就好;網(wǎng)絡(luò)設(shè)置可以根據(jù)需要,大部分故障修復(fù)不需要網(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)進行修復(fù),所以需要有讀寫權(quán)限,一般選擇默認選項“continue”。

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

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

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

1、如果要恢復(fù)雙系統(tǒng)引導(dǎo),首先用上述方法進入救援模式,執(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è)置要做相應(yīng)調(diào)整。

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

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

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

/etc/inittab文件丟失引導(dǎo)錯誤示例

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

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

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

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

首先查找到/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存放位置大同小異,我在這里不一一列舉;

另外,因為要修復(fù)的硬盤系統(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)恢復(fù)了此文件。

如果想只提取RPM包中的/etc/inittab文件進行恢復(fù),可以在進入救援模式后,執(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í)行時不能將文件直接恢復(fù)至/etc目錄,只能提取到當前目錄下,且恢復(fù)的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功后,將其復(fù)制到根分區(qū)所在的/mnt/sysimage目錄下相應(yīng)位置即可。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11125

    瀏覽量

    207937

原文標題:Linux 系統(tǒng)故障排查和修復(fù)技巧

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux編程時遇到Oops提示該如何排查?

    各位工程師在Linux下開發(fā)程序時,有沒有遇到由于系統(tǒng)中存在某些小故障而跳出了“Oops”提示的情況,此時你是如何排查故障?一行行的查看代碼
    的頭像 發(fā)表于 11-28 16:52 ?8942次閱讀
    <b class='flag-5'>Linux</b>編程時遇到Oops提示該如何<b class='flag-5'>排查</b>?

    Linux診斷系統(tǒng)故障命令dmesg詳解

    本文講解診斷系統(tǒng)故障命令dmesg。
    發(fā)表于 07-02 10:03 ?6847次閱讀

    直流系統(tǒng)接地系統(tǒng)故障排除方法

    的情況和經(jīng)驗所得,大致有以下幾種方法。1、拉路法:這是電力系統(tǒng)查直流接地故障一直沿用的一個簡單辦法。首先分清接地故障的極性,分析故障發(fā)生的原
    發(fā)表于 10-31 16:44

    Linux和Android系統(tǒng)故障和優(yōu)化性能的方法和流程探討

    的優(yōu)化變得異常復(fù)雜,如何定位性能問題出在哪個方面,是性能優(yōu)化的一大難題, 從系統(tǒng)入手,闡述由于系統(tǒng)軟、硬件配置不當可能造成的性能問題,并且探討檢測系統(tǒng)故障和優(yōu)化性能的一般方法和流程。一
    發(fā)表于 07-22 06:48

    寶馬DSC系統(tǒng)故障的原因是什么?怎么解決?

    DSC系統(tǒng)故障是寶馬車主比較常見的一種系統(tǒng)故障,不過很多車主都不懂到底什么是DSC,所以開頭先給大家簡單介紹一下:DSC是Dynamic Stability Control的縮寫,也就是動態(tài)穩(wěn)定
    發(fā)表于 08-30 06:55

    數(shù)控系統(tǒng)故障診斷方法解析

     當數(shù)控系統(tǒng)故障發(fā)生后,如何迅速診斷的故障出處并解決問題使其恢復(fù)正常,是提高數(shù)控設(shè)備使用率的迫切需要。 數(shù)控機床
    發(fā)表于 06-25 17:15 ?1351次閱讀

    PLC控制系統(tǒng)故障檢測的步驟和方法

    由于PLC控制系統(tǒng)是由多種設(shè)備、裝置等元器件組成的一個整體,因此,要想做好整個系統(tǒng)的安全防范工作,只有首先要明確控制系統(tǒng)故障檢測的步驟,才能嚴格排查各種潛在的危險因素。
    的頭像 發(fā)表于 11-24 17:48 ?1.4w次閱讀

    基于維護“螺絲刀”的2種方法解析

    基于維護“螺絲刀”的2種方法解析。
    的頭像 發(fā)表于 02-05 17:20 ?5135次閱讀
    基于維護“螺絲刀”的2<b class='flag-5'>種方法</b><b class='flag-5'>解析</b>

    擴聲系統(tǒng)故障檢修有哪些要求_擴聲系統(tǒng)故障檢修方法

    本文首先介紹了擴聲系統(tǒng)常見十七大故障及解決方法,其次介紹了擴聲系統(tǒng)故障檢修要求,最后介紹了擴聲系統(tǒng)故障檢修的
    的頭像 發(fā)表于 05-24 16:55 ?5135次閱讀
    擴聲<b class='flag-5'>系統(tǒng)故障</b>檢修有哪些要求_擴聲<b class='flag-5'>系統(tǒng)故障</b>檢修<b class='flag-5'>方法</b>

    數(shù)控系統(tǒng)常見的故障診斷與維修方法有哪些

    本文首先介紹了數(shù)控系統(tǒng)的常見故障,其次介紹了數(shù)控系統(tǒng)常見故障及造成原因,最后介紹了數(shù)控系統(tǒng)故障診斷常用的8
    發(fā)表于 11-04 10:23 ?9361次閱讀

    PLC系統(tǒng)故障排查方法是什么

    一般來說,plc是一非??煽康脑O(shè)備,故障率很低。然而,一旦其系統(tǒng)出現(xiàn)故障,就很難檢查和處理。PLC系統(tǒng)故障排除的總體思路 1.硬件損壞或軟
    發(fā)表于 12-13 14:08 ?1058次閱讀

    修復(fù)win10、Linux系統(tǒng)無法啟動的故障

    修復(fù)win10、Linux系統(tǒng)無法啟動的故障方法步驟。
    發(fā)表于 05-10 17:55 ?0次下載

    Linux服務(wù)器常見的網(wǎng)絡(luò)故障排查方法

    日常工作中我們有時會遇到服務(wù)器網(wǎng)絡(luò)不通問題,導(dǎo)致服務(wù)器無法正常運行。要想解決服務(wù)器網(wǎng)絡(luò)故障問題,通常要先進行網(wǎng)絡(luò)故障排查,這里以Linux服務(wù)器為例來看下常用的網(wǎng)絡(luò)
    的頭像 發(fā)表于 04-14 15:47 ?2634次閱讀

    修復(fù)鋰電池的三種方法

    電子發(fā)燒友網(wǎng)站提供《修復(fù)鋰電池的三種方法.doc》資料免費下載
    發(fā)表于 11-15 10:40 ?5次下載
    <b class='flag-5'>修復(fù)</b>鋰電池的三<b class='flag-5'>種方法</b>

    linux網(wǎng)絡(luò)配置的3種方法

    Linux是一流行的操作系統(tǒng),廣泛應(yīng)用于服務(wù)器和網(wǎng)絡(luò)設(shè)備中。Linux系統(tǒng)提供了多種方法來配置
    的頭像 發(fā)表于 11-27 14:33 ?3829次閱讀