在MBR磁盘上,分区表和引导程序都挤在开头的512字节里,安装双系统只能先装Windows,再装Linux,由grub2来提供多系统引导。如果在使用中需要重新安装Windows,它就会把grub2的引导代码覆盖掉,导致Linux无法启动。修复的过程很简单,基本原理是用Live系统开机,chroot到原来的根分区下,再重新把grub2引导代码写入磁盘MBR就可以了。
以下命令在Live系统下执行:
# 挂载原来的根分区
mount /dev/sdXN /mnt
# 对于 btrfs,还需要挂载子卷
mount -t btrfs -o subvol=@ /dev/sdXN /mnt
sudo mount --rbind /dev /mnt/dev
sudo mount --rbind /proc /mnt/proc
sudo mount --rbind /sys /mnt/sys
chroot /mnt
update-grub
/usr/sbin/grub-install /dev/sdX