Números principais e secundários de uma partição

1
$ stat  new
  File: ‘new’
  Size: 928         Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d  Inode: 28188755    Links: 1
Access: (0622/-rw--w--w-)  Uid: ( 1000/       t)   Gid: ( 1000/       t)
Access: 2015-12-19 06:33:07.842559147 -0500
Modify: 2013-06-11 12:54:44.944836000 -0400
Change: 2015-03-25 11:15:20.778708140 -0400
 Birth: -

a página de manual de stat diz que Device é o "número do dispositivo" em formato hexadecimal ou decimal.

Shadur diz:

A Device id is the combination of major and minor number that identifies that particular block device. In your case, '804' identifies the fourth partition of the first SCSI-like drive located according to the BIOS. In traditional terms, this would be /dev/sda4.

Parece que Device é de fato a combinação de números maiores e menores da partição na qual o arquivo new está:

$ ls -l /dev/sda4
brw-rw---- 1 root disk 8, 4 Oct 12 15:44 /dev/sda4

Se eu estiver correto, o número principal 8 identificará o driver da partição e o número menor 4 identificará o dispositivo que é a partição.

Mas como posso saber que Device: 804h identifica a quarta partição da primeira unidade semelhante a scsi?

    
por Tim 21.01.2016 / 19:03

1 resposta

1

Bem, o hex 804 é na verdade dois bytes, geralmente escritos como 0x0804 . O primeiro byte é 0x08 (o número "principal"), o segundo é 0x04 (o número "menor"). Convertendo-os em decimal, é de onde vem 8, 4 .

Você pode descobrir o que o 8 significa de /proc/devices , o que dá ao dispositivo de bloco 8 como sd , que é o disco SCSI. É o primeiro ali, que é como você sabe que é o primeiro. 8,0 é sda, 8,1 é sda1, 8,2 é sda2, etc.

Se você olhar através da documentação do kernel - Documentation/devices.txt - acontece que o driver sd na verdade, apenas originalmente permitido 15 partições; 8,16 é / dev / sdb (e 8,17 é / dev / sdb1, 8, 32 é / dev / sdc, etc.). Se você exceder esse limite, números adicionais serão alocados dinamicamente.

Na verdade, o nome da entrada /dev é decidido por udev e é controlado pela configuração do udev (embora o kernel sugira um padrão e quase todo mundo o use.) A alocação estática dos números de dispositivos é principalmente um histórico estranheza - não é realmente necessário em sistemas que executam o udev, exceto por alguns dispositivos críticos para inicialização.

    
por 21.01.2016 / 19:34