web-dev-qa-db-ja.com

キャラクターデバイスファイルの作成

キャラクターデバイスファイルを作成するには?

私が試してみました cat > xxx^c

しかし、キャラクターデバイスファイルを作成できません

6
VINOTH KUMAR

Linuxが提供するmknodコマンドを使用してデバイスファイルを作成できます。

mknod <name> <type of device c:- character b:- block device etc> <major> <minor>

例:

mknod test_device c 89 1

キャラクターデバイスファイルを作成しているので、あなたの場合はcを提供する必要があります。デバイスファイルを作成した後、将来ファイルを操作する場合は、ファイルのアクセス権も変更する必要があります。

mknodの場合:

mknod <name> c <major> <minor>

「Linuxデバイスドライバー」(無料の本)を読んで、キャラクターデバイスとは何かについてのすべての詳細を理解してください。

2
gena2x

/proc/devicesで文字デバイス番号を検索します

競合を回避するための標準である、デバイス番号を動的に割り当てる文字デバイスの場合、cat /proc/devicesを使用して番号を検索します。これには次のような行が含まれます。

195 nvidia-frontend

オートメーション:

insmod /device_name.ko
dev="device_name"
major="$(grep "$dev" /proc/devices | cut -d ' ' -f 1)"
mknod "/dev/$dev" c "$major" 0

以下は、試してみるためのモジュールも含む例です。 キャラクターデバイス(またはキャラクタースペシャル)ファイルについて

Lofiコマンドを見て、目的に合っているかどうかを確認することをお勧めします。

マニュアルページの説明から

「lofiファイルドライバーはファイルをブロックデバイスとしてエクスポートします」

私が試した例

mkfile -n 512k test_file

Sudo lofiadm -a ~a6098/test_file /dev/lofi/1

ls -l /dev/lofi/1
lrwxrwxrwx   1 root     root          29 Sep 18 14:33 /dev/lofi/1 -> ../../devices/pseudo/lofi@0:1

ls -l /devices/pseudo/lofi@0:1  
brw-------   1 root     sys      147,  1 Sep 18 14:33 /devices/pseudo/lofi@0:1
0

「文字特殊ファイルが指定された」cpioファイルがある場合、ルートを使用して解凍する必要があります(Sudo cpio -idmv)。それ以外の場合、文字特殊ファイルは作成されません。

だからはい、(既存のキャラクタースペシャルファイルからコピーして)キャラクタースペシャルファイルを作成する別の方法:

a。コピーするファイルをリストしたファイルを作成します。

enter image description here

b。 cpioファイル自体を作成します(rootとして実行する必要があります)。

enter image description here

( "cpio -it"は単に一覧表示して確認するためのものです)

c。 cpioファイルから、別のディレクトリに文字ファイルを再作成します。

enter image description here

(ここではrootとして実行する必要があります。「cpio」自体がmknodコマンドを使用して特殊ファイルを作成していることがわかります)。

0
Peter Teoh