确保 USB 磁盘永远不会是 sda,即使从它启动

and*_*ieb 4 linux debian preseed

一些背景...

我认为这应该是一个与 linux 内核(或内核模块)相关的一般问题,尽管我在为自动安装预置 debian 时遇到了这个问题。

每次我从 USB 磁盘启动安装程序时,USB 磁盘都是 /dev/sda,但我使用的预置文件假定第一个硬盘(在这种情况下是 sata)应该是 /dev/sda。我正在使用相同的系统进行 pxe 网络安装,我希望它们保持一致。我还担心,如果我编写了一个预置配置,假设第一个磁盘是 sdb,那么由于某种原因,它可能不会在某个时候出现。

我尝试编写 udev 规则,将 USB 磁盘的设备名称更改为“INSTALLMEDIA”,这似乎有效,但是它不会导致 SATA 磁盘以 sda 启动,它们仍然以 sdb 启动。

我的问题...

什么决定了磁盘的发现和命名顺序?

如果有的话,我能做些什么来控制它?

如果我不能做任何事情来控制它,从 USB 启动时假设 USB 磁盘或多或少可以保证是 sda 并且第一个 SATA 磁盘始终是 sdb 是否安全?

Kvi*_*sle 5

我所知道的这个问题最可靠的答案是使用 udev 可以为您创建的较新的符号链接。Udev 枚举磁盘驱动器,并用设备创建几个树 - 为您解释它们是什么类型的设备。

它位于 /dev/disk 中。

你有,顺便说一句:

/dev/disk/by-path/pci-0000:00:1a.0-usb-0:1.5:1.0-scsi-0:0:0:0-part1
/dev/disk/by-path/pci-0000:00:1a.0-usb-0:1.5:1.0-scsi-0:0:0:0
/dev/disk/by-path/pci-0000:06:00.0-scsi-0:0:0:0
/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0-part2
/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part2
/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0-part1
/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part1
/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0
/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0
Run Code Online (Sandbox Code Playgroud)

例如,这清楚地告诉您该设备是否是 USB 设备。

  • 您在 /dev/disk 目录中还有其他查找方法 - 也许 by-id 或 by-label 对您有用? (3认同)