linux初學者-系統啟動故障篇
linux初學者-系統啟動故障篇
在系統的操作中,有時會不小心誤刪或者操作失誤使得系統啟動不起來,下文將列舉幾種常見的系統啟動失敗的情況及解決的辦法。
1、刪除或者覆蓋mbr的446個字節
mbr的446個字節指定了系統啟動時/boot分區在磁盤中的為至,所以mbr這446個字節如果被刪除或者被覆蓋,就會導致系統找不到/boot分區而開不了機。
例如下圖,用"dd if=/dev/zero of=/dev/vda bs=446 count=1"覆蓋掉前446個字節。重啟系統發現無法啟動。
這種情況的解決方法是:
a、需要一個帶有系統鏡像的光盤。並且從光盤中啟動。
b、啟動後選擇其中的"Troubleshooting"。
c、選擇"Rescue a Red Hat Enterprise Linux System"。
d、輸入"1",並按下回車鍵。
e、輸入"chroot /mnt/sysimages",進入真實的/boot。
f、輸入"grub2-install /dev/vda",等待安裝完成,且提示"Noerror reported"。
上述操作完成後,輸入兩次"exit"。切換回從硬盤啟動。即可解決這個問題。
2、刪除啟動的引導文件"grub.cfg"
"/boot/grub.cfg"是系統啟動的引導文件,如下圖,如果刪除這個文件,系統啟動後將進入如下界面。
這種問題在解決時需要知道自己的/分區和boot分區分別在哪個分區裏,本機的/分區在vda3分區下,boot分區在vda1分區下。解決步驟如下:
a、輸入"set root=‘hd0,msdos1‘"。按回車鍵。"msdos1"代表boot分區的位置。
b、輸入"linux16 /vmlinuz-3.10.0-327.e17.x86_64 ro root=/dev/vda3"。按回車鍵。"/dev/vda3"為/分區的位置。
c、輸入"initrd16 /initramfs-3.10.0-327.el7.x86_64.img"。按回車鍵。
d、輸入"boot"。按回車鍵。
完成上述步驟後,系統就可以啟動了,但是啟動後還是沒有刪除的"grub.cfg"文件。下次一樣無法正常啟動,需要輸入命令"grub2-mkconfig > /boot/grub2/grub.cfg"來恢復這個啟動引導文件。
3、刪除啟動硬件設備文件
如果刪除/boot下的啟動硬件設備,如"vmlinuz-3.10.0-327.e17.x86_64",系統將無法啟動,如下圖所示。開啟啟動失敗,並且提示缺少文件"vmlinuz-3.10.0-327.e17.x86_64"。
此時的解決辦法是將鏡像中的軟件包拆解,恢復這個文件,具體步驟為:
a、通過光盤鏡像啟動。選擇"Troubleshooting",選擇"Rescue a Red Hat Enterprise Linux System",輸入"1",按下回車鍵。
b、輸入"df"可以看到光盤"/dev/sr0"掛載在"/run/install/repo"下。
c、輸入"cd /mnt/sysimage//mnt",並且輸入"rpm2cpio /run/install/repo/Packages/kernel-3.10.0-327.e17.x86_64.rpm | cpio -id",拆解"kernel-3.10.0-327.e17.x86_64.rpm"這個安裝包。完成後可以看到有boot目錄,且其中有之前刪除的"vmlinuz-3.10.0-327.e17.x86_64"文件。
d、輸入"mv vmlinuz-3.10.0-327.e17.x86_64 /mnt/sysimages//boot"。
將這個文件恢復後,輸入"exit",且設置從硬盤啟動。系統就可以正常啟動了。
4、刪除系統初始化文件
如果刪除/boot目錄下系統的初始化文件,如"initramfs-3.10.0-327.el7.x86_64.img",系統無法正常啟動且提示少了該文件,如下圖所示。
此時的解決辦法為:
a、從光盤鏡像啟動。選擇"Troubleshooting",選擇"Rescue a Red Hat Enterprise Linux System",輸入"1",按下回車鍵。
b、輸入"chroot /mnt/sysimages",進入真實"/boot"。
c、輸入"mkinitrd /boot/initramfs-$(uname -r) $(uname -r)"。其中"$(uname -r)"是內核版本號,輸入後自動查找並且添加的。
d、完成後輸入兩次"exit",重新從硬盤啟動即可。
5、忘記root用戶密碼
如果忘記root用戶密碼,可以在系統啟動時修改。具體步驟如下所示:
a、系統啟動選擇界面按上下鍵使其停止,如下圖所示。
b、按"e",進入配置界面。
c、找到其中的linux16後的內容,從最後面刪除,直到刪除到"ro"即可。如下圖所示。完成後輸入"rw rd.break"。按下"ctrl+x"繼續,會出現一個shell。
d、輸入"chroot /sysroot",再輸入"passwd"修改密碼。
e、輸入"touch /.autorelabel"。
完成後輸入兩次"exit"完成系統繼續啟動,完成修改root用戶密碼。
6、刪除/boot
如果刪除/boot,毫無疑問,系統是啟動不起來的。
此時需要按以下步驟恢復:
a、從光盤鏡像啟動。選擇"Troubleshooting",選擇"Rescue a Red Hat Enterprise Linux System",輸入"1",按下回車鍵。
b、輸入"chroot /mnt/sysimages",進入真實的"/boot"。
c、輸入"grub2-install /dev/vda"。
d、輸入"mount /dev/sr0 /opt",將光盤掛載在/opt下。
e、"rpm -ivh /opt/Packages/kernel-3.10.0-327.e17.x86_64.rpm --force",強行重新安裝內核安裝包。
f、"grub2-mkconfig > /boot/grub2/grub.cfg",恢復啟動引導文件。
完成以上步驟後,輸入兩次"exit"並且設置從硬盤啟動,系統就可以正常啟動了。
linux初學者-系統啟動故障篇