OSのLinuxには、Windowsと異なり複数のディストリビューションが存在します。 利用者が用途に応じてサーバー(又はPC)にディストリビューションを選択して、インストールします。 Linuxディストリビューションのタイムライン Wikipediaを見ると その数が恐ろしく多いのが理解できます。
「Linuxディストリビューションのタイムライン」を見てわかるように2017年時点での主流の ディストリビューションは、「debian」「stackware」「RedHat」「Android」「その他」に分類されます。
Linuxは、各種サーバ(Webサーバ、Webアプリケーションサーバ、データベースサーバ、その他サーバ)に利用されるだけでなく、
WindowsOSのように個人用としてもインストールされて利用されます。
Linuxを学習するには、LinuxをパソコンにインストールしてCUIから各種コマンドを操作する事と、
デフォルトのディレクトリ階層を理解する事で身に付きます。
会社や学校で貴方が自由に操作して良い学習用のサーバ(PCでも良い)を提供されていれば、それを利用します。
貴方がメインのPCを2台所有しており、1台は潰しても(最悪壊れても)良いというPCがあれば、そのPCにLinuxをインストールします。
貴方がWindowsOSのPCを1台しか所有していない場合には、中古のPCを格安で買ってLinuxをインストールすると良いでしょう。
2017年4月時点、PCのスペックにこだわらなければノートPCで1万数千~3万円で購入できます。
LinuxのUbuntuなどは、スペックが良くないPCでもサクサク動きます。 そのため、Linuxを初めて学習する方には、最適なディストリビューションだと思っています。
Linuxを大学の情報工学や会社の研修で基礎的な内容を理解している場合には、
CentOS,Debian系を推奨します。CentOSはRedHadEnterprise系でとの互換性を目指したフリーのディストリビューションです。
大企業では、RedHadのサポート契約を結びRedHadEnterpriseを各種サーバとして導入している企業は多いです。
本頁では、LinuxのいずれかのディストリビューションがインストールされたPC又はサーバが準備されており、 貴方がそのPCを自由に操作して良い前提で説明します。
Linuxを理解するには、インストール直後のディレクトリ階層の概要を理解するのが良いでしょう。
Linuxのディレクトリ階層は、Filesystem Hierarchy Standard(FHS,ファイルシステム標準階層)にLinux系、Unix系OSの主たる
ディレクトリとその内容について定めたものです。
そのため、Linuxのディストリビューションが異なっていてもLinuxのディストリビューションそれぞれには、
どのFHSのバージョンに基づき、ディレクトリ階層を構成したかLinuxのドキュメントに定義しています。
その結果、数多くのディストリビューションがあっても主たるディレクトリ階層が同じ階層と用途になっているのは、
FHSを定めた恩恵だと言えます。
FHSには、複数のバージョンが存在します。最新のFHSのバージョンは、「3.0」になります。 先にFHS3.0に定められたディレクトリ、ファイルの内容について理解し、 次に具体的事例としてubuntu16.04のディレクトリ階層と比較します。
ubuntu16.04のディレクトリ階層を以下に示します。
FHSのファイルシステムでは、大きく2軸の観点でディレクトリ階層を構成しています。
上記2つの軸の観点と合計よ4つの分類を例に示すと以下になります。
共有可能 | 共有できない | |
---|---|---|
静的 | /usr /opt |
/etc /boot |
可変 | /var/mail /var/spool/news |
/var/run /var/lock |
ルートファイルシステムの内容は、システムのブート、リストア、リカバリ、および/または修復用に適している必要があります。
システムをブートするには、他のファイルシステムをマウントするのに十分なソフトウェアとデータがルートパーティション上に存在していなければなりません。 これには、ユーティリティ、構成、ブートローダ情報、およびその他の重要な起動データが含まれます。
/ usr、/ opt、および/ varは、他のパーティションまたはファイルシステム上に配置できるように設計されています。
システムの復旧および/または修復を可能にするために、経験豊かなメンテナから必要なユーティリティ 損傷したシステムを診断して再構築することは、ルートファイルシステム上に存在しなければなりません。
システムを復元するには、システムのバックアップから復元する 必要があるユーティリティ(フロッピー、テープなど)は、ルートファイルシステム上に存在する必要があります。
FHS3.0に定義されたルートディレクトリ(/)配下に必要なディレクトリと役割は以下になります。 ubuntu16.04と対比してみました。
ディレクトリ | ubuntu | 役割 |
---|---|---|
/bin | 〇 | 利用者向け必須のコマンドを管理 |
/boot | 〇 | OSの起動に必要なファイル管理 |
/dev | 〇 | デバイスファイル(cdrom,disk,cpu,netなど)管理 |
/etc | 〇 | PC(サーバ含む)設定ファイル各種管理 |
/home | 〇 | FHS3.0ではオプションでは付帯的なディレクトリの位置づけ アカウント別のホームディレクトリ |
/lib | 〇 | 重要な共有ライブラリとカーネルモジュールを管理 |
/media | 〇 | CD-ROMなどのリムーバブルメディアのマウントポイント |
/mnt | 〇 | 一時的にファイルシステムをマウントするためのマウントポイント |
/opt | 〇 | アドオン(付属又は追加した)アプリケーションソフトウェアパッケージ |
/proc | 〇 | カーネルやプロセスに関する情報をテキストで表示する仮想ファイルシステム FHS3.0では、OS固有のディレクトリして位置づけられている。 |
/root | 〇 | ルートアカウント(管理者アカウント)のホームディレクトリ FHS3.0では特別なオプションディレクトリとして定義 |
/run | 〇 | 実行中のプロセスに関連するデータを管理 |
/sbin | 〇 | システム管理用コマンドを管理 |
/snap | ● | snaps機能用のディレクトリ。ubuntu16.04からリリースされる。 FHS3.0には勿論定義されていない。 |
/srv | 〇 | このシステムによって提供されるサービスのデータ |
/sys | 〇 | デバイス、ドライバ、およびいくつかのカーネル機能に関する情報が表示される場所です。 その根底にある構造は、現在使用されている特定のLinuxカーネルによって決まります。 FHS3.0では特別なオプションディレクトリとして定義 |
/tmp | 〇 | 一次ファイルの保存先ディレクトリ |
/usr | 〇 | プログラムやカーネルソース |
/var | 〇 | 可変データを格納するディレクトリ log(ログファイル管理)、mail(メール管理)、www(Webリソース管理)などを保存します。 |