mknod - 特殊ファイルを作成する

スポンサーリンク

mknodコマンドは特殊ファイル(special file)を作成するコマンドになります。

特殊ファイルの例として、/dev/nullのようなデバイスファイルがあります。mknodコマンドはこのような特殊ファイルを作成することができます。

スポンサーリンク

mknodコマンドの構文

mknodコマンドの基本的な構文

 

name:ファイル名

type:

typeの種類

記号 種類
b ブロック型特殊ファイル(block special file)
c 文字型特殊ファイル(character special file)
p パイプ(pipe)

major:メジャーデバイス番号

minor:マイナーデバイス番号

 

 

 

デバイスファイル

例えば、/dev/nullのようなデバイスファイルを確認してみます。

所有者とグループの後にカンマで区切られた数字があります。これは、メジャーデバイス番号とマイナーデバイス番号を表します。

メジャーデバイス番号は、メモリーデバイス(Memory devices)やRAMディスク(RAM disk)、フロッピーディスク(Floppy disks)、キーボードデバイス(Raw keyboard device)のような大きなクラスを表します。

マイナーデバイス番号は、そのメジャーデバイス番号のクラスからの具体的なデバイスについての番号を表します。

規定されているデバイスリストはThe Linux Kernel documentationのLinux allocated devicesを参考にすることができます。例えば、文字型でのメジャーデバイス番号1は以下のように参照することができます。

文字型でのメジャーデバイス番号の1、マイナーデバイス番号の3は/dev/nullであると参照できます。

 

また、文字型特殊ファイルは、キーボードやマウス、プリンタ、ディスプレイ等のデバイスが対象であり、入出力が行われたら、即時に動作を行うようなデバイスに対してのファイルになります。
一方で、ブロック型特殊ファイルは、ディスクなどのデバイスが対象であり、ブロック単位の入出力で、データのバッファを使用するデバイスに対してのファイルになります。

 

 

 

mknodコマンドの利用例

特殊ファイルの作成

/dev/zeroはデバイスリストより、文字型でメジャーデバイス番号が1、マイナーデバイス番号が5になります。これをmknodコマンドで作成すると/dev/zeroと同じような特殊ファイルを作成することができます。

コマンド例

実行結果

 

lsコマンドのアクセス権限の前にあるcは文字型特殊ファイルを表します。
また、bの場合はブロック型特殊ファイルを表します。

 

 

 

パイプの作成

mknodコマンドでtypeにpを指定すると名前付きパイプを作成することができます。名前付きパイプはmkfifoコマンドで作成することも可能です。

コマンド例

実行結果

 

lsコマンドのアクセス権限の前にあるpは名前付きパイプを表します。

 

 

 

ファイル作成時にアクセス権限を設定
(-mオプション)

-mオプションを用いるとアクセス権限が設定された状態で作成できます。コマンド例では、すべてのユーザが読み込みと書き込み権限をつけます。

コマンド例

または

実行結果

 

 

 

参考

GNU Coreutils: mknod invocation