Linuxの仮想ディレクトリ構造の理解

Linuxの仮想ディレクトリ機能

初心者のLinuxユーザーは、学ぶべき膨大な情報に直面します。このターミナルとは何か?ソフトウェアのアップデートをどう実行するのか?どのディストロを選べば良いのか?これらはすべて一般的な質問です。しかし、より経験豊富なLinuxユーザーを悩ませる質問があります: Linux仮想ディレクトリシステムの各ディレクトリには何が含まれているのか?ここでは、私たちのLinux仮想ディレクトリシステムガイドを通じて、「/」から「/boot」までのすべてを取り上げます。

Linux仮想ディレクトリシステムとは?

仮想ディレクトリシステムは、コンピュータのオペレーティングシステムにおけるファイルとディレクトリの整理方法です。「仮想」と呼ばれる理由は、実際の物理コンポーネントがないからです - Windowsでは「C:」ドライブや「D:」ドライブなどがありますが、Linuxではすべての物理ディスクが仮想ディレクトリシステム内のファイルとして扱われます。これが「すべてはファイルである」というフレーズの由来です。システム内のオペレーティングシステム用に使用しているディスクさえファイルとして扱われます。

関連資料: ディレクトリの内容をリストするための便利なLinuxコマンド

仮想ディレクトリシステムの理解

ルートディレクトリ: /

非常に基本的なところから始めましょう。「/」(または「ルート」)ディレクトリは、システム内のすべてを含んでいます。cd /コマンドを実行すると、システム全体を最大限にズームアウトします。「/」ディレクトリに移動し、lsコマンドを実行すると、私が言っていることがわかります。「Documents」、「Downloads」、「Pictures」の代わりに「bin」、「dev」、「home」などが表示されます。ディストロによって少し違いはありますが、ほとんど常に存在するコアディレクトリがあります。ここからのすべてのディレクトリは、それがすべての根本であるために「/」が前に付いています - したがって「ルート」という名前になっています。

Linuxの仮想ディレクトリ Fedora

Linuxの仮想ディレクトリ Ubuntu

バイナリディレクトリ: /bin

「/bin」ディレクトリには、システム内のすべてのバイナリプログラムが格納されています。中を見ると、すでに使った一般的なコマンドであるcdlsが見つかります。これらのコマンドは、which cdwhich lsを実行することでも見つけることができます。現代のディストリビューションでは、「/bin」ディレクトリは「/usr/bin」ディレクトリにリンクされています。「/usr」ディレクトリについては後で説明しますが、簡単に言えば、システムおよび管理者向けのバイナリを「/bin」ディレクトリに、システムユーザー向けのものを「/usr/bin」ディレクトリに分けるために使用されます。

Linuxの仮想ディレクトリ Which Cd

ブートディレクトリ: /boot

「/boot」ディレクトリには、システムが起動するために必要な非常に基本的な情報が含まれています。システムにインストールされているすべてのカーネル、これらのカーネルの設定ファイル、Grubの情報など、すべてがここにあります。非常に重要なディレクトリで、システムとは別のEFIシステムパーティションとして扱われます。そのため、手動でパーティションを作成するときは、「/」と「/boot」を別々に作成する必要があります。

Linuxの仮想ディレクトリ Boot

デバイスディレクトリ: /dev

「/dev」ディレクトリには、システム内のすべてのデバイスファイルが含まれており、システム上のすべてのハードウェアコンポーネントや「null」や「random」のようないくつかの重要な仮想デバイスも含まれています。見てみると、「cpu」、「sda」、「tty」、「stderr」、「stdin」、「stdout」などのものがあることに気付くでしょう。これらは、日常的にやり取りする重要なデバイスファイルです。

Linuxの仮想ディレクトリ Lsblk

他所: /etc

これはランダムなもののためのものです。「/etc」ディレクトリ、エッツィのように発音されるこの場所には、システム内のほとんどのものの設定ファイルが見つかります。SSH、Pipewire、systemD、Firefoxなどの設定ファイルがここにあります。仮想ディレクトリシステムのゴミ箱のようなもので、非常に重要ですが、物を見つけるのが少し面倒です。

関連資料: Linuxでのソフトウェアのアンインストール後の残留ファイルを削除する方法

ホームディレクトリ: /home

「/home」ディレクトリには、ユーザーのすべての個人的なファイルが保管されています。ユーザーが作成されると、一般的に「/home」ディレクトリが与えられ、そのユーザーは自分の「/home」ディレクトリ内のファイルのみを編集する権限が与えられます。一部のユーザーには管理者権限も与えられ、これがsudoで得られる権利ですが、これはルートユーザーの権利を引き受けることを意味します。whoamisudo whoamiを順次実行すると、それが分かります。これは、最も慣れ親しんだディレクトリでしょう。

Linuxの仮想ディレクトリ Whoami

ライブラリディレクトリ: /lib, /lib32, /lib64

