コンセプト解説

Linuxの基本

サーバーの多くはLinuxで動いています。このガイドでは、Linuxをはじめて扱う人が必ず押さえておきたい骨組みを順番に見ていきます。何でできていて、どうやって起動するのか。ディスクとファイルはどう扱うのか。誰が何をできるのか。シェルでどう作業するのか。プログラムはどう動き、どうインストールされるのか。ネットワークサービス、セキュリティ、もう一歩進んだシステム管理は、Linuxシリーズの次のガイドで続けます。

01

Linuxは何でできているか:カーネル・シェル・ディストリビューション・ライセンス

Linuxは玉ねぎのように考えるとわかりやすくなります。中心にはCPU・メモリ・ディスク・ネットワークカードといったハードウェアがあり、それを直接操作するカーネルが包んでいます。その外側に、人が入力したコマンドを解釈するシェル(bashなど)があり、いちばん外側に私たちが使うプログラムがあります。

プログラムはハードウェアに直接触れません。ファイルを読んだりネットワークに送ったりする必要があるときは、カーネルにシステムコールで頼みます。カーネルがハードウェアを操作して、結果を返してくれます。だからプログラムが1つおかしくなっても、ハードウェアとほかのプログラムはカーネルが守ってくれます。下の図で、コマンドを切り替えてみてください。

コマンド
コマンド
ls /home

1つのコマンドが層を通ってハードウェアまで下り、戻ってくる · 黄緑 = 要求、水色 = 結果

シェルは「ls /home」を解釈してプログラムを実行します。プログラムはディスクに直接触れず、システムコール(openat · getdents64)でカーネルに頼みます。カーネルがハードウェアを操作して結果を返し、シェルがそれを画面に表示します。だからプログラムがおかしな動きをしても、ハードウェアとほかのプログラムはカーネルが守ってくれます。

ディストリビューション:カーネルにツールをまとめたもの

厳密にいうと、「Linux」はカーネルの名前です。カーネルだけでは使えないので、シェル・コマンドツール・パッケージマネージャー・インストーラーをまとめて提供しているものをディストリビューション(ディストロ)と呼びます。大きく2つの系統があり、このガイドでもコマンドが違うところは2つを並べて紹介します。

RHEL系Debian系
代表的なディストリビューションRed Hat Enterprise Linux, Rocky Linux, AlmaLinux, FedoraDebian, Ubuntu
パッケージ形式.rpm.deb
パッケージマネージャーrpm / dnf(以前はyum)dpkg / apt
管理者グループwheelsudo

カーネルのバージョンは、5.15.0のように「メジャー.マイナー.パッチ」と読みます。以前はマイナー番号が偶数なら安定版というルールがありましたが、今は使われていません。kernel.orgは、最新の開発版(mainline)、安定版(stable)、長く保守される長期サポート版(longterm)に分けて公開しています。

フリーソフトウェアとGPL

Linuxカーネルはリーナス・トーバルズが1991年に公開しました。その上で動く多くのツールは、リチャード・ストールマンが始めたGNUプロジェクトから来ています。ストールマンはフリーソフトウェア財団(FSF)を設立し、その代表的なライセンスがGPLです。GPLのプログラムは誰でも使い、改変し、再配布できますが、改変したものを配布するときは、ソースコードも同じGPLの条件で公開しなければなりません。自由を次の人にも引き継がせるこの仕組みをコピーレフトといいます。

ライセンスポイント例
GPL改変して配布するなら、ソースもGPLで公開(コピーレフト)Linuxカーネル(GPLv2)、bash
LGPLライブラリを利用する(リンクする)だけのプログラムは、GPLで公開しなくてよいglibcなどのライブラリ
BSD・MIT・Apacheソース公開の義務がほとんどない寛容型ライセンスさまざまなツール・ライブラリ
韓国のLinux Master資格(KAITが実施)の筆記試験は、現在はカーネル4.x以降、RHEL・Rocky Linux 8、Ubuntu 18.04以降を基準にしています。2027年の定期試験からは、カーネル5.x以降、RHEL・Rocky Linux 9、Ubuntu 22.04以降に変わります(KAITのお知らせ、2026年5月)。このガイドのコマンドは、どちらの基準でも使えるものだけを載せています。

問題文にこんな表現があれば → これを選ぶ

  • “ハードウェアを直接管理し、プログラムに資源を割り当てる部分”カーネル
  • “ユーザーが入力したコマンドを解釈して実行するプログラム”シェル(bashなど)
  • “改変して配布するなら、ソースも同じ条件で公開”GPL(コピーレフト)
  • “ライブラリをリンクして使うプログラムには公開義務がない”LGPL
  • “GNUプロジェクトとFSFを始めた人物”リチャード・ストールマン
  • “RHELと互換性のある無償のディストリビューション”Rocky Linux, AlmaLinux

何でできているかを見ました。次は、電源を入れたときにこれらの層がどんな順番で目を覚ますのかを見ていきましょう。

02

電源を入れると何が起きるか:起動の順序

