3

chroot 環境でプログラムを実行しようとしています/dev/randomが、リソースとして必要です。手動でそれを実行ls -lしてからファイルを再度作成できますがmknod c xx yy、自動にする必要があり、これらのバージョン番号はLinuxバージョンから別のバージョンまで一定であるとは思わないため、次の質問があります:

/dev/randomのマイナー番号とメジャー番号を抽出して mknod で使用する bash スクリプトを作成するにはどうすればよいですか? 使用できますls -lが、その部分文字列を抽出する方法がわかりません...

の正確な戻り値ls -l /dev/randomは次のとおりです。

crw-rw-rw- 1 root root MINOR, MAJOR mars  30 19:15 /dev/random

抽出したい 2 つの数値は MINOR と MAJOR です。ただし、ls と mknod を使用せずにノードを作成する簡単な方法があれば、それをいただければ幸いです。

4

3 に答える 3

5

次のコマンドを使用して、メジャー デバイス番号とマイナー デバイス番号を取得できますstat

MINOR=`stat -c %T /dev/random`
MAJOR=`stat -c %t /dev/random`

その後、次を使用してデバイス ノードを作成できます。

mknod mydevice c "$MAJOR" "$MINOR"

別のアプローチ (デバイス番号の解析を必要としない) はtar、次のデバイス ファイルの詳細を含むアーカイブを作成するために使用します。

cd /dev
tar cf /somewhere/devicefiles.tar random null [any other needed devices]

それから

cd /somewhere/chroot-location
tar xf /somewhere/devicefiles.tar

この後者の方法には、GNU 拡張である-cto オプションに依存しないという利点があります。stat

于 2015-03-30T13:32:53.630 に答える