boot.ini 中的哪个 rdisk 值映射到哪个磁盘?

boot.ini 中的哪个 rdisk 值映射到哪个磁盘?

以下是示例 boot.ini 的内容:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /NOEXECUTE=OPTIN /FASTDETECT
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /NOEXECUTE=OPTIN /FASTDETECT

rdisk值表示物理磁盘编号。

因此,如果我有三个硬盘,则说:

  • /dev/sda

  • /dev/sdb

  • /dev/sdc

那么如何知道哪个磁盘(/dev/sda 或 /dev/sdb 或 /dev/sdc)是 rdisk(0),哪个磁盘是 rdisk(1),等等?

答案1

反复试验?

我确信 Windows 有一种方法可以对磁盘进行排序,但即使我知道,我也不会相信它,并且在更改内容之前总会进行检查。

boot.ini 文件会为您提供一些线索,例如哪个磁盘上装有哪个操作系统。然后,您就可以从中找出答案。例如,某个磁盘上是否只有一个 ntfs 分区,而其他磁盘上则有两个 ntfs 分区,每个操作系统上有哪些用户,每个 Windows 系统上又有哪些目录。您甚至可以启动每个操作系统,并在其系统分区中保存一个文件来帮助您。

(如果您尝试找出 boot.ini 中损坏的条目指的是哪个磁盘,msconfig.exe 有一个选项可以检查启动路径,以确保每个选项都可以启动。)

答案2

根据微软文章Q102873:BOOT.INI 和 ARC 路径命名约定和用法Wayback Machine 链接),其顺序rdisk()为:

... 适配器上磁盘的序数,通常是 0 到 3 之间的数字。

因此,它似乎是通常的顺序(从 0 开始):主主设备、主从设备、次主设备、次从设备。(但我不知道它如何与 SATA 配合使用。)

答案3

可能还有另一种方法可以正确访问您想要的驱动器。驱动器的 ARC ID 还有另一种语法。示例如下:

signature(13579BDF)disk(0)rdisk(0)partition(n)

其目的是让 ntldr 在 MBR 中偏移量为 1B8h 的位置搜索具有该磁盘序列号的磁盘。Russinovich 和 Solomon 所著的《Windows internals》第 4 版第 255 页对此进行了描述。不过,我还没有尝试过。另外,不确定这是一个 32 位整数还是只有 4 个字节 — 如果是前者,则可能需要按相反顺序排列字节。

相关内容