電源を入れてからログイン画面が出るまでには、いくつかの段階が続きます。各段階が次の段階を見つけてバトンを渡すリレーなので、どの段階で止まったのかがわかれば、何が壊れたのかもわかります。

順番段階すること
1ファームウェア(BIOSまたはUEFI)ハードウェアをチェックし、起動するデバイスを選ぶ
2ブートセクター(MBR)またはEFIシステムパーティションブートローダーがある場所
3ブートローダー(GRUB2)メニューを表示し、カーネルとinitramfsをメモリに読み込む
4カーネル + initramfsハードウェアを初期化し、一時的なルートを使って本物のルートファイルシステムを見つけてマウントする
5systemd(PID 1)最初のプロセス — サービスを順番どおりに起動する
6ターゲットmulti-user(テキスト)やgraphical(グラフィカル)まで上がれば、ログインできる
ファームウェア
状況
方式
UEFI + GPT
結果
ログイン画面までたどり着いた

電源ボタンからログイン画面まで · 故障を起こすと、その段階で止まる

電源を入れると、UEFIがハードウェアをチェックし、起動するデバイスを見つけてEFIシステムパーティションにあるブートローダーを実行します。GRUB2がカーネルとinitramfs(本物のルートファイルシステムをマウントするまで使う一時的なルート)をメモリに読み込み、カーネルは最初のプロセスであるsystemd(PID 1)を起動します。systemdがデフォルトターゲットまでサービスを立ち上げると、ログインできるようになります。

BIOS・MBRとUEFI・GPT:昔の方式と今の方式

名前が4つもあって難しそうに見えますが、2組に分けると単純です。BIOSとUEFIはマザーボードに組み込まれていて、電源を入れると最初に動くプログラム(ファームウェア)です。MBRとGPTは、ディスクの先頭に「このディスクはこう分かれている」と書いておく目次の形式(パーティションテーブル)です。昔の組み合わせはBIOS + MBR、今の組み合わせはUEFI + GPTが一般的です。2つの方式は、次の段階であるブートローダーの見つけ方が違います。

昔の方式今の方式
ファームウェアBIOSUEFI
ディスクの目次MBRGPT
ブートローダーの見つけ方ディスクの先頭1セクター(512バイト)に入っている小さなコードをそのまま実行する起動専用の小さなパーティション(EFIシステムパーティション)を開き、ブートローダーのファイルを選んで実行する
たとえるなら本の表紙の裏に貼られたメモを読んで、そのとおりにする「起動」フォルダーを開いて、実行するファイルを選ぶ

EFIシステムパーティションは、Linuxではふつう/boot/efiにマウントされています。試験では「UEFIで起動するとき、ブートローダーがある場所」としてよく出てきます。

ブートローダーGRUB2

こうして見つけられて実行されるブートローダーがGRUB2です。以前はLILOも使われていましたが、今はGRUB2が標準です。設定を変えるときに、つまずきやすいところが1つあります。起動時に実際に読まれるgrub.cfgは、直接編集しません。元になる/etc/default/grubを編集してから、grub2-mkconfig(Ubuntuではupdate-grub)を実行すると、grub.cfgが新しく生成されます。

ランレベルからターゲットへ

以前のinitは、「ランレベル」という数字でシステムの状態を分けていました。systemdはこれをターゲットに置き換え、古い名前も通じるように対応づけています。

ランレベルsystemdのターゲット状態
0poweroff.target電源オフ
1rescue.targetレスキューモード(管理者だけ、基本のサービスだけ)
3multi-user.targetマルチユーザー、テキストモード(サーバーでよくあるデフォルト)
5graphical.targetマルチユーザー、グラフィカルな画面
6reboot.target再起動

デフォルトのターゲットはsystemctl get-defaultで確認し、systemctl set-defaultで変更します。故障したときに使うモードは2つあります。rescue.targetは、ファイルシステムをマウントし、最小限のサービスで管理者が1人で入るレスキューモードです。emergency.targetは、それよりもさらに少なく(ルートを読み取り専用でだけ)立ち上げる緊急モードです。/etc/fstabが間違っていて起動が止まると、たいてい緊急モードに落ちます。

問題文にこんな表現があれば → これを選ぶ

  • “UEFIで起動するとき、ブートローダーがある場所”EFIシステムパーティション(/boot/efi)
  • “現在のLinuxで標準のブートローダー”GRUB2(以前はLILO)
  • “カーネルが最初に実行するプロセス(PID 1)”systemd
  • “ランレベル3に当たるsystemdのターゲット”multi-user.target
  • “グラフィカルログインで起動するターゲット”graphical.target(ランレベル5)
  • “GRUBの設定を変えたあとにすること”grub2-mkconfig(update-grub)でgrub.cfgを生成し直す

起動のステップ3~4で、カーネルは「ルートファイルシステム」を見つけてマウントしました。次は、ディスクをどう分けて、どうつなぐのかを見ていきます。

広告

03

ディスクを分けてつなぐ:パーティション・ファイルシステム・ディレクトリ構造