「/lib」ディレクトリには、「/bin」や「/sbin」(後で説明)内のプログラムが使用する特定のライブラリが含まれています。ここにはファームウェアや、カーネルの異なる部分やカーネルモジュールをインストールするための他のライブラリが保存されています。姉妹ディレクトリである「/lib32」と「/lib64」は、32ビットおよび64ビットオペレーティングシステム用のバージョンを含んでおり、基本的な「/lib」ディレクトリとほぼ同一です。

Linuxの仮想ディレクトリ Lib

メディアディレクトリ: /media and /mnt

これらは目的が同じであることが多いため、まとめて説明します。「/media」ディレクトリは、CD、DVD、またはその他のリムーバブルメディアの内容が保存される場所です。USBドライブを接続すると、ほとんどのシステムで「/media」に表示されることが確認できます。

「/mnt」ディレクトリは、より長期的なマウントに使用されます。たとえば、システムに別のSSDを追加する場合、長期的なマウントポイントを「/mnt」ディレクトリに設定できます。また、家にNASがある場合、その情報を「/mnt」ディレクトリにもマウントすることができます。

/opt

「/opt」ディレクトリには、ユーザーが使用するための追加のソフトウェアパッケージが保管されています。思ったよりもずっと小さいことが多く、私の場合はBrave、Google Chrome、Sublime Textのファイルしかありません。ソフトウェアパッケージのリポジトリを追加すると、そこで見つかることが多いです。

/proc

「/proc」ディレクトリには、ハードウェア情報や現在進行中のプロセス情報が含まれています。システムがハードウェアの状況を把握すると、それが「/proc」ディレクトリに保存されます。たとえば、cat /proc/cpuinfoコマンドを実行すると、CPUについての情報を得ることができます。それは、自分が思っていた以上に知りたいことを学ぶきっかけとなります。

関連資料: /procファイルシステムを使ってLinuxの内部を調べる

/root

これは単にルートユーザーの「/home」ディレクトリのバージョンです。ルートユーザーとして多くの作業を行う場合、そこにはさまざまなものが見つかるでしょう。

/run

「/run」ディレクトリは「/proc」と多少似ていますが、ハードウェアではなくソフトウェアに焦点を当てています。どちらも「揮発性の実行データ」と呼ばれるものを保存しており、これらのディレクトリはシステムを再起動するたびにほぼクリアされますが、OSがシステムや使用目的について学ぶ際に役立つ情報を保存します。

/sbin

「/sbin」ディレクトリには、ルートユーザーのみが利用できるべきバイナリプログラムが格納されています。たとえば、システムをシャットダウンするバイナリプログラム(poweroff)は「/sbin」に置かれるべきです。

Linuxの仮想ディレクトリ Which Poweroff

/srv

これは、実行しているWebアクセス可能なサービスに基づくサイト専用データを保持するディレクトリです。FTPやHTTPのようなものには、ここに特定の情報が保存されます。私は何も運用していないので、私の「/srv」ディレクトリは空です。

/sys

「/sys」ディレクトリには、システム内の主要なデバイスについての情報が含まれています。私のシステムでは、「/sys/dev」、「/sys/firmware」、「/sys/kernel」のようなものが見られます。これは「/dev」ディレクトリにおける重要なハードウェアデバイスの抜粋です。

Linuxの仮想ディレクトリ Sys

/tmp

「/tmp」ディレクトリは、システム内のさまざまなプログラムからの一時情報を保存するために使用されます。情報は、再起動なしで数日間この場所に保存され、他のストレージスペースを空けるために情報の一時的なロックが行われます。「/tmp」ディレクトリで多くのユーザーが何かをしなければならないことはほとんどありません。

/usr

「/usr」ディレクトリは、ますます一般的に触れられるようになっています。「/bin」や「/lib」、「/sbin」のようなディレクトリは、これらのディレクトリの「/usr」内のバージョンにリンクされています。私のシステムでllコマンドを実行すると、それを見ることができます。

それらはソフトリンクであり、リンクを解除することも可能ですが、システムは「/bin」や「/sbin」ディレクトリではなく「/usr/bin」や「/usr/sbin」ディレクトリから読み取ります。これは、現在の階層を単純化し、これらのプログラムを見つけやすくするために行われます。LinuxからUnixへの切り替えや、さまざまなバイナリの固定位置を持たないことが簡単になるため、これは便利な生活の質向上です。

/var

「/var」ディレクトリは「/tmp」ディレクトリに似ていますが、もう少し長くデータを保持します。また、ログファイルやKVM仮想マシンのディスクイメージも保存されます。

ご覧のとおり、Linuxの仮想ディレクトリシステムは、システムが使用するファイルを整理し、システムの管理と運営を簡単にすることを目的としています。もちろん、このシステムで好きなように行うことができます(これがLinuxの魅力です)が、多くのデスクトップユーザーにとっては現状のままで十分です。2021年にLinuxに最適なファイルシステムを見つけることも考慮することができます。