なぜLinuxにマウントするのですか?

なぜLinuxにマウントするのですか?

Linuxのインストールが何であるかを理解し、デバイスファイルを理解します。しかし、なぜインストールするのかわかりません。

例えば、この質問への回答, 次のコマンドを使用します。

mount /dev/cdrom /media/cdrom

CDROMデバイスをマウントしており/media/cdrom、最後に次のコマンドを使用してCDROMファイルにアクセスできます。

ls /media/cdrom

これにより、CDROMの内容が一覧表示されます。

インストールを完全にスキップして次のことを試してみてはいかがでしょうか?

ls /dev/cdrom

CDROMの内容が一覧表示されます。答えの1つが次のとおりです。Linuxはこう設計されていますところで、どうしてこう設計したのでしょうか?/dev/cdromディレクトリに直接アクセスしないのはなぜでしょうか。

答え1

1つの理由は、ブロックレベルのアクセスがls利用可能なものより低いレベルであるためです。/dev/cdromまたは、dev/sda1CD ROMドライブとハードドライブのパーティション1にすることもできますが、ISO 9660 / ext4を実装しません。デバイスファイル

マウントが決定するものの1つは、rawアクセスの使用方法、つまりどのファイルシステムロジック/ドライバ/カーネルモジュールが読み取り/書き込みを管理またはls /mnt/cdrom読み取る必要があるブロックに変換するか、そのブロックの内容を解釈して次のようなことを防ぐ方法です。file.txt

他の場合は、この低レベルのアクセスで十分です。シリアルポート、USBデバイス、tty端末、その他の比較的簡単なデバイスを読み書きしました。デフォルトでは、ファイルinodeの検索、ストレージブロックの検索、全ブロックの読み取り、変更操作を含む可能性があるext4ロジックを再実装する必要があるため、テキストファイルを編集するために/ dev / sda1で手動で読み取り/書き込みを試みません。 、ブロック全体を書き込んで、inodeを更新するか(おそらく)すべてのログに書き込みます。とても難しいです。

これを直接確認する1つの方法は、次のことを試すことです。

[root@ArchHP dev]# cd /dev/sda1
bash: cd: /dev/sda1: Not a directory

/devはディレクトリであり、cd必要なものは何でもできますls/dev/sda1ディレクトリではなく、カーネルがデバイスの「ハンドル」として提供する特別な種類のファイルです。

バラよりデバイスファイルのWikipediaエントリより深いケアのために

答え2

簡単に言えば、オペレーティングシステムはデバイスのファイルにアクセスする方法を知る必要があります。

mount単に「ファイルへのアクセスを許可する」よりも、ドライブ上のファイルシステムが読み取り専用か読み取り/書き込みアクセスであるかをオペレーティングシステムに通知します。

/dev/cdrom低レベルのデバイスであり、オペレーティングシステムの機能はそれにアクセスする方法がわかりません...奇妙なフォーマットのCDROM(またはオーディオCD)を挿入したと想像してください。lsどのファイルがあるのか​​、どうすればわかりますか? CD-ROMに最初に「インストール」せずに?

これは、多くのオペレーティングシステム(一部のディストリビューションやグラフィックインターフェイスのLinuxを含む)で自動的に発生しますが、これは他のオペレーティングシステムがドライブを「マウント」しないという意味ではありません。

答え3

私はそれを歴史的な理由と呼びます。他の答えが間違っているわけではありませんが、物語にはもっとたくさんあります。

Windowsの比較:Windowsは、単一のコンピュータ、シングルユーザーのオペレーティングシステムで始まりました。そのコンピュータにはおそらくフロッピードライブとハードドライブだけがあり、ネットワーク接続も、USBも、何もなかったでしょう。 (Windows 3.11には基本的なネットワーキング機能があります。Windows 3.1いいえ.)

Windowsは非常にシンプルでシンプルな設定で誕生しました。多くの問題なく、毎回すべて(両方のデバイス)を自動インストールするだけです。

これとは対照的に、Unixは最初から複数のユーザーを持つサーバーネットワークで実行するように設計されています。

Unixの設計決定の1つは、物理ディスクがどのくらいのシステムに分散されているのか、どのような種類のディスクであるのか、何十人ものユーザーのどちらに関係なく、ファイルシステムがエンドユーザーに統合されたオブジェクトとして現れる必要があるということです。マシンからアクセスされます。ユーザーファイルの論理パスは、そのファイルの物理的な場所が一晩変更されても(サーバーのメンテナンスなど)、同じままです。

これらのファイルが格納されている物理デバイスから論理ファイルシステム、ファイルパスを抽象化します。サーバーAは通常/ homeをホストしますが、サーバーAにメンテナンスが必要であるとします。サーバーAをアンインストールして/homeにバックアップサーバーBをインストールすると、管理者以外は誰も知りません。
(他の物理デバイスに異なる名前(C:、D:など)を付けるWindowsルールとは異なり、これはUnixが求めている透明性に反します。)

そのような環境では、目に見えるすべてをただ収めることはできません。

大規模なネットワークでは、ディスクやコンピュータに障害が発生することがよくあります。マネージャー必要あるコンピュータを制御してシャットダウンし、別のコンピュータが透過的に同じファイルをホストするなど、何かがいつどこにインストールされたかを知ることができます。

