>雙系統grub意外消失怎麼辦? 不用重裝系統、不用去維修店、不會丟數據,教你一招,完美恢復grub! ### 背景 我的電腦是windows和linux雙系統,啟動項使用的grub。某天準備切換linux時突然發現grub不見了。近期可疑操作有:更新BIOS、多次切換UEFI、添加第三方風扇管理軟 ...
雙系統grub意外消失怎麼辦?
不用重裝系統、不用去維修店、不會丟數據,教你一招,完美恢復grub!
背景
我的電腦是windows和linux雙系統,啟動項使用的grub。某天準備切換linux時突然發現grub不見了。近期可疑操作有:更新BIOS、多次切換UEFI、添加第三方風扇管理軟體。總之,目前開機直接轉圈圈進windows,帶有雙系統選擇界面的grub消失,linux系統自然也進不去了。重裝linux系統當然可以恢復,但是成本太高了。多番查閱資料,最終定下通過linux live USB的方式來恢復grub。該方案通過live linux系統,掛載原有系統分區,然後藉助chroot,在類似原系統開機環境下,直接重新安裝grub。
製作live usb
去kali官網下載live鏡像,插入U盤,在windows系統中使用 Etcher製作USB鏡像。
修改bios啟動順序為USB優先啟動
進入live USB,選擇forensic模式,這種審計模式下,不會幹擾原有系統數據。
恢覆命令
進入live linux系統後,需要根據原有linux系統的分區情況逐一掛載。(註意:每個人分區不一樣,不要照抄命令)
blkid
命令可以查看硬碟分區詳情,
優先掛載根分區,以便其他分區掛載。
我的命令如下:
blkid
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p5 /mnt/usr
mount /dev/nvme0n1p1 /mnt/boot/efi/
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --rbind /sys /mnt/sys
chroot /mnt
註意sys分區掛載要用rbind,否則會報以下錯誤:
然後安裝grub,
grub-install /dev/nvme0n1
update-grub
成果驗證及bug處理
重新啟動,拔出USB,可以看到grub回來了。
但是……windows選項哪去了?去bios檢查,兩個系統都在,但grub裡面沒有!
問題不大,grub更新後,預設關閉了其他系統的檢測功能,修改grub參數即可。
vi /etc/default/grub
,去掉GRUB_DISABLE_OS_PROBER=FALSE
前面的註釋#
使其生效,
然後update-grub
,
再次重啟驗證,
回來了,都回來了!
最後,記得把bios裡面的USB優先啟動順序改回去。