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"並且設置從硬盤啟動,系統就可以正常啟動了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM