mknodを使ってデバイスファイルを手動で作成するには?

mknodを使ってデバイスファイルを手動で作成するには?

組み込みLinux 2.6.26.5。ビジボックスシェル(initramfs)からルートファイルシステムを手動でマウントする必要があります。このLinuxカーネルはdevtmpfsを使用しないため、mknod(、、/dev/null{ 0-10}、)を使用してデフォルトのデバイスノードを手動で作成する必要があります。との正しい形式がわからない。 /dev/mtdblockと/dev/mtdのノードを作成する必要がありますか?デバイスは、nand0に11個のMTDパーティションを作成します。デバイスに割り当てられたメジャー番号とマイナー番号はどこにありますか? ttyに関する同じ質問:正しいmknodコマンドは何ですか ? 別の場所にありますか?/dev/zerodev/mtdblockttys/dev/mtdblockttys5 /dev/tty4 tty

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

編集:パーティション、デバイス、ファイルシステム

# 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

ベストアンサー1

デバイスファイルは本質的にカーネルのテーブルです。 ACアレイ

より正確には、C配列の2段階ツリー構造です。上位レベルは基本数字で、下位レベルは精度です。

ドライバ(およびカーネル)はドライバハンドラを登録できます。ドライバーは常に代表番号を使用します。たとえば、ソフトウェアRAID(「md」)ユーザーはマスターブロック9を使用します。

現在ファイルに登録されているブロックおよび文字デバイスのリストを取得できます/proc/devices

最後の答えは、カーネルのソースコードに「(un)register_block_device」またはカーネルコアに同様の呼び出しがあるということです。grep完全なリストを取得するためにその項目を見つけてください。

おすすめ記事