デバイスファイルが削除された場合はどうなりますか?

デバイスファイルが削除された場合はどうなりますか?

私は/ devの下のファイルについて全体的に理解しています。

2つのタイプ(文字/ブロック)があり、これらのファイルにアクセスするとカーネルのドライバと通信することがわかります。

特に、両方の種類のファイルに対してファイルを削除するとどうなるかを知りたいです。たとえば、ブロックデバイスファイルを削除すると、/dev/sdaどのような影響がありますか?ディスクをマウント解除しましたか?

同様に/dev/mouse/mouse0削除するとどうなりますか?マウスが動作を停止しましたか?自動的に交換されますか?

このファイルを削除できますか?仮想マシンを設定したら試してみましょう。

答え1

これは単に(特殊)ファイルです。これは実際のデバイスへの「ポインタ」としてのみ機能します。 (つまり、カーネル内のドライバモジュールです。)

一部のコマンド/サービスですでにファイルが開いている場合は、そのデバイスへのハンドルがすでに存在し、引き続き機能します。

一部のコマンド/サービスが新しい接続を開こうとすると、ファイルにアクセスしようとし、「ファイルが見つかりません」で失敗します。

通常、これらのファイルはWindowsによって埋め込まれ、udevシステム起動時やUSBデバイス接続などの特別なイベント時に自動的に生成されますが、これらのファイルを手動で作成することもできますmknod

答え2

デバイスファイルは、実際にはカーネルデバイステーブルエントリのファイルシステムエイリアスです。 "ls -l"を使用して/ devファイルを表示すると、そのファイルにメジャーとマイナーのデバイス番号があることがわかります。これらのファイルがファイルシステムから削除されたら、適切なツールを使用して特殊ファイルをカーネルデバイステーブルのエントリに再リンクして、いつでもファイルを再生成できます。 mknod(1) を参照してください。

答え3

その後、そのデバイスは開いたプログラムからのみアクセスできます。したがって、ファイルシステムをマウント解除できません。 udevを使用すると、再起動するとこれらのデバイスが復元される可能性があります。 Unixを学ぶ奇妙な方法。

関連情報