使用grub实现Linux和Windows双系统的引导

2022年6月9日09:33:46

安装Linux和Windows双系统后,需要对grub进行一些设置,以添加Windows启动项,方便在电脑启动时选择要进入哪一个系统。

使用grub实现Linux和Windows双系统的引导

1、查看Windows引导分区的UUID

sudo fdisk -l##获取所有硬盘信息
Disk /dev/nvme0n1:931.51 GiB,1000204886016 字节,1953525168 个扇区
磁盘型号:WDC WDS100T2B0C-00PXH0
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:85657977-A2E8-E740-A4EF-966CD614040B

设备起点 末尾 扇区大小 类型
/dev/nvme0n1p1204810506231048576512M Linux 文件系统
/dev/nvme0n1p2 5244928214960127209715200100G Linux 文件系统
/dev/nvme0n1p3 214960128 1953523711 1738563584829G Linux 文件系统
/dev/nvme0n1p4 1050624524492741943042G Linux 文件系统

分区表记录没有按磁盘顺序。


Disk /dev/nvme1n1:476.94 GiB,512110190592 字节,1000215216 个扇区
磁盘型号:IM2P33F8-512GD
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:807DB57B-6314-8B4E-A3F4-9D46699AE0BC

设备起点 末尾扇区 大小 类型
/dev/nvme1n1p12048 206847204800 100M EFI 系统
/dev/nvme1n1p2206848 239615 3276816M Microsoft 保留
/dev/nvme1n1p3239616998975487 998735872 476.2G Microsoft 基本数据
/dev/nvme1n1p4 998975488 1000212479 1236992 604M Windows 恢复环境

可以看到 /dev/nvme1n1p1 就是Windows的引导分区,使用以下命令获取其UUID

sudo blkid /dev/nvme1n1p1
/dev/nvme1n1p1: UUID="4250-91E8" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="03f1d6a5-8976-4230-acc5-6c7bf23eefe9"

##将UUID复制下来

2、向 /boot/grub/grub.cfg 中添加命令

sudo nano /boot/grub/grub.cfg

找到 /etc/grub.d/30_os-prober

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

向其中添加如下命令

menuentry 'Microsoft Windows 11' {##''内的名称可以自定义
insmod part_gpt
insmod fat
insmod chain
search --fs-uuid --no-floppy --set=root XXXX-XXXX##XXXX-XXXX就是刚才复制的UUID
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

3、保存并退出

此时,重启系统即可看到Windows的启动项