ファイルシステムなしでファイルが存在できますか?

ファイルシステムなしでファイルが存在できますか?

ファイルシステムについて読んでいましたが、いくつかの質問が浮上しました。

Q:ファイルがunix / linuxの必須部分(つまり、プロセス/procまたはデバイスファイルを表す/dev)の場合はどうなりますか? 」すべてがファイルです'、ファイルシステムのコンテキストの外に存在しますか?一部のファイル(ネットワークソケットファイルやブロックデバイスファイルなど)はファイルシステムから分離されており、オペレーティングシステム自体の一部のように感じます。

次の質問:unix / linuxはファイルシステムなしで実行できますか?たとえば、Linuxシステムでセカンダリストレージに手動でアクセスできますか?

ベストアンサー1

はい。そしていいえ。おそらく。

すべてではないはいファイル、明らかにハードドライブは、ハードドライブ自体を含むファイルシステムを含むパーティションを含めることはできません。ただ多くのことがあります。アクセシビリティ渡す名前ファイルシステムツリーを通して表示されます。

ファイルシステム(論理ファイルシステムまたはext4などのデータ構造の意味で特定のファイルシステム)に関する限り、特定のファイルは特定の番号付きデバイスの「デバイスノード」として表示されます。ただし、その機能は別々のドライバによって実装されます。プロセスがそれにアクセスすると、オペレーティングシステムはファイルシステムではなく適切なドライバへのアクセスを送信します。参照、ポインタなどと考えてください。

これを念頭に置けば、例えば必須ではないことを容易に理解する/procことができる。それなしでシステムが動作し、プロセスを実行できます。あなたはそのプロセスを見るためのそのような方法はありません。ただしfork()kill()などのものは、wait*()一部のファイルシステム名ではなくPIDでプロセスを参照するため、機能し続けます。通常、ネットワークソケットも名前付きファイルとして表示されません。 Unixドメインソケットはこれを実行できますが、IIRCは必要ありません。たとえば、TCPやUDPソケットの場合はそうではありません。ただし、Webソケットは次のように表示されます。ファイル記述子プロセスとread()システムwrite()コールは、パイプまたは「実際の」ファイルと同じように機能します。したがって、ある意味では、ネットワークソケットはファイルのように歩き、話し、厄介ですが、ネットワークプロトコルはディスクにビットを格納することに大きな関係はありません。

しかし、私が知っている限り、実際に名前付きデバイスノードなしでランダムハードドライブを参照する方法はありません。ハードウェアはそのままで、システムには動作するために必要なSATA / USB /すべてのドライバがまだありますが、そうするように指示することはできません。ファイルシステムをマウントし、ファイルシステムが存在するデバイスを指すデバイスノードを削除することもできます。デバイスノードは一方向なので、ここでは問題はありません。ユーザースペースアクセスデバイス。

「ファイルシステムなしでUnix / Linuxを実行できますか?」と尋ねます。まず、Linuxは実行する実行可能ファイル(実行を終了するファイルinit)を見つけてユーザースペースから起動するため、ファイルシステムがないと実行できません。ただし、このファイルシステムは通常のディスクドライブ上のファイルシステムである必要はなく、カーネルイメージに含まれるデータに基づいてカーネルによって設定された特別なrootfsファイルシステムである可能性があります。 (しかし、rootfsを削除することはできません。空の場合でも常に存在するため、カーネルは何もマウントされていないファイルシステムのアイデアを処理する必要はありません。)ramfs-rootfs-initramfs.txtrootfsの詳細については、カーネルのドキュメントを参照してください。

一部の仮想オペレーティングシステムはファイルシステムなしで実行できると仮定することができますが、たとえばシステムコールにはファイルexecve()名が必要なため、実行中のプログラムが何であれ他のプログラムを起動できません。実行中のプログラムは別の方法でロードする必要があります。 )、指定されたデバイスノードがなければ、リポジトリにアクセスすることも困難です。とにかく他のUnixenとあまり変わらないようです。

Linuxでは、起動時にrootfsで単一のユーザースペースプログラムを起動し、rootfsを消去し、他のファイルシステムをマウントしない奇妙な単一目的のシステムを設計することができます。これはファイルシステムがない状態にできるだけ近く、たとえばプログラムはまだ実行され、ネットワークにアクセスできます。しかし、実用的な用途があるかどうかは疑わしいです。通常どおり開いているファイルは閉じられるまで存在し続けるため、その名前を削除することはあまり役に立ちません。

また、見ることができますLinuxカーネルを実行するにはファイルシステムが必要ですか?、上記の回答の一部です。 「すべてはファイルです」という注文の詳細については、以下を参照してください。この回答存在する「すべてがファイルです」の一般人の説明 - Windowsとどう違いますか?

おすすめ記事