そのため、歴史的な観点から見ると、WindowsとUnixは異なる背景から来ました。必要に応じて文化茶と呼ぶことができます。

  • Unixは、管理者がネットワーク上の何十ものストレージデバイスのうち、マウントを制御する必要がある環境で生まれ、管理者はどこで何をマウントするかを決定する必要がありました。
  • Windowsは管理者がいなく、ユーザーが自分のファイルがフロッピーディスクにあるのか、それともハードドライブにあるのかを知るための2つのストレージデバイスしかない環境で生まれました。
  • (もちろん、Linuxはスタンドアロンのオペレーティングシステムとして生まれましたが、最初から家庭用コンピュータでUnixをできるだけ似ているように明示的に設計されています。)

最近では、オペレーティングシステムが互いに近づいています。

  • Linuxはスタンドアロン設定でよく使用されるため、より多くの単一コンピュータ、シングルユーザー機能(自動マウントなど)を追加します。
  • Windowsはセキュリティ、ネットワーキング、マルチユーザーサポートなどをさらに追加し、ネットワーキングがより一般的になるにつれて、Microsoftはサーバー用のオペレーティングシステムも開発し始めました。

しかし、これらの2つが異なる伝統の結果であることは、まだ簡単に理解できます。

答え4

質問のタイトルは次のとおりです。なぜLinuxにマウントするのですか?

この問題を説明する1つの方法は次のとおりです。mountLinuxでファイルシステムを使用できるようにするには、なぜ明示的なコマンドを実行するのですか?

答えは:私たちはそうではありません。

ファイルシステムを明示的にマウントする必要はなく、自動的に実行するように設定できます。Linuxディストリビューションは、WindowsやMacなどのほとんどのデバイスですでにこれを実行します。

だからこれはおそらくあなたが尋ねたかったのではないでしょう。

2番目の説明:なぜ私たちは時々mountLinuxでファイルシステムを使用できるように明示的なコマンドを実行する必要がありますか? オペレーティングシステムを作成しない理由いつも私たちのためにこれを行い、ユーザーには隠しますか?

これは、あなたが質問したときに質問テキストで読んだ質問です。

インストールを完全にスキップして、次のことを試してください。

ls /dev/cdrom

そしてCD-ROMの内容をリストしますか?

おそらくあなたは次のことを意味します:なぜあなたはコマンドで次のことをしないのですか?

ls /media/cdrom

今は何ですか?

さて、この場合、/dev/cdromデバイスファイルではなくディレクトリツリーになります。したがって、実際の質問は次のようになります。もともとデバイスファイルが必要なのはなぜですか?

すでに提供されている回答に回答を追加したいと思います。

ユーザーがデバイスファイルを表示できるのはなぜですか?

CD-ROMまたはファイルを保存する他のデバイスを使用するたびに、CD-ROM内のすべての内容をファイルのディレクトリツリーとして解釈するソフトウェアが使用されます。lsCD-ROMのファイルにアクセスする他の種類のコマンドやアプリケーションを使用するたびに呼び出されます。このソフトウェアは、CD-ROMにファイルを書き込む特定のファイルシステム用のファイルシステムドライバです。ファイルシステム内のファイルのリスト、読み込み、書き込みのたびに、そのデバイスで対応する下位レベルの読み書き操作が実行されることを確認することがソフトウェアの使命です。ファイルシステムを使用するたびに、mountデバイスが使用するファイルシステムドライバをシステムに通知します。コマンドを使用してこの操作を明示的に実行するかmount、自動的に実行するようにオペレーティングシステムに任せる場合でも、これは実行され、ファイルシステムドライバソフトウェアが最初に必要です。

ファイルシステムドライバはどのように動作しますか?答え:デバイスファイルを読み書きする方法でこれを行います。なぜ?あなたがすでに言ったように、答えは次のとおりです。 Unixはそのように設計されています。 Unixでは、デバイスファイルはデバイスの一般的な低レベルの抽象化です。特定のデバイス用の実際のデバイス固有のソフトウェア(デバイスドライバ)は、デバイスファイルの操作としてデバイスのオープン、クローズ、読み取り、および書き込みを実装する必要があります。これにより、上位レベルのソフトウェア(ファイルシステムドライバなど)が個々のデバイスの内部動作を理解する必要がなくなります。低レベルデバイスドライバとファイルシステムドライバは、互いに対話する共通の方法(デバイスファイルの用途)に同意する限り、異なる人が別々に作成できます。

したがって、ファイルシステムドライバにはデバイスファイルが必要です。

しかし、なぜ一般ユーザーはデバイスファイルを見ることができますか?答えは、Unixがオペレーティングシステムのプログラマのために設計されているということです。ユーザーがデバイスドライバとファイルシステムドライバを作成できるように設計されています。実際にはそう書いています。

Linuxでも同様です。独自のファイルシステムドライバ(またはデバイスドライバ)を作成してインストールしてから使用できます。これにより、Linux(またはUnixの他のバリエーション)を簡単に拡張できます(実際にLinuxが誕生した理由でもあります)。ある時点で、誰かがそれをサポートし、機能させ、Linuxに貢献するコードを書くことができます。

デバイスファイルを使用すると、これが簡単になります。

関連情報