我正在尝试使用 grub 双重启动运行 freeBSD 10.1 的 x86_64 机器。 FreeBSD Grub2-efi 安装似乎很顺利,但没有 grub.cfg。我手动创建了 grub.cfg。以下是我尝试过的配置和得到的结果。
我的设置:
gpart show -l
=> 6 146239733 da0 GPT (558G)
6 10 - free - (40K)
16 128 1 (null) (512K)
144 262144 2 efi (1.0G) -----> MY ESP
262288 1048576 3 rootfs (4.0G) ----> freebsd+ grub are here
1310864 2097152 4 swap (8.0G)
3408016 1048576 5 nextroot (4.0G)
Grub安装命令:
grub-install --target=x86_64-efi --efi-directory=/efi/ --bootloader-id=grub --boot-directory=/boot/ --modules="part_gpt part_msdos"
配置1:
menuentry "FreeBSD" {
insmod ufs2
insmod bsd
set root=(hd0,3)
kfreebsd /boot/loader.efi
}
结果:它抱怨“无效的 a.out 标头”。
配置2:
menuentry "FreeBSD" {
insmod ufs2
insmod bsd
set root=(hd0,3)
kfreebsd /boot/loader
}
结果:空白屏幕,顶部有白色模糊。是视频问题吗?
配置3:
menuentry "FreeBSD" {
insmod ufs2
insmod bsd
insmod gfxterm
insmod font
insmod videotest
insmod videoinfo
set gfxmode=auto
set kernvt="vt"
set root=(hd0,3)
kfreebsd /boot/boot1.efi
}
再次结果:空白屏幕,顶部模糊快速变化。
配置4:
menuentry "FreeBSD" {
insmod ufs2
insmod bsd
insmod gfxterm
insmod videotest
insmod videoinfo
set gfxmode=auto
set kernvt="vt"
set root=(hd0,3)
chainloader /boot/boot1.efi
}
结果:签名不匹配。不启动
我不确定我错过了什么。有人可以检查一下我的 grub.cfg 吗?我有什么明显的遗漏吗?如果有人可以分享在 x86 上使用 UEFI 引导 grub 的 grub 配置,我将非常感激。
答案1
在 Linux 操作系统中,将新的 FreeBSD 条目添加到您的文件中,/etc/grub.d/40_custom
然后重新生成grub.cfg
文件:
rm /boot/grub/grub.cfg
将以下行添加到您的/etc/grub.d/40_custom
:
menuentry "FreeBSD" {
insmod ufs2
set root=(hd0,gpt3)
kfreebsd /boot/loader
}
跑步grub-mkconfig
:
grub-mkconfig -o /boot/grub/grub.cfg
编辑
您必须创建一个bios-boot
分区(大小 = 1 M)
在 FreeBSD 中,grub
从 ports collection 安装后,使用以下命令正确安装:
grub-install --modules=part_gpt /dev/ada0
使用gpart show
命令获取正确的设备。
运行 grub-mkconfig -o /boot/grub/grub.cfg
命令,它会grub.cfg
为你生成一个。