
こんにちは!いつもブログを読んでいただき、ありがとうございます。
前回の記事では、LinuC 201試験の最初の重要テーマである「システムの起動(ブートプロセス)」についてまとめました。まだご覧になっていない方は、流れを理解するために、ぜひ前回の記事からチェックしてみてください。
👉 【前回記事】 2.01 システムの起動とLinuxカーネルのまとめ①
今回は、その続きとなる後半パートです。テーマは「カーネルのコンパイル」と「トラブルシューティング」です。
「コンパイル」と聞くと、少し難しそうに感じるかもしれません。でも、手順とコマンドの意味さえ整理できれば、恐れることはありません!試験でも頻出のポイントですので、一つずつ丁寧に一緒に確認していきましょう。
📌 今回は後半の2つのサブテーマを解説します!
📌 この記事で扱う範囲
- ブートプロセスとGRUB ← 前回の記事で
- システム起動のカスタマイズ ← 前回の記事で
- Linuxカーネルの構成要素 ← 前回の記事で
- Linuxカーネルのコンパイル → 今日はココ!
- カーネル実行時における管理とトラブルシューティング → 今日はココ!
なぜカーネルを再構築(コンパイル)するのか?
通常はディストリビューション標準のカーネルをそのまま使いますが、以下のような理由から、自分でソースコードをコンパイル(ビルド)することができます。新しいカーネルをコンパイルすることを「カーネルの再構築」といいます。
- 不要な機能を削除して、システムを軽量化したい
- 最新のカーネル機能をいち早く試したい
- 特定ハードウェア用のパッチを適用したい
カーネルを再構築する場合、カーネルモジュールもあわせてコンパイルし直す必要があります。
コンパイルの手順(6ステップ)
試験では「順番」が問われることもあるため、流れをイメージしておきましょう。
① カーネルの設定 (make menuconfig 等)
↓
② カーネルのビルド(make bzImage)
↓
③ モジュールのビルド (make modules)
↓
④ モジュールのインストール(make modules_install)
↓
⑤ カーネルのインストール (make install)
↓
⑥ ブートローダーの設定更新(grub2-mkconfig 等)
重要!make ターゲット一覧
試験対策として最も重要なのが make コマンドのターゲット(引数)です。それぞれの役割をしっかり区別して覚えておきましょう。
① 設定に関するターゲット
| ターゲット | 説明 |
|---|---|
make config | テキストベースで一問一答形式で設定(修正が大変なため現在はほぼ使われない) |
make menuconfig | ★最重要 CUI(テキスト画面)でメニュー形式の設定。実務でも試験でもよく出る |
make xconfig | GUIで設定(Qtベース) |
make gconfig | GUIで設定(GTK+ベース) |
make oldconfig | 現在の設定ファイル(.config)を引き継ぎ、新機能の設定のみ問い合わせる |
② ビルド・インストールに関するターゲット
| ターゲット | 説明 |
|---|---|
make bzImage | ★主流 圧縮されたカーネルイメージを作成 |
make modules | カーネルモジュールをビルド |
make modules_install | ビルドしたモジュールを /lib/modules/ 配下にインストール |
make install | カーネル本体などをシステムにインストール |
③ クリーン(掃除)に関するターゲット
ビルドをやり直す際などに使います。強さの違いを覚えておきましょう。
| ターゲット | 削除範囲 | 強さ |
|---|---|---|
make clean | ビルドで生成されたオブジェクトファイル等(.config以外) | 弱 |
make mrproper | clean の範囲 + 設定ファイル(.config)も削除 | 中 |
make distclean | mrproper の範囲 + patchが作成したファイルも削除 | 強 |
★ ここがポイント!
clean<mrproper<distcleanの順に削除範囲が広がります。 試験では「設定ファイルも含めて初期化したい場合は?」→mrproperまたはdistcleanという問われ方が典型的です!
💡 独学での実機演習に不安がある方へ
カーネルのコンパイルや設定変更は、失敗するとOSが起動しなくなるリスクがあります。「自分のPCで試すのは怖い…」という方も多いのではないでしょうか。
安全な環境で実機操作を学びたい、プロの講師に質問しながら確実にスキルを身につけたい場合は、スクールを活用するのも賢い選択肢です。
【PR】▶ Winスクール – 全国教室で実機学習!Linuxサーバー構築講座はこちら
![]()
![]()
カーネルメッセージの確認
システム起動時やデバイス接続時に、カーネルが出力するメッセージを確認することはトラブルシューティングの基本です。
dmesg コマンド
カーネルのリングバッファ(一時的な記録領域)の内容を表示します。
dmesg # カーネルメッセージを表示
dmesg -T # タイムスタンプを人間が読める形式で表示
dmesg | grep -i error # エラーメッセージのみ抽出
journalctl -k コマンド
systemdを採用しているシステムでは、ジャーナルログからカーネルメッセージを確認できます。
journalctl -k # カーネルメッセージを表示(-k は --dmesg の短縮形)
ハードウェア情報の確認コマンド
試験範囲には、ハードウェア情報を確認するコマンドも含まれます。
| コマンド | 説明 |
|---|---|
lspci | PCIデバイスの一覧を表示(グラフィックボード・ネットワークカード等) |
lsusb | USBデバイスの一覧を表示 |
lsdev | デバイスのリソース情報を表示(procinfo パッケージ) |
sysctl によるカーネルパラメータの管理
Linuxでは、/proc ディレクトリ以下のファイルを使って、カーネルの情報を取得したり、カーネルの動作を変更したりできます。これを「カーネルパラメータ」といいます。
sysctl(システムコントロール) は、Linuxカーネルのパラメータを実行中のまま確認・変更できるコマンドです。
sysctl -a # すべてのパラメータを表示
sysctl net.ipv4.ip_forward # 特定のパラメータを確認
sysctl -w net.ipv4.ip_forward=1 # パラメータを一時的に変更(再起動で元に戻る)
sysctl -p # 設定ファイルを読み込んで適用
パラメータは /proc/sys/ 以下のファイルとしても参照・変更できます。
# sysctl -w と同じ効果
echo 1 > /proc/sys/net/ipv4/ip_forward
設定を永続化する(再起動しても有効にする)方法:
| 設定ファイル | 説明 |
|---|---|
/etc/sysctl.conf | カーネルパラメータの設定ファイル |
/etc/sysctl.d/ | 個別設定ファイルを置くディレクトリ(こちらが現在の主流) |
# /etc/sysctl.conf の設定例
net.ipv4.ip_forward = 1 # IPv4パケット転送を有効化
vm.swappiness = 10 # スワップの使用頻度を下げる
設定ファイルを変更した後は sysctl -p で反映させます。
udevによるデバイス管理
udev は、Linuxにおける「デバイス管理の仕組み」です。
ハードウェアが接続された際に、動的にデバイスファイル(/dev/sdb など)を作成・削除する役割を担っています。
udev ルールファイル
udev の動作はルールファイルでカスタマイズできます。
| ディレクトリ | 説明 |
|---|---|
/lib/udev/rules.d/ | パッケージが提供するデフォルトルール |
/etc/udev/rules.d/ | 管理者が作成するカスタムルール(優先度高) |
覚えておきたいコマンド:udevadm
| コマンド | 説明 |
|---|---|
udevadm info <デバイスパス> | デバイスの詳細情報を表示 |
udevadm monitor | デバイスの接続・切断イベントをリアルタイム監視 |
udevadm control --reload-rules | ルールファイルを再読み込み |
udevadm trigger | ルールを全デバイスに再適用 |
udevadmはudevに問い合わせ・操作を行うためのコマンドラインツールです。
# 例:ストレージの情報を確認
udevadm info /dev/sda1
# 例:デバイスイベントをリアルタイムで確認
udevadm monitor
【PR】▶ 実務直結のオンライン講座はこちら
![]()
![]()
まとめ
お疲れ様でした!今回の記事で学んだ内容を振り返りましょう。
| サブテーマ | 重要ポイント |
|---|---|
| 2.01.4 カーネルのコンパイル | make のターゲット一覧(menuconfig・bzImage・mrproper・distclean の違い) |
| 2.01.5 実行時の管理 | dmesg・lspci・lsusb、sysctl コマンドと /etc/sysctl.conf、udev・udevadm |
これで2.01「システムの起動とLinuxカーネル」の全範囲をカバーできました!
LinuC 101・102の勉強法が気になる方はこちらもどうぞ 👉 LinuC 101・102 合格体験記
勉強、大変だと思いますが、焦らず一つずつ積み重ねていきましょう。
皆さんにとって、今日も素敵な1日になりますように!
参考:LPI-Japan 公式試験範囲 https://linuc.org/linuc2/range/201.html