1. 程式人生 > >馬哥學習----李洋個人筆記---啟動故障排除

馬哥學習----李洋個人筆記---啟動故障排除

sysinit 自動掛載 正常 準備 之前 linux目錄 文件系統 ext 註意

模擬故障1 刪除/boot之後的恢復步驟: 1 重啟電源,迅速按esc進去選擇啟動模式,然後選cd-rom這項(從光驅啟動) 2 重啟後進入救援模式(選擇rescue),選擇語言和鍵盤布局後,一路回車到下一步。 3 詢問是否需要網絡選項,一般來說,救援模式不需要網絡,選擇no,回車進入下一步。 4 這一步提示內容大意為:救援系統將嘗試尋找你的linux安裝,並在目錄 mnt/sysimage下安裝它,然後就可以對系統進行任何更改.也可以選擇只讀的方式來裝載文件,如果需要激活高級san設備,選擇高級.(一般不會用只讀方式來掛載文件) 如果由於某種原因這個過程失敗了,可以選擇skip,這個步驟就會被跳過,直接進入到命令shell.下面的四個選擇,分別是 continue==繼續 read-only==只讀 skip==跳過這個步驟 advanced==高級 這裏我們選擇continue.然後下一步. 5 一路回車到這一步,選擇第一個進入shell. 6 在shell命令模式下,首先要敲命令 # chroot /mnt/sysimage 這樣是將救援模式的根,轉移到真正的根目錄下,不加入這一個命令,所有對根的操作,實際上是對救援模式跟的操作. 可以使用df來驗證下,是否是自己的根.如果不是自己的跟,硬盤路徑上顯示有 /mnt/sysimage這個目錄,代表沒在自己的根上。而是在救援模式的根上。 7 在/boot下 執行命令 # grub-install /dev/sda 創建grub掛載點。創建成功後,我們瀏覽下grub目錄當中內容。可以看出當中缺少了grub.conf文件,我們稍後再手動編輯,先恢復內核。 8 接下來掛載光驅,準備復制boot當中的內核文件。 掛載命令:# ``mount /dev/cdrom /media 使用命令: cd /media 到光盤中,尋找到isolinux目錄。將目錄當中的vmlinux復制到/boot下.內核文件恢復完畢. 9 恢復啟動時候需要的grub及initrd文件使用命令mkinitrd在/boot下創建initrd文件.命令如下: # mkinitrd /boot/initramfs-$(uname -r).img vmlinuz 創建成功後,會在boot下生成以當前內核版本號為名字的.img文件 使用vim來編輯目錄/boot/grub下的grub.conf文件,內容如下: default =0 timeout=5 title redhat root(hd0,0) kernel= /vmlinuz(註意,這裏的名字取決於你復制過來的內核名字,不是固定格式)空格 ro root=uuid=(掛載根的那個硬盤的kid號,命令blkid可以查看得到) rhgb quict initrd= /initramfs=(用mkinitrd生成的.img文件) 其中,uuid硬盤ID號,是在命令模式下輸入 :.! blkid |grep /dev/sd2 來實現的。通過之前的df命令可以看出根目錄是掛載sd2分區上的,所以使用blkid命令來取出sd2的uuid號。 10 以上步驟完成後,先輸入exit退出救援,再輸入reboot重啟,成功恢復。 模擬故障2:刪除/etc/fstab,刪除/etc/init/rcS.conf,刪除/etc/rc.d/rc.sysinit,刪除/boot下的所有文件,然後恢復正常。 進入救援模式(過程同上) 可以看到沒有任何掛載,但是使用fdisk –l 可以看出當前硬盤分區情況。 做一個簡單的判斷,只有類型編號為83的才有可能是掛載跟的分區,所以排除編號不是83的和swap後,剩余下的也不多了,一個一個嘗試掛載也能區分出來了。 手動掛載:執行命令mount /dev/sda2 /mnt/sysimage後,我們再使用cd / 並ls看一下,如果有跟內容就代表掛載正確。為了達到自動掛載的效果,我們先恢復fstab文件.(:現在我們還是在救援模式的根下,別忘了切換根,可以用df命令來驗證下)然後將根切換自己的根上.使用 vim /etc/fstab 命令來編輯分區配置文件,但是這時候我們缺失了很多信息,無法使用blkid來獲取分區的ID號,所以還需要退出去,在救援模式下,使用blkid將分區id號導入到/etc/fstab當中. 首先回到救援模式 # exit 接下來是導入:blkid >> (/mnt/sysimage/etc/fstab),括號部分很重要,因為我們現在還是救援模式的根上,必須加上才有效。 # vim /etc/fstab 之後,可以看到: 已經有了分區的id號,手動編輯下,變為: uuid=分區id號 /掛載位置 文件系統類型 defaults # # 的形式 比如: UUID=bd127449-c4cc-4a56-8f94-e44ceca55970 / ext4 defaults 1 1 上面的 / 代表根在這個盤上掛著 編輯保存後,回到救援模式,重啟,讓系統自動識別分區. 重啟後,再次進入救援模式,使用df命令來查看,已經能看到分區信息了。 接下來恢復/boot,首先切換根 # chroot /mnt/sysimage 然後在/boot下,創建grub. # grub-install /dev/sda,其余步驟同上個了,不再寫了。 另外吐槽下 博客裏面不讓粘貼圖片真的煩!!!! 修復過程中可能出現的問題: 1 在使用mkinitrd /boot/initramfs-$(uname -r).img vmlinuz命令的時候,會提示沒有發現這個文件或目錄的情況。然後配置完後,重啟會提示已被禁用cpu的提示。我們可以去提示的目錄中查看:命令 cd /lib/modules,進去後發現只有當前版本號的文件,問題就出在這裏了. 如上圖所示,將內核名字改為當前版本號$(uname -r)後,就可以使用 # mkinitrd /boot/initramfs-$(uname -r).img $(uname –r) 這樣就成功了。 然後配置grub.conf時候,配置為下圖, 紅線圈起來的部分,一定要和/boot下面,以及/lib/modules/下面的內核名字一致,否則會報錯。

馬哥學習----李洋個人筆記---啟動故障排除