将FreeBSD添加到GRUB2引导菜单


11

我的MBR驱动器上安装了带有Grub2的Gentoo x64。今天,我安装了FreeBSD x64 9.2。现在我在Gentoo中,尝试将FreeBSD添加到grub2菜单列表中。

grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg

我在Gentoo上进行了上述操作,但没有找到FreeBSD。FreeBSD的嵌套分区已打开sda1并包含freebsd-ufsfreebsd-swap分区。

如何添加FreeBSD到grub2

Answers:


9

这是我的:

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
}

1
您是使用os-prober生成的还是您自己完成的。同时该文件也该指令去?
r004 2014年

sda1会翻译成hd0,1什么?grub2从1开始而不是0是真的吗?
r004 2014年

2
不,这不是自动生成的。:我把它写进/etc/grub.d/40_custom,检查此wiki.archlinux.org/index.php/...
uzsolt

1
是的(hd0,1)是sda1。
uzsolt 2014年

freebsd在/ dev / sda1中,但是sda1是一个分区片(根据bsd术语);它包含/swap分区。那我该怎么走呢?
r004 2014年

4

我的目标是:通过在/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(希望如此)。:)如果有人成功,给我留言,我很高兴收到你的来信!


适用于gpt分区表
r004 2014年

什么insmod part_gpt
没有人

2

按以下顺序执行:

  1. 编辑您的/etc/grub.d/40_custom添加uzsolt的指令。在文件末尾添加指令。不要删除其中的任何内容

  2. 确保40_custom可执行文件。如果没有的话chmod u+x 40_custom

  3. 现在执行此操作以将更改写入grub.cfg

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. 多田!马上重启; 您应该在GRUB菜单的OS列表中拥有FreeBSD。

要访问UFS分区片,您应该执行以下操作:

  1. 编辑您的内核配置以添加UFS filesystemUFS label

  2. 然后是make && make_modules您的内核。

  3. 安装UFS文件系统软件

  4. 在Linux下挂载UFS Slice:

    sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    

2

根据这个网站

  1. 启动Linux。
  2. 创建一个/boot/grub2/custom.cfg文件。
  3. 将这些行添加到创建的文件中:

    menuentry "FreeBSD" {
    set root='(hd0,3)'
    kfreebsd /boot/loader
    }
    

    其中hd0,3表示这是第一个硬盘驱动器,而FreeBSD在其第三个分区上(因为磁盘从0开始编号,而分区从1开始编号)。可能您需要调整这些数字。找出磁盘内容的一种方法是运行fdisk -l

  4. 运行grub2-mkconfig -o /boot/grub2/grub.cfg

请记住,您的命令可能会略有不同。grub2-mkconfig可能grub-mkconfig如此等等(这就是我在BunsenLabs Linux上的情况)。


请注意,我在这台机器上使用的是带有UFS的FreeBSD而不是ZFS。据我所知,所提供的解决方案不适用于基于ZFS的安装。


1

Arch Linux的维基有相同的一个很好的解释。它指导正常的方式,即直接OS加载以及链式加载。

但是,一定不要忘记发布sudo grub-mkconfig -o /boot/grub/grub.cfg更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.