mknod – デバイスファイルや名前付きパイプを作成するコマンド

生成・削除

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 : デバイス管理の仕組みを操作

備考

  • mknodroot 権限が必要 です(特に /dev 以下にデバイスファイルを作る場合)。
  • 実際のシステムでは udevmdev が自動でデバイスノードを管理するため、手動で使うことは少ないです。
  • 名前付きパイプを作りたいだけなら、mkfifo を使う方が推奨されます。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント