Рассматриваемый fork
является частью механизма, запускающего strace
; он завершился к моменту начала трассировки.
Первый диск /dev/sda
является8:0
(основным :второстепенным ), но старший номер 8 также содержит следующие 15 дисков(Documentation/devices.txt
в исходном коде ядра):
8 block SCSI disk devices (0-15)
0 = /dev/sda First SCSI disk whole disk
16 = /dev/sdb Second SCSI disk whole disk
32 = /dev/sdc Third SCSI disk whole disk
...
240 = /dev/sdp Sixteenth SCSI disk whole disk
Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
Остальные для остальных ваших дисков (старшие номера 66 -71 и 128 -134 аналогичны, и схема разбиения у всех одинаковая):
65 block SCSI disk devices (16-31)
0 = /dev/sdq 17th SCSI disk whole disk
16 = /dev/sdr 18th SCSI disk whole disk
...
135 block SCSI disk devices (240-255)
0 = /dev/sdig 241st SCSI disk whole disk
...
240 = /dev/sdiv 256th SCSI disk whole disk
Что ж, у вас, вероятно, не так много дисков, и система генерирует только те узлы, которые необходимы для устройств, которые у вас есть на самом деле, так что вы не видите ничего, кроме sda
и его разделов в /dev
.
Что касается vcsa
и друзей, то они связаны с виртуальными консолями:
7 char Virtual console capture devices
0 = /dev/vcs Current vc text contents
1 = /dev/vcs1 tty1 text contents
...
128 = /dev/vcsa Current vc text/attribute contents
129 = /dev/vcsa1 tty1 text/attribute contents
...
Также обратите внимание, что /dev/vcs*
являются символьными, а не блочными устройствами. Первая буква в выводе ls
указывает, какой именно.
Просто может быть до 16 *1048576 sd
блочных устройств (, которых было бы всего 16 *256, когда dev _t был 16-битным ).
Код имеет:
for (i = 0; i < SD_MAJORS; i++) {
if (register_blkdev(sd_major(i), "sd") != 0)
continue;
majors++;
blk_register_region(sd_major(i), SD_MINORS, NULL,
sd_default_probe, NULL, NULL);
}
Чтобы зарегистрировать эти 16 старших номеров.
И:
/*
* More than enough for everybody ;) The huge number of majors
* is a leftover from 16bit dev_t days, we don't really need that
* much numberspace.
*/
#define SD_MAJORS 16
Где:
/*
* Device no to disk mapping:
*
* major disc2 disc p1
* |............|.............|....|....| <- dev_t
* 31 20 19 8 7 4 3 0
*
* Inside a major, we have 16k disks, however mapped non-
* contiguously. The first 16 disks are for major0, the next
* ones with major1,... Disk 256 is for major0 again, disk 272
* for major1,...
* As we stay compatible with our numbering scheme, we can reuse
* the well-know SCSI majors 8, 65--71, 136--143.
*/
static int sd_major(int major_idx)
{
switch (major_idx) {
case 0:
return SCSI_DISK0_MAJOR;
case 1... 7:
return SCSI_DISK1_MAJOR + major_idx - 1;
case 8... 15:
return SCSI_DISK8_MAJOR + major_idx - 8;
default:
BUG();
return 0; /* shut up gcc */
}
}
Который показывает, как распределяются основные и второстепенные.