大家好仿贬,我給大家介紹一下纽竣,這是我的Linux故障排查思路

國慶和中秋放假回來后,相信或多或少你的Linux服務(wù)器都會遇到一些問題茧泪,為了幫助大家回來后在遇到問題時找到合適的解題思路蜓氨,特地給大家找到了一個Linux運(yùn)維工程師發(fā)現(xiàn)故障和處理故障的反思,希望能給大家一些方向性的引導(dǎo)队伟。

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

(一)單用戶模式

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

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

案例一叫乌、root密碼忘記

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

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

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

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

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

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

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

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

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

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

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

Press root password or ctrl+D:

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

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)赞庶,當(dāng)然不要忘記進(jìn)入系統(tǒng)后修改grub.conf文件中此處錯誤。

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

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

我發(fā)現(xiàn)有時Linux啟動后會直接進(jìn)入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)啟動后會自動進(jìn)入“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昔期,則此時可以查看備份文件已卸,與當(dāng)前文件比較,發(fā)現(xiàn)錯誤:GRUB>cat (hd0硼一,0)/boot/grub/grub.conf.bak

3累澡、確認(rèn)錯誤后,先通過命令行方式完成GRUB引導(dǎo)般贼,進(jìn)入系統(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鍵命令補(bǔ)全功能

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)用

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

步驟如下:

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

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

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

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

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

當(dāng)我們安裝雙系統(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),首先用上述方法進(jìn)入救援模式枯途,執(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進(jìn)程讀取其配置文件/etc/inittab,啟動系統(tǒng)基本服務(wù)程序及默認(rèn)運(yùn)行級別的服務(wù)程序完成系統(tǒng)引導(dǎo)燎竖,如果/etc/inittab誤刪除或修改錯誤璃弄,Linux將無法正常啟動。此時构回,只有通過救援模式才可以解決此類問題夏块。

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

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

如果是配置文件修改錯誤歇由,如比較典型的/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文件進(jìn)行恢復(fù)遮怜,可以在進(jìn)入救援模式后,執(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目錄鸿市,只能提取到當(dāng)前目錄下锯梁,且恢復(fù)的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功后焰情,將其復(fù)制到根分區(qū)所在的/mnt/sysimage目錄下相應(yīng)位置即可陌凳。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耕蝉,隨后出現(xiàn)的幾起案子崔梗,更是在濱河造成了極大的恐慌,老刑警劉巖垒在,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒜魄,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谈为,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門旅挤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人峦阁,你說我怎么就攤上這事谦铃≡懦桑” “怎么了榔昔?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘪菌。 經(jīng)常有香客問我撒会,道長,這世上最難降的妖魔是什么师妙? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任诵肛,我火速辦了婚禮,結(jié)果婚禮上默穴,老公的妹妹穿的比我還像新娘怔檩。我一直安慰自己,他們只是感情好蓄诽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布薛训。 她就那樣靜靜地躺著,像睡著了一般仑氛。 火紅的嫁衣襯著肌膚如雪乙埃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天锯岖,我揣著相機(jī)與錄音介袜,去河邊找鬼。 笑死出吹,一個胖子當(dāng)著我的面吹牛遇伞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捶牢,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鸠珠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叫确?” 一聲冷哼從身側(cè)響起跳芳,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竹勉,沒想到半個月后飞盆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年吓歇,在試婚紗的時候發(fā)現(xiàn)自己被綠了孽水。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡城看,死狀恐怖女气,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情测柠,我是刑警寧澤炼鞠,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站轰胁,受9級特大地震影響谒主,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赃阀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一霎肯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榛斯,春花似錦观游、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至意述,卻和暖如春提佣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荤崇。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工拌屏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人术荤。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓倚喂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓣戚。 傳聞我的和親對象是個殘疾皇子端圈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容