下一页 上一页 目录

6. 如何知道我的 SCSI 磁盘的 BIOS 编号

来自 Marc Tanguy (mtanguy@ens.uvsq.fr) 的贡献,2001-09-27

6.1 理论

实际上,有两种方法可以知道它

如果你有一张 Adaptec SCSI 卡 (2940u2, 29160, 39160),你只需使用 'diagnose' 模式 (推荐使用 BIOS v3.10.0)。它必须在 SCSI 卡的 BIOS 菜单中激活。然后你只需等待并看到类似这样的内容


... IDLUN供应商产品Rev大小Sync总线HD#
... 0 0 QUANTUMATLAS10K2DDD617GB 160 16 80h
... 1 0 QUANTUMATLAS10K2DDD617GB 160 16 81h
... 2 0 IBMDDRSDC1B4GB 80 16 82h
... 3 0 IBMDNESSAH09GB 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。

6.2 如何交换 Linux 和 NT 启动?

好的,但是 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

6.3 杂项

我刚刚插入了一个新的 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,你必须重新评估它们。


下一页 上一页 目录