![分区偏移量是 63 还是 64?](https://linux22.com/image/41255/%E5%88%86%E5%8C%BA%E5%81%8F%E7%A7%BB%E9%87%8F%E6%98%AF%2063%20%E8%BF%98%E6%98%AF%2064%EF%BC%9F.png)
我不想将整个 SSD 用于 OpenBSD 5.5。 (SSD 是新的,并使用 Gparted 通过 MSDOS 进行了预格式化)
在安装过程中和fdisk阶段,我选择分区号:0来安装OpenBSD(我将分区ID更改为a6)。我计划在分区 #: 1 或 2 中安装其他类 Unix 操作系统。
当提示输入分区偏移量(默认为 0)时,我输入了 64 而不是 63(我在互联网上读到,对于 SSD,偏移量应从 64 开始)。那是对的吗?
以下是有关我的 SSD 磁盘几何结构的其他详细信息:
安装过程很顺利,没有出现任何问题。
重新启动机器后,最后几行是错误消息:
root on sd0a swap on sd0b dump on sd0b
panic: root filesystem has size 0
Stopped at Debugger+0x5 : leave
Run at least 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC! IF RUNNING SMP, USE 'mach ddbcpu <#>' AND 'trace' ON OTHER PROCESSORS TOO.
DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION!
ddb{0}>
答案1
偏移量以 512 字节扇区指定。您的替代偏移量 63 来自 C/H/S 几何体,该几何体已过时且应被忽略。
偏移量 64 听起来比 63 好。它显然更均匀 - 它提供了 512*64 = 32KiB 的对齐。你确实想要以 4KiB 对齐为目标。 (即使您没有使用 SSD - 硬盘驱动器现在内部也基于 4KiB 扇区)。
就我个人而言,我会尝试对齐到 1MiB。这将是 (1024 * 1024) / 512 = 2048 个扇区。
当前所有其他操作系统均设计为与 1MiB 保持一致。 (即排除错误)。坚持这一点可能会避免奇怪的错误。当您安装其他操作系统(特别是 Linux 或 Windows)时,如果它们使用与您的 BSD 相同的对齐方式,它也可能使分区表更容易理解。如果更容易理解,就会更容易发现错误。我在这里想到的是在现有磁盘上创建分区时出现的未对齐问题,这是我在以前版本的 Debian 中遇到的。
现代闪存擦除块比 32KiB 大得多:至少 128KiB/256KiB。也就是说,我认为这主要对于 RAID 目的很重要。因为它只对大型 IO 很重要,并且您的文件系统不一定在内部与 1MiB 对齐。
当你说默认偏移量是0时,这让我很担心。扇区 0 不能用于分区,因为它被 MBR 分区表占用(如果您使用 GPT,则为保护性 MBR)。如果 0曾是一个有效的偏移量,这表明您(BSD)是从其他地方开始计数的,例如在 MBR 之后,我们需要对此进行补偿。
你的更新解答了我的担忧。指定无效偏移量 0 意味着“未使用此分区号”。
(它还解释了为什么您描述“选择”要用于您的目的的分区。我会描述“创建”它们,因为这就是 Linux fdisk 的显示方式。在这些方面,您的 BSD fdisk 向您展示了更多底层分区表格式的文字视图)。
答案2
是的,如果您遇到这样的问题,解决它的一个好方法是 cat /dev/zero >/dev/disk(whole one) ,以便将其全部清零,然后以正确对齐的磁盘重新开始。当它找到之前存在的部分引导代码时,它有时会抛出错误。