mknod コマンドは、キャラクタデバイス・ブロックデバイス・名前付きパイプ(FIFO)などの特殊ファイルを作成 するためのコマンドです。
通常のファイルやディレクトリとは異なり、デバイスファイルを手動で作成する場面(カーネル開発やデバッグなど)で利用されます。
多くのディストリビューションでは udev が自動で /dev/ 以下を管理するため、日常利用ではあまり使われません。
構文(Syntax)
mknod [オプション] 名称 {b|c|p} [メジャー番号 マイナー番号]
主な引数と種類
b: ブロックデバイス(例: HDD, USBメモリなど)cまたはu: キャラクタデバイス(例: 端末, シリアルポートなど)p: 名前付きパイプ(FIFO)
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 標準的にデバイス/パイプを作成 | mknod mypipe p |
-m MODE | パーミッションを指定 | mknod -m 666 /dev/mydev c 240 0 |
--help | ヘルプを表示 | mknod --help |
--version | バージョン情報を表示 | mknod --version |
実行例
名前付きパイプを作成
mknod mypipe p
ls -l
出力例:
prw-r--r-- 1 user user 0 Aug 21 16:30 mypipe
キャラクタデバイスを作成(例: メジャー番号 1, マイナー番号 5 → /dev/zero 相当)
sudo mknod /dev/myzero c 1 5
ls -l /dev/myzero
出力例:
crw-r--r-- 1 root root 1, 5 Aug 21 16:31 /dev/myzero
ブロックデバイスを作成(例: メジャー番号 8, マイナー番号 1 → /dev/sda1 相当)
sudo mknod /dev/mysda1 b 8 1
パーミッションを指定して作成
sudo mknod -m 660 /dev/mychardev c 240 0
エラー例(権限不足)
mknod /dev/mytest c 1 3
出力例:
mknod: '/dev/mytest': Permission denied
関連コマンド
mkfifo: 名前付きパイプを作成(mknod pの簡易版)ls -l /dev: デバイスファイルを確認udevadm: デバイス管理の仕組みを操作
備考
mknodは root 権限が必要 です(特に/dev以下にデバイスファイルを作る場合)。- 実際のシステムでは
udevやmdevが自動でデバイスノードを管理するため、手動で使うことは少ないです。 - 名前付きパイプを作りたいだけなら、
mkfifoを使う方が推奨されます。
参考
- manページ: man7.org mknod(1)
- Linux Device List (MAJOR/MINOR 番号表): https://www.kernel.org/doc/html/latest/admin-guide/devices.html

コメント