FreeBSD 无法从辅助 IDE 磁盘启动

FreeBSD 无法从辅助 IDE 磁盘启动

我已经在 2000 make PC 上安装了 FreeBSD-7.4(* 规格如下)

当磁盘连接到主 IDE 插槽时,操作系统可以正常启动,但是当它连接到中学IDE 套接字,它仅启动第一部分,它会显示一个菜单,其中包含“1. Boot FreeBSD [default]”“3. Boot FreeBSD in Safe Mode”等选项。

我选择默认的第一个选项,它会启动一段时间,然后显示

Trying to mount from ufs:/dev/ad0s1a
freebsd manual root filesystem specification:
<fstype>:<device> [options]   Mount <device> using filesystem <fstype>
                                eg. ufs:/dev/da0s1a
  ?               List valid disk boot devices
  <empty line>    Abort manual input

并进入无用的 mountroot 提示符。打字?给出

List of GEOM managed disk devices:
  ufsid/5c922e4292c8e9fa ufsid/5c922e435b48afb7 
ufsid/5c922e4343d7ab4b ufsid/5c922e44e470015a 
ufsid/5c922e424bf39462 ad2s1g ad2s1f ad2s1e 
ad2s1c ad2s1b ad2s1a ad2s1 ad2

输入mount ufsid/5c922e4292c8e9fa并尝试使用所有其他设备,返回

Trying to mount root from mount ufsid/5c922e4292c8e9fa等,即没有提供任何有用的信息。

类似的问题已发布在混合 IDE/SATA 磁盘和启动问题但这没有帮助;只是很相似。

如果我从 IDE2 插座上拔下 40 针带状 IDE 电缆并将其插入 IDE1 插座,则一切恢复正常。此问题仅限于该磁盘用作辅助主IDE磁盘的情况。

实际上,这个问题首先发生在我尝试从安装了相同 FreeBSD 的主 IDE 磁盘访问第二个 IDE 磁盘时。

当我mount /dev/ad1* /mnt/mydisk ad1*执行各种选项时ad1s1,所有选项都一致返回, ad1s1a我认为它无法安装第二个 IDE 磁盘,因为辅助主 IDE 连接出现问题。我想这个问题可以通过Bios设置来解决。有很多与主 IDE 磁盘和辅助 IDE 磁盘相关的 Bios 设置,例如“模式:LBA、大、自动”,但我不知道什么作用,我不想尝试随机设置来偶然修复此问题。ad1s1bmount: /dev/ad1s1: Operation not permitted

如何从辅助主 IDE 启动和/或如何在 FreeBSD 中使用第二个 IDE 磁盘?

  • PC 规格:PII 400Mhz、Gigabyte Intel 440BX MoBo、512MB RAM、16MB RAM 显卡、15GB Ouantum Fireball IDE 硬盘、带有 2002 固件的 Award Bios

答案1

引导加载程序不会看到哪个 BIOS 驱动器映射到哪个 IDE 通道和主/从位置,因此它简单地假设硬盘驱动器按主从、主从顺序填充,没有漏洞,并映射 BIOS 驱动器 C、D、E ...到 IDE 驱动器ad0,, ad1.ad2

另一方面,IIRC FreeBSD 7 默认内核 (GENERIC) 有一个硬连线 IDE 驱动器映射:

  • /dev/ad0是初级大师
  • /dev/ad1是主要从属
  • /dev/ad2是二级大师
  • /dev/ad3是次要奴隶

在您的情况下,未使用主通道,因此 BIOS 将驱动器 C (0x80) 分配给您的 FreeBSD 硬盘驱动器。然后引导加载程序会看到并引导 BIOS 驱动器 C ( /dev/ad0) 片1(可能是驱动器上的唯一分区) BSD disklabel 分区a,将该分区转换为引导设备/dev/ad0s1a并传递ufs:/dev/ad0s1a给内核。

另一方面,内核启动序列会扫描 IDE 通道并在辅助主设备上查看您的 FreeBSD 驱动器。根据上面的硬接线方案,内核分配ad2给驱动器(不是ad0)。因此,当需要挂载 rootdev 时,它不会看到ad0s1a从引导加载程序传递下来的信息。

如果要保留您的设置(辅助主服务器上的 FreeBSD),您需要修复您的配置。脚步:

  1. 将驱动器放置在与首次安装 FreeBSD 时相同的 IDE 通道(主/从)和相同位置(主/从)中。 (从你的描述看来是初级master。)
  2. 启动系统。
  3. 启动完成后,以 root 身份登录。
  4. 运行此命令以教导引导加载程序将ad2(辅助主设备)作为引导驱动器传递给内核:
    echo 'vfs.root.mountfrom=ufs:/dev/ad2s1a' >> /boot/loader.conf
    
  5. 关闭系统。
  6. 将驱动器放回到辅助 IDE 通道上。

从下次引导开始,内核将用作/dev/ad2s1a根设备,忽略引导加载程序的提示。

/boot/loader.conf注意:如果您想将驱动器移动到不同的通道/位置,则需要调整启动设备。

相关内容