Como criar arquivos de dispositivos manualmente usando o mknod?

2

Linux 2.6.26.5 incorporado. Eu preciso montar manualmente o sistema de arquivos raiz do shell busybox (initramfs). Como esse kernel do Linux não usa o devtmpfs, eu preciso criar os nós de dispositivos básicos manualmente, use mknod ( /dev/null , /dev/zero , dev/mtdblock {0-10}, ttys ). Não tenho certeza sobre o formato correto para /dev/mtdblock e ttys . Devo criar nós para / dev / mtdblock e / dev / mtd? O dispositivo cria 11 partições MTD em nand0. Onde encontrar os números maiores e menores atribuídos a um dispositivo? A mesma pergunta para ttys: o que é o comando mknod correto para 5 /dev/tty e 4 tty - eles estão em lugares diferentes?

mknod -m 666 tty c 4 0
mknod -m 666 /dev/tty c 5 0

Editar: partições, dispositivos e sistemas de arquivos

# cat /proc/partitions
major minor  #blocks  name

  31     0        384 mtdblock0
  31     1        128 mtdblock1
  31     2      20352 mtdblock2
  31     3       7168 mtdblock3
  31     4      18816 mtdblock4
  31     5       2048 mtdblock5
  31     6       1024 mtdblock6
  31     7        512 mtdblock7
  31     8        128 mtdblock8
  31     9        512 mtdblock9
  31    10        512 mtdblock10
# cat /proc/devices
Character devices:
  1 mem
  2 pty
  3 ttyp
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 89 i2c
 90 mtd
108 ppp
128 ptm
136 pts
153 spi
204 ttyJ
254 cordless

Block devices:
  1 ramdisk
 31 mtdblock
 93 nftl
    
por triwo 04.12.2017 / 13:07

2 respostas

2

Arquivos de dispositivos são essencialmente uma tabela no kernel. Um array C.

Mais exatamente, uma estrutura em árvore de dois níveis de arrays C: o nível superior para os números principais e o inferior para os menores.

Os drivers (e o núcleo do kernel) podem registrar os manipuladores de driver para eles. Um driver usa sempre um número maior. Por exemplo, o software raid ("md") usa o bloco principal 9.

Você pode obter a lista dos dispositivos de bloco e char atualmente registrados nos arquivos /proc/devices .

A resposta final está no código fonte do kernel, existem "(un) register_block_device" ou chamadas similares do núcleo do kernel. Encontre-os, grep para eles, e assim você pode obter uma lista completa.

    
por 04.12.2017 / 13:38
0
por 04.12.2017 / 13:10