当前位置: 首页>>技术教程>>正文


设置GRUB 2以使用Ubuntu工具或LiveUSB引导FreeBSD来查找哪些分区?

, ,

问题描述

我目前在计算机上安装了Windows 7和Ubuntu 11.04(Natty)。我还制作了一个FreeBSD liveUSB(或安装程序,不确定;只是dd将其.img放到USB memory 棒中),并在没有安装引导程序的情况下安装了它(因为我不想弄乱GRUB 2,我认为GRUB 2应该能够启动大多数东西)。 FreeBSD拥有自己的分区,并且在内部具有由安装程序自动分配的FreeBSD分区(也许称为分片?)。我已经尝试运行update-grub -它说这是一个未知的Linux,并且没有为其添加条目。

因此,有两个问题:

  1. 如何找到使用我拥有的Ubuntu工具或USB安装棒告诉Grub的分区?

  2. 找到分区后,我将在/etc/grub.d/40_custom中放入什么?

最佳办法

您有三种选择:您可以让Grub将FreeBSD当作某些未知的操作系统,并连锁加载FreeBSD的Stage 1引导程序,或者您可以让Grub加载FreeBSD的Stage 2引导程序,或者可以让Grub加载FreeBSD内核。

Chainloading

这是最简单,最可靠的方法。您所需要做的就是在自己的片上安装FreeBSD引导程序(* BSD称为片就是Linux和Windows称为分区)。然后,当您运行update-grub时,Grub应该自动找到它(通过/etc/grub.d/30_os-prober)。 /boot/grub/grub.cfg中的条目如下所示(如果FreeBSD位于/dev/sda2上,即/dev/wd0s2):

menuentry "FreeBSD" {
    set root=(hd0,2)
    chainloader +1
}

加载FreeBSD引导程序或内核

Grub2 currently supports所有主要的BSD内核(假设您的计算机从BIOS引导)。安装脚本没有(至少是Ubuntu 10.04附带的安装脚本,我没有检查11.04),因此,如果选择此路由,则必须通过/etc/grub.d/40_Custom添加自己的条目。

这是样本条目from David Marec on the FreeBSD forums。我还没有测试过它们,但是它们看起来很合理。最好的方法似乎是加载FreeBSD Stage 2引导程序。您可以将FreeBSD安装的位置指定为磁盘号,片号和分区a

menuentry "FreeBSD (/boot/loader)" {
    insmod ufs2
    set root=(hd0,1,a)
    kfreebsd /boot/loader
}

或通过searching具有特定UUID,文件或标签的文件系统:

menuentry "FreeBSD (/boot/loader)" {
    insmod ufs2
    search --no-floppy --file /boot/loader
    kfreebsd /boot/loader
}

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10958.html,未经允许,请勿转载。