使用grub2制作bios和uefi双启动u盘
应对复杂的装机环境,bios/uefi,windows/linux。
假设已有一台装好grub(2.02)
的linux系统。U盘的设备路径/dev/sdb
。
U盘分区
- 使用mbr分区表
只有mbr分区表才能同时支持bios和uefi - 分两个区
/dev/sdb1
大一些,日常存储文件用
/dev/sdb2
用作esp分区(需要调整分区类型为ESP文件系统,加上boot标记)
挂载U盘
按照该对应方式挂载
/dev/sdb1 >>> /tmp/data
/dev/sdb2 >>> /tmp/esp
安装grub引导文件
grub-install --target=i386-pc --boot-directory=/tmp/data/.boot /dev/sdb
安装uefi引导文件
grub-install --target=x86_64-efi --boot-directory=/tmp/data/.boot --efi-directory=/tmp/esp --removable
grub.cfg
如果安装成功,在/tmp/data/.boot
下应该有grub
目录。创建/tmp/data/.boot/grub.cfg
即可。
可通过${grub_platform}
变量判断是bios还是uefi,可以用来加载不同的配置文件。
if [ "${grub_platform}" == "efi" ]; then
menuentry "Microsoft Windows Vista/7/8/8.1 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root $hints_string $fs_uuid
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
fi
if [ "${grub_platform}" == "pc" ]; then
menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS-MBR" {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
ntldr /bootmgr
}
fi
配置文件具体怎么写,我也不会。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战