web-dev-qa-db-ja.com

デバイスファイルを削除するとどうなりますか?

/ devの下にあるファイルについておおまかに知っています。

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

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

同様に、/dev/mouse/mouse0を削除するとどうなりますか?マウスが機能しなくなりますか?自動的に置き換えられますか?

これらのファイルを削除することもできますか? VMを設定していた場合は、試してみます。

21
alpha

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

いくつかのコマンド/サービスがすでにそのファイルを開いている場合は、すでにデバイスへのハンドルがあり、引き続き機能します。

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

通常、これらのファイルにはudevが入力され、システムの起動時やUSBデバイスの接続などの特別なイベントで自動的に作成されますが、mknodを使用して手動で作成することもできます。

30
michas

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

8
Stephen M. Webb

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

3
Gerard H. Pille