web-dev-qa-db-ja.com

sysfsから/ devエントリを作成できません。そのようなデバイスやアドレスはありません

Linux2.6の古いバージョンを実行しているある種のホームエンターテインメントシステムがあります。 SATA> USBブリッジシステムといくつかのUSBポートがあります。私がやりたいのは、ネットワーク接続ストレージとして使用することです。

幸いなことに、オープンでアクセス可能なtelnetサーバーが実行されています。

問題は、カーネルもinitシステムもどこにあるのかわからないことです。ボックスはBusyBoxを実行しています。

ボードにはフラッシュチップが1つあります。しかし、ブロック内のsysfsの下に/複数のフラッシュチップが表示されます:

/sys/block # ls
...
mtdblock0  mtdblock2  mtdblock4
mtdblock1  mtdblock3

なぜそれなのか?

次に、それらの/devエントリを作成して、それぞれをUSBフラッシュドライブにダンプして分析できるようにします。

だから私はこれをしました:

/sys/block # cat /sys/block/mtdblock0/dev
31:0

そして..

mknod /dev/mtdblock0 c 31 0

これは0で終了し、デバイスをテストするために生データを読み取ろうとします。

/sys/block # cat /dev/mtdblock0 
cat: /dev/mtdblock0: No such device or address

何故ですか? ddも同じことを言っています。 /proc/devicesにエントリがあります。

/sys/block # cat /proc/devices 
Character devices:
  1 mem

{ ... }

Block devices:
  1 ramdisk
  7 loop
  8 sd
 31 mtdblock

{ ... }
1
Gala
mknod/dev/mtdblock0 c 31 0

キャラクターデバイスを作成しました。ブロックデバイスが必要でした。したがって、bコマンドではcの代わりにmknodを使用してください。

ブロックデバイス番号と文字デバイス番号は独立しています。ブロックデバイス31:0は、キャラクターデバイス31:0とは無関係です。カーネルにはキャラクターデバイス31:0のドライバーがないため、「そのようなデバイスまたはアドレスはありません」というエラーが発生します。