如何启动安装在外部驱动器第二个分区的 FreeBSD

如何启动安装在外部驱动器第二个分区的 FreeBSD

我已在外部硬盘的第二个分区上安装了 FreeBSD 9.1,但无法让我的计算机从它启动。 FreeBSD 是使用 FreeBSD memstick 映像 dd'd 到 USB 闪存驱动器上安装的。

第一个分区是 ntfs 分区,其中有我的备份。当我发现需要安装 FreeBSD 时,我“缩小”了第一个分区(在 Windows 中)以获得安装 FreeBSD 的可用空间,然后安装了 FreeBSD。它从未要求安装启动管理器。

当我第一次尝试启动时,它失败了,没有任何错误消息(可能没有安装启动管理器)。所以我从闪存驱动器启动,并运行命令boot0cfg -B /dev/ad1)(ad1 指的是外部硬盘)。现在启动时,它会显示一个菜单,如下所示:

F1 Win
F2 FreeBSD
F5 First disk

按 F1 或 F2 时,我收到错误消息:“BOOTMGR 丢失”。问题可能是什么?

请帮助我启动 FreeBSD 安装。

答案1

硬盘ad0和ad1都需要有boot0引导代码,FreeBSD所在的ad1的片(MBR分区)需要有boot1。这有点令人困惑,但源于在 MBR 分区内使用 bsd 磁盘标签的架构决策。

Boot0 确实很小且动态,允许其他操作系统的引导加载程序继续运行。基本上 boot0 位于 MBR 中。 Boot0 无法读取磁盘标签,因此它仅加载分区(切片)的第一个块并跳转以执行该代码。

Boot1 是 FreeBSD 特定代码真正开始的地方,内存以适合 FreeBSD 内核的模式设置,并且 boot1 代码可以读取 BSD 磁盘标签、查找 / 甚至读取文件系统,足以按名称查找内核文件。 Boot1 相当复杂,做了很多事情,包括加载更多的引导代码、模块、内核并开始执行内核。

我猜你的磁盘布局有点像这样:

ad0 - 内部硬盘驱动器 (boot0)
ad0s1 - 内部硬盘驱动器的第一个也是唯一的分区(片),C:\

ad1 - 外部硬盘驱动器 (boot0)
ad1s0 - 外部驱动器上的 FAT 或 NTFS 分区(片),D:\
ad1s1 - FreeBSD 分区(片)(boot1)
ad1s1a - FreeBSD /
ad1s1b - FreeBSD 交换
ad1s1c - FreeBSD /usr
.. 。

我已经注意到哪里需要 boot0 和 boot1 加载程序。

手动执行此操作可以教授有关 FreeBSD 如何启动的宝贵经验。接下来的课程是配置 /boot/ 环境、更改自定义映像以及在加载内核本身之前选择和配置内核模块。

我猜您这样做主要是为了学习目的,并且可能对简化安装感兴趣。 NanoBSD 值得研究。

相关内容