之前在本機有fedora 29的系統,但是由於錯誤安裝,把windows10 啟動安裝到 linux 所在的硬碟中,導致原來的 efi中的grub啟動被破壞,不能進入到linux中;我首先通過磁碟精靈,把efi中啟動文件拷貝到現有的windows安裝盤中,重新啟動後成功從新的efi分區進入windo ...
之前在本機有fedora 29的系統,但是由於錯誤安裝,把windows10 啟動安裝到 linux 所在的硬碟中,導致原來的 efi中的grub啟動被破壞,不能進入到linux中;我首先通過磁碟精靈,把efi中啟動文件拷貝到現有的windows安裝盤中,重新啟動後成功從新的efi分區進入windows; 然後開始進行恢復fedora系統;這時候,有兩種辦法,一種是重新安裝 linux; 另外一種方法就是重新修複grub引導;因為對linux比較瞭解,我選擇了後者;首先參考了幾篇已經實踐的博客;
Fedora 29 引導修複:
- 創建修複環境:
- 製作live cd 或者 啟動盤;
- 啟動進入live os
- sudo -i
- 創建系統chroot環境:
- mkdir -p /mnt/fedora
- mount /dev/fedora/root /mnt/fedora
- mount /dev/sda2 /mnt/fedora/boot (掛載boot, 如果boot 分區單獨分區的話)
- mount -t proc proc /mnt/fedora/proc
- mount -o bind /dev /mnt/fedora/dev
- mount -o bind /sys /mnt/fedora/sys
- mount -t devpts devpts /mnt/fedora/dev/pts
- mount -t efivarfs efivarfs /mnt/fedora/sys/firmware/efi/efivars
- chroot /mnt/fedora
- 更新修複的環境並安裝grub2:
- yum makecache
- dnf install grub2-efi grub2-efi-x64-modules shim (安裝系統為 64位)
- grub2-install --recheck /dev/sda1 (sda1 為efi 分區)
- exit (退出chroot, 好像我在裡面使用 grub2-mkconfig 一直阻塞)
- 自動生成grub.cfg,用於啟動,預設生成的文件肯能啟動不成功,建議手動裝載linux內核:
- mount /dev/sda2 /boot (啟動分區 sda2)
- mkdir /mnt/efi
- mount /dev/sda1 /mnt/efi (efi分區 sda1)
-
grub2-mkconfig -o /mnt/efi/EFI/fedora/grub.cfg(efi啟動時,可以索引到其他磁碟上的系統,比如windows10 系統等)
-
grub2-mkconfig -o /boot/grub2/grub.cfg
- grub2 手動引導載入linux內核:參考 Using the GRUB2 boot prompt
- insmod part_gpt
- insmod ext2
- insmod lvm
- insmod xfs
- ls
- set root=(hd0,gpt2)
- linux (hd0,gpt1)/vmlinuz-5.0.0-1.fc16.i686 root=/dev/dm-2 rhgb quiet selinux=0 (此處參數可以參考)
- initrd (hd0,gpt1)/initramfs-5.0.0-1.fc16.i686.img (此處參考書可以參考)
- boot(重新啟動)
- grub2-mkconfig -o /boot/grub2/grub.cfg 進入系統後,重新修複引導;
- 當然也可以在之前自動生成的啟動項的基礎上修改;在grub2 啟動時使用 e 快捷鍵進入修改界面,並使用ctrl+x執行修改結果;
- 清理現場:
- reboot;至此,重啟並拔掉live usb,使用efi模式引導修複的系統,完成啟動;
- 註意:此時windows efi的引導還在,只是被grub2覆蓋了, 先啟動grub2;當然我們可以使用磁碟精靈;將windows efi 拷貝到另外一個單獨的分區;
- 啟動後需要重新創建 grub2 cfg;使用上述 grub2-mkconfig 命令,在 /boot/efi/EFI/fedora/grub.cfg 和 /boot/grub2/grub.cfg 兩個位置覆蓋更新;
- 最後,祝您使用愉快!此教程總結自實際修複過程中,如果您有問題,歡迎留言咨詢;我最後是在自動生成的項目的基礎上,結合手動修改引導成功的;
如果你對linux的啟動機制,以及mbr,efi 等不是很瞭解;建議還是重新安裝系統為好,防止把現有的windows系統搞壞;當前很多的pc機,都是基於馮諾依曼結構設計,電腦的中心是存儲;所以要保護好磁碟上的分區數據不被破壞;重新劃分磁碟的時候,也要多加小心;
保持更新,轉載請註明出處:https://www.cnblogs.com/xuyaowen/p/grub-rebuild-after-installed-windows.html ;更多內容請關註cnblogs.com/xuyaowen;
參考鏈接:
- https://www.cnblogs.com/younc/p/5033995.html (可以參考)
- https://my.oschina.net/NorthOcean/blog/192131?fromerr=05yQWmOZ (可以參考,但不完全適合)
- https://blog.51cto.com/shenghao/1212813?source=drt (可以參考,但是有錯誤)
- https://docs.pagure.org/docs-fedora/the-grub2-bootloader.html (我使用的fedora29, 使用此文檔最好, 但是此文章比較複雜,修複引導請看我自己的操作記錄)
- https://blog.51cto.com/shenghao/1212813?source=drt (可以參考,提供一種思路)