我最近在 Dell Precision M4800 上安装了 FreeBSD 12.1,并以 ZFS 作为根文件系统。操作系统安装在mSATA SSD上,还安装了2½英寸HDD。启动时,系统拒绝启动,除非我手动选择从 mSATA SSD 启动。即使这样, FreeBSD 引导加载程序也会抱怨“分区表无效”,但如果我按 Enter 键,它仍然会引导。
如何才能让FreeBSD正常启动?
我知道我没有提供太多信息。我对 FreeBSD 还很陌生,我不知道解决这个问题需要什么信息。请告诉我您需要什么,我将立即为您提供所需的信息。
附加信息
用户 Alex 让我报告fdisk -l
. FreeBSDfdisk
不支持-l
,但无论如何,输出如下:
# fdisk -l
fdisk: illegal option -- l
usage: fdisk [-BIaipqstu] [-b bootcode] [-1234] [disk]
fdisk -f configfile [-itv] [disk]
这是输出gpart list
:
# gpart list
Geom name: ada1
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 1000215182
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: ada1p1
Mediasize: 524288 (512K)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 20480
Mode: r0w0e0
rawuuid: 4ef0a0fe-67b0-11e5-881a-34e6d760b2c5
rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
attrib: bootme
label: gptboot0
length: 524288
offset: 20480
type: freebsd-boot
index: 1
end: 1063
start: 40
2. Name: ada1p2
Mediasize: 34359738368 (32G)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 1048576
Mode: r1w1e1
rawuuid: 4f077a7a-67b0-11e5-881a-34e6d760b2c5
rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
label: swap0
length: 34359738368
offset: 1048576
type: freebsd-swap
index: 2
end: 67110911
start: 2048
3. Name: ada1p3
Mediasize: 477749051392 (445G)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 1048576
Mode: r1w1e1
rawuuid: 4f0caac1-67b0-11e5-881a-34e6d760b2c5
rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
label: zfs0
length: 477749051392
offset: 34360786944
type: freebsd-zfs
index: 3
end: 1000214527
start: 67110912
Consumers:
1. Name: ada1
Mediasize: 512110190592 (477G)
Sectorsize: 512
Mode: r2w2e4
更新
事实证明,受影响的部分是 BIOS 中的配置问题。选择正确的启动磁盘后,计算机会出现“无效分区表”消息,而无需手动选择启动设备。然而,关于为什么 FreeBSDpmbr
引导代码打印此消息的问题仍然存在。
答案1
显然,磁盘是使用 GPT 布局进行分区的,如果系统使用 UEFI 启动,这是必需的。也许 FreeBSD 首先探测老式的 MS-DOS 分区布局并打印一条消息,然后继续尝试其他布局并成功找到 GPT 布局并继续引导。
至于必须手动选择 SSD,这可能只是 BIOS 配置问题。我怀疑硬盘连接到第一个 SATA 端口,因此成为默认启动盘。修复 BIOS 配置,或交换 SATA 连接,以便 SSD 现在连接到第一个 SATA 端口。
答案2
我没有看到第二个磁盘。这可能是因为它确实没有正确分区。引导加载程序可能会尝试查找可以引导的内容,但无法读取其中一张磁盘。
我用来gpart show
查看 geom 发现了什么。它的输出比gpart list
.当 GEOM 在检测布局时出现问题时,它还会将错误写入日志,您稍后可以使用 来读取该日志dmesg
。
也有可能 MBR 已写入第一个磁盘,而引导分区位于第二个磁盘上。您可以通过在 BIOS 中禁用不想安装的磁盘或直接拔掉它们来避免这种情况。
GPT 分区方案(通常)不会造成任何损害,因为它与 MBR 兼容。据我了解,您所说的错误消息稍后来自引导加载程序。所以这里可以排除BIOS问题。