歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux啟動極端排錯實例

Linux啟動極端排錯實例

日期:2017/2/27 16:05:33   编辑:Linux教程
系統因為各種原因啟動不了了,此時很多朋友想到的第一個辦法就是重裝系統,但是這如果是在大型企業中是絕對不允許的。所以我們為了適應時代潮流,還是選擇排錯這條路吧。重啟電腦後,在bios中選擇以cd-rom模式進入,如圖(1),(當然你如果建立了網絡系統,也可以從網絡啟動,並且筆者覺得網絡啟動比cd-rom的效率還要高些) (1
放入光碟後,會出現如圖(2)的界面,此時不要習慣性的輸入回車了(畢竟這樣就沒有技術含量了),輸入linux resuce(修復模式),然後再按回車。
(2
系統會自動加載光驅(或網絡)的內容,然後出現以下圖(3)的畫面,這裡是要你選擇使用哪種語言,筆者習慣使用英文版本的linux,如果你不大習慣可以用鍵盤上的上下箭頭來選擇合適自己的語言種類。然後用tab鍵將光標移動到ok按鈕上,敲回車。
(3
來到圖 (4)的畫面,這裡是要你選擇鍵盤的種類,一般情況下,我們使用的是美式鍵盤,如果你的鍵盤是其他類型的,請根據自己的需要選擇。用tab鍵盤選擇ok可以進入下一步操作,如果前面語言的設置有誤,可以選擇back回到上一步。這裡我們選擇ok。
圖 (4) 出現了如圖 (5)的畫面,這裡是問我們需不需要網絡環境,由於我們使用的是光盤修復所以可以選擇no,當然如果你使用的是網絡修復,當然要將ip地址和nfs服務器的地址填寫好了。我們這裡選擇no進入下一步。
(5 好了復雜的東西來了,圖 (6)顯示了一大串的英文,意思是說:修復環境會嘗試將你的linux系統掛載到/mnt/sysimage目錄下,然後你就可以對你的系統進行問題的修復,如果你想這樣,選擇continue,如果你想在只讀模式下這樣選擇read-only,如果你因為某些原因不想這樣,選擇skip直接進入命令行。在此我們當然選擇continue繼續。

(6
來到圖 (7),如果是一般的小問題,你看到的應該是圖 (8)的提示,但是在此由於我們模擬的是極端的錯誤,所以出現圖(7)的提示,意思是說無法將你的系統掛載到/mnt/sysimage這個目錄下。而圖 (8)的意思是說已經將系統掛載到/mnt/sysimage上。這裡我們不管它會出現那種提示,先ok了再說。
(7


(8 來到圖 (9)的界面,
(9 使用chroot /mnt/sysimage命令設法將系統掛載到/mnt/sysimage下,如圖(10),發現有錯誤信息,這與剛才圖(7)的提示相吻合,這是因為根本就找不到系統的根分區。如果能夠找到,即出現圖(8)的提示,是可以使用chroot命令的。
圖(10
此時我們先如圖(11),使用mkdir test建立一個test目錄,然後使用e2label /dev/sda1, e2label /dev/sda2······一個個試著找出根(/)所對應的分區,在圖中可以看到/dev/sda3所對應的分區為根分區(/) (11
接下來,我們將/dev/sda3所對應的根(/)分區使用mount命令掛載到剛剛建立的test目錄下。如圖(12)所示,命令為mount /dev/sda3 test。此時我們實際上是將根分區掛到了test目錄下。cd test進入 test目錄下,然後再cd etc進入etc目錄下,用ls命令會發現所有以前的配置文件都在這裡了。 (12
首先我們用vi編輯器來看看fstab這個文件吧輸入vi fstab,如圖(13),一般情況下分區找不到都是這裡出了問題,打開一看嚇了一跳,完全沒有根分區的內容,並且前面用e2label查看的/dev/sda1是對應的/boot,而這裡的LABEL=/boot (即/dev/sda1)對應的卻是/boot1。錯得太多了啊, (13
將fstab裡的內容修改為正確的形式如圖(14)。加入了根分區的信息/dev/sda3 / ext3 defaults 1 2,並且將boot分區的信息也改成正確的。查看無誤後保存編輯結果。此時先別慌重新啟動電腦,再去查看一下inittab文件看看 (14
同樣用vi打開inittab,如圖(15),發現在system initialization中運行級別4和5調用了相同的文件目錄rc 5,這樣顯然是不行的,所以將其改為正確的,如圖(16) (15
(16
基本上做到這一步前期工作就做完了,如果你的電腦不是像我這樣比較變態的錯誤,應該可以正常啟動了,但是由於我們這裡是教學,所以肯定不會那麼簡單。重新啟動之後,還是進入不了系統,無奈之下只好再次進入修復模式,這次發現到最後出現了圖(8)的信息,並且進入以後使用chroot /mnt/sysimage並沒有顯示任何報錯信息,也就是說已經可以將系統掛到/mnt/sysimage下了。如圖(17) (17
那麼出現問題的地方很大程度上就是在引導這一塊了,使用cd /boot查看boot目錄下的內容,好象並沒有缺少什麼,再看一下/boot/grub/目錄下,發現少了grub.conf這個文件,如圖(18)。在這裡其實我們可以直接用vi編輯器寫入grub.conf的內容就可以正常啟動了。但是並不是每個人都能看出少了什麼東西,為了安全起見,我們干脆把boot目錄下的全部文件都刪除掉,然後重新生成。(如果這裡你能夠准確的判斷只有grub.conf的問題,那麼你就可以直接看文章最後的編輯grub.conf文件了) (18
如圖19,進入boot目錄下,使用rm –rf * 命令,將boot目錄中所有文件刪除,查看目錄中沒有任何文件時,使用exit退出/mnt/sysimage模式。(注意,我們剛才使用了chroot /mnt/sysimage進入了掛載模式,此時只需要輸入一次exit就可以退出chroot掛載模式,如果連續輸入兩個exit,則系統會自動重新啟動。) (19
由於我們的內核是在cdrom中的,所以在退出了chroot模式之後,使用mkdir cdrom建立一個cdrom的掛載點,並使用mount /dev/hdc cdrom將cdrom所對應的設備掛載到這個掛載點上(筆者這裡cdrom所對應的設備為/dev/hdc,根據你cdrom在電腦中的接線,後面的hdc可能會有所不同),如圖(20) (20
掛載完後,就可以使用cd cdrom命令進入cdrom了,用ls命令查看,發現光碟的內容全部都顯示在了屏幕上,如圖(21),然後再次使用cd Server命令進入/cdrom/Server文件夾下,如圖(22),實際上在這個文件夾下,就存放著我們內核的安裝文件。 圖(21
圖(22

使用rpm –ivh kernel-2.6.18-8.el5.i686.rpm –root=/mnt/sysimage/ --force命令將內核重新裝到系統中(在這裡有系統自動補全的功能,所以不要怕忘記了內核的版本)。安裝完成後,使用chroot /mnt/sysimage/命令再次將系統掛載到/mnt/sysimage目錄下,然後使用grub-install /dev/sda將grub安裝到MBR上,如圖(23)

圖(23
實際上到了這裡,要做的就是前面說的重寫grub.conf的內容了,我們來到boot目錄下,使用ls > /boot/grub/grub.conf命令將在boot下的文件名稱定向到grub.conf文件當中,這樣做是為了讓編寫grub.conf文件顯得更輕松,如圖(24)當然如果你能把內核的版本名稱都背下來,那是你牛叉,當然就不用這種方法了,我真見過有不少人把grub.conf裡的內容一字不差的背下來的,但是我記憶不好,沒有辦法。
圖(24 完成後我們用vi編輯器打開/boot/grub/grub.conf文件,如圖(25),將其他的文字都刪掉,只留下initrd和vmlinuz開頭的兩個文件名,並將vmlinuz開頭的文件名字放在上面。
圖(25
最後編輯完成的文件如圖(26),其中default=0 為默認啟動選項必須寫,timeout =10為記時,可以不要,title xtjlql為開機畫面中給你選擇系統的菜單,必須要,如果這裡沒有寫將無法引導系統。後面的均為系統啟動必須選項,詳情可以查看網絡上關於grub.conf的文章,或鳥哥的私房菜,在這裡就不贅述了。編輯完成後就可以重新啟動計算機了。
圖(26
最後來一張全OK圖,是不是很精彩,為自己鼓掌吧。
總結:關於系統啟動實際上最常見的問題就是出在/etc/fstab,/etc/inittab和/boot下的,只要對這些文件目錄比較了解了,一般的啟動問題解決起來是非常方便的。至於為什麼是這些文件或文件夾,以及啟動還包含有哪些內容
Copyright © Linux教程網 All Rights Reserved