我的电脑上装有fedora和windows两个系统。一般装系统的时候windows先装而linxu后装,因为linux能够查找windows系统并为其提供启动引导,而windows不能。因此当需要重装windows的时候需要修复grub2引导。

工具 fedora的livecd,即安装fedora时使用的安装U盘

步骤

调整bios启动顺序,进入livecd

挂载硬盘

  • 使用fdisk -l查找/boot分区所在硬盘,比如我的是/dev/sda8。(在此之前需要运行su命令)
  • 挂载根分区mount /dev/mapper/fedora-root /mnt
  • 挂载/boot分区mount /dev/sda8 /mnt/boot
  • 挂载/dev分区mount --bind /dev /mnt/dev

修改根目录

chroot /mnt

修复grub2

  • grub2-install /dev/sda
  • grub2-install /dev/sda --recheck

更新引导项

grub2-mkconfig -o /boot/grub2/grub.cfg

若不执行更新引导项,则启动的时候会显示过去存在的操作系统(此时并不会显示新的操作系统)

进入fedora后,再次执行grub2-mkconfig -o /boot/grub2/grub.cfg,则引导项修复正常。

更改默认引导项

可以通过在/boot/grub2/grub.cfg添加set default=X(X为数字)来更改默认引导项。X从0开始,例如windows在引导菜单的第4行,则可以设置set default=3

但是,这样的修改方法是不推荐的。因为每次执行grub2-mkconfig -o /boot/grub2/grub.cfg都会更新grub.cfg这个文件。正确的方法是执行grub2-set-default <标题或名称>。其中,<标题或名称>用命令grep menuentry /boot/grub2/grub.cfg找到,即menuentry后引号内的内容。