来自 Marc Tanguy (mtanguy@ens.uvsq.fr) 的贡献,2001-09-27
实际上,有两种方法可以知道它
如果你有一张 Adaptec SCSI 卡 (2940u2, 29160, 39160),你只需使用 'diagnose' 模式 (推荐使用 BIOS v3.10.0)。它必须在 SCSI 卡的 BIOS 菜单中激活。然后你只需等待并看到类似这样的内容
... | ID | LUN | 供应商 | 产品 | Rev | 大小 | Sync | 总线 | HD# |
... | 0 | 0 | QUANTUM | ATLAS10K2 | DDD6 | 17GB | 160 | 16 | 80h |
... | 1 | 0 | QUANTUM | ATLAS10K2 | DDD6 | 17GB | 160 | 16 | 81h |
... | 2 | 0 | IBM | DDRS | DC1B | 4GB | 80 | 16 | 82h |
... | 3 | 0 | IBM | DNES | SAH0 | 9GB | 80 | 16 | 83h |
如果你没有 Adaptec 卡,你必须知道什么是 '启动' 磁盘 (通常是 ID 0,但不是必须的,它可以在 SCSI 卡的 BIOS 中定义),LILO 将在那里被找到并启动:这是第一个磁盘,所以它的编号是 0x80。然后就非常简单了,BIOS 遵循这些 ID。
例如
ID 0 -> boot -> 0x80 ID 1 -> empty ID 2 -> disk -> 0x81 ID 3 -> disk -> 0x82
或
ID 0 -> disk -> 0x81 ID 1 -> empty ID 2 -> disk -> 0x82 ID 3 -> boot -> 0x80 ID 4 -> disk -> 0x83
这部分完全不关心 SCSI 驱动器上安装了什么。但是你应该注意,如果你使用的 ID 高于 SCSI 适配器,可能会有问题。所以你应该总是尝试在 SCSI 设备 ID 之后设置 SCSI 适配器 ID。
好的,但是 NT 必须是第一个启动的磁盘,所以我希望它在 0x80,但是我已经在 0x80 上有 LILO 和一个完整的 ext2 驱动器,而我的 NT 驱动器在 0x83。我如何 '交换' Linux 和 NT?这非常简单:你只需要告诉 BIOS,NT 驱动器现在是 0x80,Linux 驱动器是 0x83。
other=/dev/sdd1 label=nt map-drive = 0x83 to = 0x80 map-drive = 0x80 to = 0x83
这个更改会产生一个警告
Warning: BIOS drive 0x8? may not be accessible
但是如果你知道你在做什么,它将毫无问题地运行。
我在具有 Red Hat Linux 7.1 和 Windows 2000 Pro 的这种配置上使用了它
Name Flags Part Type FS Type [Label] Size (MB) Disk Drive: /dev/sda - 0x80 sda1 Boot Primary Linux ext2 [/boot] 24.68 sda2 Primary Linux Swap 139.83 sda3 Primary Linux ext2 [/usr] 3150.29 sda4 Primary Linux ext2 [/home] 15044.04 Disk Drive: /dev/sdb - 0x81 sdb1 Primary Linux Swap 139.83 sdb2 Primary Linux ext2 [/] 3150.29 sdb3 Primary Linux ext2 [/opt] 1052.84 sdb4 Primary Linux ext2 [/public] 14015.88 Disk Drive: /dev/sdc - 0x82 sdc1 Primary Linux ext2 [/var] 1052.84 sdc2 Primary Linux ext2 [/tmp] 106.93 sdc3 Primary Linux ext2 [/cache] 1052.84 sdc4 Primary Linux ext2 [/chroot] 2352.44 Disk Drive: /dev/sdd - 0x83 sdd1 Boot Primary NTFS [WINDOWS_2000] 9162.97
我的完整 /etc/lilo.conf
boot=/dev/sda map=/boot/map install=/boot/boot.b prompt default=Linux read-only compact image=/boot/vmlinuz label=Linux root=/dev/sdb2 other=/dev/sdd1 label=Windows map-drive = 0x83 to = 0x80 map-drive = 0x80 to = 0x83
我刚刚插入了一个新的 SCSI 驱动器,现在 LILO 拒绝启动,发生了什么事?
当你插入一个磁盘时,你必须小心 ID。如果你在两个已经插入的磁盘之间添加一个驱动器,BIOS 编号会被改变
Before ----> After scsi id - - BIOS id scsi id - - BIOS id ID 0 - disk - 0x80 ID 0 - disk - 0x80 ID 1 - empty ID 1 - new disk - 0x81 ID 2 - disk - 0x81 ID 2 - disk - 0x82 !!
如果你更改了 BIOS ID,你必须重新评估它们。