mknodは何をしますか?

mknodは何をしますか?

それではmknod、このコマンドは何をしますか?

/dev/random$ mknod -m 666 random c 1 8

私はそれが-m権限を指定し、mknod通常はファイル、ディレクトリ、デバイス、fifoなどになることができるファイルシステムを作成することを知っていますinode。しかし、最後の3つのパラメータが何をしているのかは本当に理解していません。

ベストアンサー1

最後の3つのパラメータはtype、major、およびmajorです。デバイスが実際に何を表すかを決定します。名前は慣例ですが、機能を決定しません。作ってみると、まだType、Major、Minorが言うほどの長さ/dev/wubbalubbadubdubです。/dev/random

タイプcは文字デバイスです(ブロックデバイスとは反対)。

メジャー/マイナー数字は本質的にマジックナンバーです。関連カーネル文書を参照する以外に、これを理解する他の方法はありません。

https://www.kernel.org/doc/Documentation/admin-guide/devices.txt

したがって、あなたの場合には、次のように記録される文字デバイスメジャー1、マイナー8があります。

   1 char   Memory devices
   ⇑MAJOR ⇓MINOR = /dev/name
          1 = /dev/mem      Physical memory access
          2 = /dev/kmem     Kernel virtual memory access
          3 = /dev/null     Null device
          4 = /dev/port     I/O port access
          5 = /dev/zero     Null byte source
          6 = /dev/core     OBSOLETE - replaced by /proc/kcore
          7 = /dev/full     Returns ENOSPC on write
          8 = /dev/random   Nondeterministic random number gen.
          9 = /dev/urandom  Faster, less secure random number gen.
         10 = /dev/aio      Asynchronous I/O notification interface
         11 = /dev/kmsg     Writes to this come out as printk's, reads
                    export the buffered printk records.
         12 = /dev/oldmem   OBSOLETE - replaced by /proc/vmcore

それはすべてです。あなたがそれをしたい場合は/dev/random使用する必要があります。これが歴史的にカーネルで列挙された方法です。c 1 8/dev/urandomc 1 9

ほとんどの場合、カーネル、devtmpfs、udev、またはディストリビューションによって提供される静的/dev構造体によって提供されるデバイスノードを使用します。これを直接生成する必要はほとんどなく、外部にもヘルパーがあるかもしれません。正しいマジックナンバーを自分で把握する必要はありません。

mknodを使用してFIFOを作成することもできますが、mkfifoは使いやすいです。

おすすめ記事