新しいディスクは、そのままでは使えません。3つのステップを踏みます。まずディスクを区画(パーティション)に分け、各パーティションにファイルを入れるための形式(ファイルシステム)を作り(mkfs)、ディレクトリツリーのどこかにマウント(mount)します。WindowsのようにC:やD:のドライブが別々にあるのではなく、すべてのディスクが/から始まる1本の木の枝としてつながります。

パーティションテーブル
ディスク
パーティションテーブル
MBR
使える容量
2 / 4 TiB

ディスクの円盤(1周 = ディスク全体)を扇形のパーティションに分け、それぞれをディレクトリツリー(フォルダー)のどこかにマウントする

MBRはパーティションの情報をディスクの先頭512バイトに記録し、基本パーティションを4つまで作れます。もっと必要なら、そのうち1つを拡張パーティションにして、中に論理パーティションを置きます(論理パーティションは5番から)。512バイトセクターでは、2 TiBを超える部分は使えません。どのパーティションも、ファイルシステムを作り(mkfs)、ディレクトリツリーのどこかにマウントして(mount)はじめて使えるようになります。

MBRGPT
パーティションの数基本パーティションは4つまで(1つを拡張パーティションにして、その中に論理パーティション。5番から)デフォルトで128個
ディスクの大きさ512バイトセクターで2TiBまでそれよりはるかに大きいディスク
起動BIOSUEFI(EFIシステムパーティション)

ファイルシステムとスワップ

Linuxでよく使われるファイルシステムはext4とXFSです。どちらもジャーナリングファイルシステムで、変更する内容をまずジャーナルに書いておいてから反映します。だから突然電源が落ちても、ファイルシステムが壊れる危険が少なく、チェックも速く済みます。RHEL系はXFSをデフォルトで使います。XFSはサイズを大きくするのは簡単ですが、小さくすることは事実上できないと考えておきましょう(末尾の一部だけを縮める機能があるだけです)。スワップ(swap)は、メモリが足りないときに一時的に使うディスクの領域です。ディレクトリにはマウントせず、swaponで有効にします。

/etc/fstab:起動のたびにマウントする場所

mountコマンドでマウントしたものは、再起動すると外れてしまいます。起動のたびにマウントするには、/etc/fstabに1行ずつ書きます。1行は6つのフィールドです。

# デバイス(またはUUID)                   マウント先   種類        オプション dump  チェック順
UUID=4c2f…a91e                             /home        xfs         defaults  0     0
/dev/sdb1                                  /data        ext4        defaults,nofail  0  2

ここに書いたディスクがないと、起動が緊急モードで止まります(2章)。なくても困らないディスクにはnofailを付けておきます。デバイス名(/dev/sdb1)はディスクをつなぐ順番によって変わることがあるので、変わらないUUIDで書くほうが安全です。

ディレクトリ構造(FHS)

どのディストリビューションでも、ディレクトリごとに役割が決まっています(ファイルシステム階層標準、FHS)。

ディレクトリ役割
/etcシステムの設定ファイル
/home一般ユーザーのホームディレクトリ(/rootは管理者のホーム)
/varログ(/var/log)、メール、キャッシュのように変わり続けるデータ
/tmp誰でも使える一時ファイル(スティッキービット、5章)
/usrインストールされたプログラムとライブラリ(最近は/bin・/sbinが/usr/bin・/usr/sbinに統合されていることが多い)
/opt別途インストールする追加のソフトウェア
/bootカーネルとブートローダーのファイル
/devデバイスファイル(/dev/sdaなど)
/procカーネルとプロセスの情報をファイルのように見せる仮想ファイルシステム(ディスク上にはない)

問題文にこんな表現があれば → これを選ぶ

  • “MBRで基本パーティションを4つより多くしたい”1つを拡張パーティションにして、その中に論理パーティション
  • “2TiBを超えるディスクを1つのパーティションで使う”GPT
  • “突然の停電でもファイルシステムの損傷を減らす方式”ジャーナリング(ext4、XFS)
  • “起動のたびに自動でマウントする”/etc/fstabに登録
  • “システムの設定ファイルが集まるディレクトリ”/etc
  • “ログファイルがたまる場所”/var/log
  • “ディスクではなくカーネルの情報を見せる仮想ファイルシステム”/proc

ディスクをつないだので、次はその中のファイルを見ていきます。実は、ファイルの名前とファイルの中身は別々の場所にあります。

Pro限定

ここまでは無料で読めます

残りの6章はPro会員向けです。各章に3D図解と「問題文にこんな表現があれば」の整理が続き、最後の章では実際に解いて確かめられます。

  1. 04inode・リンク・基本コマンド
  2. 05パーミッション
  3. 06ユーザーとグループ
  4. 07シェル:リダイレクト・パイプ・vi
  5. 08プロセスとシグナル
  6. 09パッケージとサービスの管理

PasslyExam

概念をつかんだら、次は試験形式の問題で確かめましょう

PasslyExamは、各資格の出題範囲に合わせて作成したオリジナルの練習問題・解説・本番形式の模擬試験を提供しています。正解の選択肢がなぜ正しく、似た選択肢がなぜ誤りなのかまで解説します。登録すると毎日無料で練習問題に取り組めます。