Linuxの特徴から、ディレクトリ構造などの概念について、まとめます。
ページ最下部の参考資料から文章を抜粋し、まとめさせていただいています。
Linuxの特徴
- オープンソース(※1)であり、誰でも自由に無償で利用できる。
- 品質の高い多くのソフトウェア(WebサーバのApache HTTP Serverや、 データベースシステムのMySQL等)が利用できる。
- 世界中でサーバ用途として広く利用されているため、信頼性が高い。
- 操作を自動化するための仕組みが用意されており、サーバの運用が行いやすい。
※1 オープンソース
オープンソースとは、ソースコードが公開されており、誰もがソースコードにアクセスできるだけでなく、開発に参加できるソフトウェアや、考え方のこと
Linuxのディストリビューション
ディストリビューションとは?
流通・分布を意味する言葉で、Linuxの配布形態のこと。本来、Linuxはカーネルのみを指すため、そのままでは動作しない。そのため、ユーザーが手軽にLinuxを利用できるように、OSの動作に必要なライブラリーやソフトウェアなどをまとめたパッケージとして配布されている。また、これらのディストリビューション業者などをディストリビューターと呼ぶ。Linuxの主なディストリビューションとして、Turbolinux、Vine Linux、Red Hat Linux、Debian GNU/Linuxなどがある。(コトバンクより引用)
つまり、Linuxを動かすために必要なソフトウェアや、自分の欲しい機能などを自分で一からインストールしなくても、もとからユーザが使いやすいように、よく使うものをまとめてくれたもの(ディストリビューション)をインストールすれば、簡単にLinuxを動かすことができるのです。
主なディストリビューション
ディストリビューション | 説明 |
---|---|
Ubuntu | 無償で、デスクトップ版、サーバ版がある。 |
Red Hat Enterprise Linux | 有償で、企業のサーバとして使われている。 |
CentOS | 無償で、Red Hat Enterprise Linuxと高い互換性がある。 |
Debian GNU/Linux | 無償で、自由なソフトウェアに価値を置く。Ubuntuの大元。 |
Raspbian | Debian GNU/LinuxをRaspberry Pi用に改変したもの。 |
Fedora | 無償で先進的な機能を搭載。Red Hat Enter Prise Linuxの実験版的位置づけ。 |
ちなみに私は、自宅学習用ではCentOS、会社ではRed Hat EnterPrise Linuxを使用しています。
Linuxのディレクトリ構造
Linuxでは、ディレクトリがツリー上の階層構造になっています。
ディレクトリの頂点は「/(ルート)」ディレクトリで、
全てのディレクトリ、ファイルは/ディレクトリの中に収められています。
/ディレクトリ直下には、主要なディレクトリが収められており、それぞれのディレクトリには役割があります。
主要なディレクトリは、ディストリビューションごとに異なります。
ディレクトリ | 説明 |
---|---|
bin | 一般ユーザが実行できる基本コマンドが格納される |
boot | システムの起動に必要なファイルが格納される |
dev | 各種デバイスを表す特殊ファイルが格納される |
etc | システム設定ファイルが格納される |
home | ユーザのホームディレクトリが格納される |
lib | ライブラリファイルが格納される |
lost+found | 破損したファイルが格納される |
media | DVDなどの外部メディアがマウントされる |
proc | プロセス情報が格納される |
root | rootユーザのホームディレクトリ |
sbin | システム管理用の基本コマンドが格納される |
tmp | 一時的なファイル置き場 |
usr | 各種コマンド、プログラム、ライブラリ、ドキュメントが格納される |
var | ログファイルなど更新されるファイルが格納される |
システム起動の流れ
BIOS/UEFI
→ ブートローダ
→ カーネル
→ init/systemd
BIOS
最もハードウェアに近い部分をつかさどるシステムで、物理的なハードウェア(マザーボード)上に書き込まれています。
コンピュータの電源を入れると、まずこのBIOSが起動し、記憶装置(HDD)などに関して最低限の認識をして起動デバイスの優先順位を決定します。
その後、起動する順にデバイスの先頭セクタにあるMBR(ブート用の特殊領域。ブートローダが格納されている場所)を読み込み、得られたブートローダに制御を移します。ブートローダが得られない場合は次のデバイスのMBRを読み込みます。
最近のシステムでは、UEFIへの移行が進んでいます。
ブートローダ
MBRには厳しいサイズ制限があるため、MBRに格納されている第一段階部分と、記憶装置内の別の場所に格納されている第二段階部分に分かれています。
ブートローダは記憶装置内のカーネルをロードし、カーネルに制御を映す役割を果たします。
第一段階のブートローダはMBRの先頭446バイトの領域にインストールされます。
カーネル
カーネルは起動されると、高度にハードウェアを認識・制御し、ルートパーティションのマウントなど様々な初期化処理を行います。
その後、initという特別な最初のプロセスを起動します。
init
最初に起動されるプロセスで、PID(プロセスID)は必ず1です。
「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、
「/sbin/init」が起動されます。
initプロセスは設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ち上げるなど、アプリケーションレベルの初期化を行います。
以降、initプロセスはすべてのプロセスの先祖(直接・間接的な呼び出し元)として存在し続けます。
なお、最近のシステムではinitプログラムとして、初期化処理を高速化したUpstartやsystemdを採用している場合があります。
その場合は基本的に「/etc/inittab」ファイルは使用されません。
参考資料
・いちばんやさしいLinuxコマンド入門教室 中島能和 著 株式会社ソーテック社
・新しいLinuxの教科書 三宅英明、大角雄介 著 SB クリエイティブ株式会社
・Ping-t