Answers:
这是我的:
menuentry "FreeBSD" --class freebsd --class bsd --class os {
insmod ufs2
insmod bsd
set root=(hd0,1)
kfreebsd /boot/kernel/kernel
kfreebsd_loadenv /boot/device.hints
set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
set kFreeBSD.vfs.root.mountfrom.options=rw
set kFreeBSD.hw.psm.synaptics_support=1
}
hd0,1
什么?grub2从1开始而不是0是真的吗?
/
和swap
分区。那我该怎么走呢?
我的目标是:通过在/etc/grub.d中编辑40_custom从Grub2引导FreeBSD 10。
我的设置:FreeBSD10在我系统的第五个硬盘上(在Linux下是/ dev / sde,所以对于grub2是hd4。请记住,在Grub2下,硬盘的hd从hd0开始,分区从1开始,而不是零)。根分区是第二个分区(/ dev / sde2),因为我在安装(最简单)时使用了FreeBSD的引导分区(使用整个磁盘)。回想一下,即:为第五个硬盘和第二个分区设置root ='(hd4,2)'。
信息:(实际上不需要chainloader +1!以下将我直接带到FreeBSDs Bootloader)。
概括一下:您只需要修改set root =(x,x),就不需要了。如果您想直接启动内核,则事情要比下面的条目复杂一些。
menuentry "FreeBSD 10.0" {
insmod part_gpt
set root='(hd4,2)'
kfreebsd /boot/loader
}
我对os-prober感到有些失望,因为它刚发现“ / dev / sde2上的未知Linux发行版”
ps:别忘了以后再说'update-grub'和Taddaa(希望如此)。:)如果有人成功,给我留言,我很高兴收到你的来信!
insmod part_gpt
啊
编辑您的/etc/grub.d/40_custom
并添加uzsolt的指令。在文件末尾添加指令。不要删除其中的任何内容。
确保40_custom
可执行文件。如果没有的话chmod u+x 40_custom
。
现在执行此操作以将更改写入grub.cfg
。
grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub/grub.cfg
多田!马上重启; 您应该在GRUB菜单的OS列表中拥有FreeBSD。
编辑您的内核配置以添加UFS filesystem
和UFS label
。
然后是make && make_modules
您的内核。
安装UFS文件系统软件。
在Linux下挂载UFS Slice:
sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
根据这个网站:
/boot/grub2/custom.cfg
文件。将这些行添加到创建的文件中:
menuentry "FreeBSD" {
set root='(hd0,3)'
kfreebsd /boot/loader
}
其中hd0,3
表示这是第一个硬盘驱动器,而FreeBSD在其第三个分区上(因为磁盘从0开始编号,而分区从1开始编号)。可能您需要调整这些数字。找出磁盘内容的一种方法是运行fdisk -l
。
运行grub2-mkconfig -o /boot/grub2/grub.cfg
。
请记住,您的命令可能会略有不同。grub2-mkconfig
可能grub-mkconfig
如此等等(这就是我在BunsenLabs Linux上的情况)。
请注意,我在这台机器上使用的是带有UFS的FreeBSD而不是ZFS。据我所知,所提供的解决方案不适用于基于ZFS的安装。
在Arch Linux的维基有相同的一个很好的解释。它指导正常的方式,即直接OS加载以及链式加载。
但是,一定不要忘记发布sudo grub-mkconfig -o /boot/grub/grub.cfg
更改。