組み込みLinux 2.6.26.5。ビジボックスシェル(initramfs)からルートファイルシステムを手動でマウントする必要があります。このLinuxカーネルはdevtmpfsを使用しないため、mknod(、、/dev/null
{ 0-10}、)を使用してデフォルトのデバイスノードを手動で作成する必要があります。との正しい形式がわからない。 /dev/mtdblockと/dev/mtdのノードを作成する必要がありますか?デバイスは、nand0に11個のMTDパーティションを作成します。デバイスに割り当てられたメジャー番号とマイナー番号はどこにありますか? ttyに関する同じ質問:正しいmknodコマンドは何ですか ? 別の場所にありますか?/dev/zero
dev/mtdblock
ttys
/dev/mtdblock
ttys
5 /dev/tty
4 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
完全なリストを取得するためにその項目を見つけてください。