什么是“/dev/sda0”?这是一个标准的东西吗?

什么是“/dev/sda0”?这是一个标准的东西吗?

在试图理解的同时这另一个问题,我遇到了/dev/sda0被提及。

我在 Linux 方面有一些经验,并且习惯了这种方案,其中sda, sdb, ... 是设备,sda1, sda2, ... , sdb1, sdb2, ... 是分区(每个分区位于各自的设备内)。在此方案中sda0sdb0, ... 不会出现。我不记得sda0曾经见过。

仍然sda0出现在 U&L SE 上,关于超级用户和其他地方。在它出现的地方,它几乎总是第一个分区,即我希望sda1在我习惯的方案中出现的分区。

另一方面,在 Debian 10 中,我可以看到major,minor数字8,1for sda18,2forsda2等。因此,如果有人问我sda0可能是什么,我会说8,0哪个已经分配给了sda。这个推理相当于sda0sda整个设备。我猜这些数字是 Linux 特有的,在非 Linux Unix(类似)操作系统中它们可能会有所不同,因此推理可能不适用于那里。

在互联网上我发现很少有sda0作为整体设备使用的外观。但这些例子相当晦涩难懂,它们可能是由于拼写错误或某人错误造成的。

无论如何,问题是:是/曾经是/dev/sda0标准的东西吗?如果是这样,那是什么? (它可以/可能是一个完整的设备吗?)。在什么情况下这是标准的事情? (例如特定操作系统、一些旧内核、特定驱动程序、虚拟机内部、一些过时的(?)udev 配置等)。

我希望得到的答案能够给我足够的洞察力,这样下次我看到的时候/dev/sda0我就能告诉自己:“哦,这个家伙可能正在使用……”;或者也许:‘小心!前面的自定义配置'。


旁注:我还发现了 的提及/dev/hda0和一个从 开始枚举的方案hda1。我完全无法判断它是否与我观察到的密切相关(平行)/dev/sda*或只是巧合。

答案1

我不知道它/dev/sda0曾经是一个标准设备名称,即使在其他 Unix 系统上也是如此。据我所知,对 的引用sda0可能是错误,而不是自定义设置的指示。

即使在输出中对设备进行命名的情况下,用户仍然会混淆这些数字。例如,这个论坛帖子在引用的输出中明确列出了sda1sda3但标题提到了sda0。相似地,为什么我的驱动器在 grub 中被称为“(hda0,msdos5)”等,而不是您通常看到的 (hda0,5)、(hda0,sda5) 等?hda0(据我所知,它也从来不是标准设备名称),即使 Grub 使用hd0等。

Linux内核发布设备分配列表;这描述了如何处理分区:

对于分区,添加到整个磁盘设备号:

价值 设备 用法
0 /dev/hd? 整盘
1 /dev/hd?1 第一个分区
2 /dev/hd?2 第二分区
…… …… ……
63 /dev/hd?63 第63分区

SCSI 磁盘 ( /dev/sd?) 的处理方式相同:

分区的处理方式与 IDE 磁盘相同(请参阅主编号 3),只不过分区的限制为 15。

正如您所看到的,没有提供 0 编号的分区; “第 0 个”设备是整个磁盘,不带数字后缀。

(请注意,“SCSI 磁盘”,又名sd?,用于许多非 SCSI 设备;请参阅为什么CentOS将ATA总线转换为scsi总线?了解一些历史。)

答案2

我在一个没有 udev 的系统上看到了这一点,mknod 不会对你进行事后猜测(我使用过一个系统一段时间,其中放入错误的主要+次要由 makenod 以某种方式修复),并使用 2.0 内核; /dev/hda0 是整个磁盘设备。

我当时使用的系统是各种奇怪的基于软盘的发行版,即使您愿意,也无法从源代码构建;我当时主要使用 muLinux,但这不是那个,我很难再找到它。我参与社区一段时间了。所有这些的特点是它们都是手工制作的。没有标准化,没有升级,没有包管理器,什么都没有。 /dev/hda0 设备一定来自构建它的人,他相信它应该是这样的。

如果这种奇怪的命名约定出现在 udev 时代,我会感到惊讶。

答案3

目前尚不清楚您的问题是否特定于 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

答案4

简短的答案是。内核和用户空间之间的接口承诺不包括设备数字。它可以是任何数值,甚至在您重新启动到较新的内核时可能会有所不同。因此,您永远不应该依赖它们。

相关内容