beaglbone 用のカスタム イメージを作成しようとしています。機能の 1 つとして、openvpn が有効になっています。問題は、rootfs の作成時に次のように作成したにもかかわらず、最初の起動時に /dev/net/tun ファイルが存在しないことです。
mkdir -p /dev/net
chroot rootfs/ mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
同じ方法で作成すると、beaglbone システムにログインした状態のままになり、openvpn が機能します。そこで疑問なのは、このファイルの保守は誰が担当するのか、カスタム systemd サービスを使用する以外に、システムで自動的に作成するにはどうすればよいのかということです。
ありがとう!
答え1
ルートファイルシステムの/devの内容は、何にも使用されません。起動初期には、devtmpfs仮想ファイルシステムは /dev にマウントされ、他のマウントされたファイルシステムと同様に、以前の内容は見えなくなります。この時点以降、/dev で表示されるファイルは、a) カーネル自体によって作成されたファイル、または b) 各ブート プロセス中にサービスによって作成されたファイルのみです。
モジュラー カーネル (「tun」がモジュールの場合) では、特定のデバイス ノードが と の組み合わせによって事前に作成されkmod-static-nodes.service
ますsystemd-tmpfiles-setup-dev.service
。
- kmod-static-nodes は /lib/modules を読み取り、事前に作成するデバイス ノードのリストを生成します。
- systemd-tmpfiles は、「tmpfiles.d」処理の一部としてそれらを作成します。