在试图理解这个其他问题时,我遇到了/dev/sda0
被提及。
我在 Linux 方面有一些经验,我习惯了这种方案,其中sda
, sdb
, ... 是设备,sda1
, sda2
, ... , sdb1
, sdb2
, ... 是分区(每个都在各自的设备内)。在这个方案sda0
中,sdb0
, ... 不出现。我不记得sda0
见过。
仍然sda0
出现在 U&L SE、Super User和其他地方。在它出现的地方,它几乎总是第一个分区,即我希望sda1
在我习惯的方案中出现的分区。
另一方面,在 Debian 10 中,我可以看到for 、for等major,minor
数字。因此,如果有人问我可能是什么,我会说哪个已经分配给. 这种推理将等同于整个设备。我猜这些数字是特定于 Linux 的,它们在非 Linux Unix(类)操作系统中可能不同,因此推理可能不适用于那里。8,1
sda1
8,2
sda2
sda0
8,0
sda
sda0
sda
在互联网上,我发现很少有sda0
作为一个整体使用的设备。这些例子虽然很模糊,但可能是由于拼写错误或某些人的错误。
无论如何,问题是:是/曾经/dev/sda0
是标准的东西吗?如果是这样,它是什么/曾经是什么?(可以/可以是一个完整的设备吗?)。在什么情况下是/是标准的事情?(例如,特定的操作系统、一些旧内核、特定的驱动程序、虚拟机内部、一些过时的(?)udev 配置等等)。
我希望得到的答案能给我足够的洞察力,所以下次我看到时/dev/sda0
我就能对自己说:'哦,这家伙可能正在使用……';或者也许:'小心!自定义配置提前'。
旁注:我还发现/dev/hda0
了从hda1
. 我完全无法判断它是否与我观察到的密切相关(平行)/dev/sda*
或只是巧合。
我不知道
/dev/sda0
曾经是标准设备名称,即使在其他 Unix 系统上也是如此。据我所知,引用sda0
可能是错误,而不是自定义设置的指示。即使在输出中命名设备的情况下,用户仍然会混淆数字。例如,这个论坛帖子在引用的输出中明确列出了
sda1
tosda3
,但标题却提到了sda0
. 同样,为什么我的驱动器在 grub 中被称为“(hda0,msdos5)”等,而不是您通常看到的 (hda0,5)、(hda0,sda5) 等?指hda0
(据我所知,它也从来不是标准设备名称),即使 Grub 使用hd0
等。Linux 内核发布设备分配列表;这描述了如何处理分区:
SCSI 磁盘 (
/dev/sd?
) 的处理方式相同:如您所见,没有提供编号为 0 的分区;“0th”设备是整个磁盘,没有数字后缀。
(请注意,“SCSI 磁盘”,又名
sd?
,用于许多非 SCSI 设备;请参阅为什么 CentOS 将 ATA 总线转换为 scsi 总线?了解一些历史。)我已经在没有 udev 的系统上看到了这一点,mknod 不会对你进行第二次猜测(我使用了一段时间的系统,makenod 以某种方式修复了输入错误的主要 + 次要),并使用 2.0 内核;/dev/hda0 是整个磁盘设备。
我当时使用的系统是各种奇怪的基于软盘的发行版,即使你想也无法从源代码构建;当时我主要使用 muLinux,但这不是那个,我很难再找到它。我参与了社区一段时间。所有这些都是手工制作的。没有标准化,没有升级,没有包管理器,什么都没有。/dev/hda0 设备一定来自建造它的人,相信它应该是这样的。
如果这个奇怪的命名约定能延续到 udev 时代,我会感到惊讶。
目前尚不清楚您的问题是否特定于 Linux,但如果不是,FreeBSD 系统将被视为系统上
/dev/da0
的第一个磁盘驱动器,至少对于 SCSI(和 USB)驱动器,以及设备驱动程序提供的其他驱动器类型设备作为类似 SCSI 的单元。ATA/SATA(以及历史上的 ATAPI)驱动器将是/dev/adaN
,其中N
>= 0。请注意,这
/dev/da0
是一个全驱动设备,而不是分区设备。单元 0 的细分将/dev/da0sX
用于 MBR 切片 (X>=1),或/dev/da0pX
(X>=1) 用于 GPT 分区。DA 是直接访问设备或随机访问的助记符,因为设备的任何块都是可寻址的。相反,FreeBSD 使用顺序访问设备
sa
形式的设备驱动节点/dev/saN
,例如磁带驱动器。简短的回答是否定的。内核和用户空间之间的接口承诺不包括设备号。它可以是任何数值,甚至在您重新启动到较新的内核时可能会有所不同。因此,您永远不应该依赖它们。