
オペレーティングシステムの心臓部であるLinuxカーネルは、Arch Linuxユーザーにとって最も基本的かつ重要な技術の一つだ。Arch Linuxの特徴である高度なカスタマイズ性を最大限に活用するには、カーネルに関する深い理解が欠かせない。
多くのディストリビューションはカーネルの設定を自動化しているが、Arch Linuxはユーザー自身がカーネルを選び、システムに最適な設定を行う裁量を与える。この柔軟性は、開発環境からサーバー運用まで、様々な用途に合わせたシステムの構築を実現する。
本記事では、カーネル選択の基準と具体的な設定手順を解説する。システムの安定性とパフォーマンスの両立を目指すユーザーが、自身の環境に最適なカーネルを見つけ出せるよう、実践的な知識を提供する。
設定手順
まず、システムにインストールされているカーネルを確認する。ターミナルで以下のコマンドを実行する。
pacman -Q | grep linux
インストールされているカーネルパッケージが表示されるので確認する。
Arch LinuxではGRUBを使用している場合、/etc/default/grubファイルを編集して、GRUB_DEFAULTの設定を変更する。
sudo nano /etc/default/grub
でファイルを開く。デフォルトでは GRUB_DEFAULT=0(最初のエントリー)が設定されている。この値を変更してGRUBメニューで選択されるカーネルを変更できる。
GRUB_DEFAULT=1とすれば、GRUBメニューで2番目に表示されるカーネルをデフォルトに設定できる(インデックスは番号0から始まる)。
GRUBのメニュー構造が次のようになっているとする。
- Arch Linux
- Advanced options for Arch Linux ← まずこの2番目を選びたい
- 1. Arch Linux, with Linux (default)
- 2. Arch Linux, with Linux LTS ← その次の画面でこの2番目を選びたい
最初の画面で2番目を選び、次の画面で2番目を選びたいなら、GRUB_DEFAULT=”1>1″ に設定すればよい。0(1番目)から始まるので 1(2番目)>1(2番目) ということになる。
設定を保存した後、GRUBの設定を再生成して変更を反映させる。
sudo grub-mkconfig -o /boot/grub/grub.cfg
変更を反映させるため、システムを再起動する。
sudo reboot
再起動後、GRUBメニューで選択したカーネルがデフォルトとして起動される。
カーネルの基礎知識
Linuxカーネルはオペレーティングシステムの中核を担うソフトウェアで、ハードウェアとソフトウェアの橋渡し役を果たす。CPUやメモリ、ストレージなどのハードウェア資源を管理し、プロセス制御やファイルシステムの操作など、システムの基本機能を提供する。
Arch Linuxでは主に3種類のカーネルを扱う。標準カーネル(linux)は最新の機能を積極的に取り入れ、新しいハードウェアへの対応や性能向上を重視する。一方、LTSカーネル(linux-lts)は長期サポート版として、セキュリティパッチの提供と安定性の維持に焦点を当てる。
hardened-linuxカーネルはセキュリティ機能を強化し、メモリ保護やバッファオーバーフロー対策などの堅牢な防御機能を備える。このカーネルはサーバー環境やセキュリティ重視のシステムに最適だ。
zen-linuxカーネルはデスクトップ環境向けに最適化され、応答性とマルチタスク性能の向上を図る。特にゲームやマルチメディア処理において優れたパフォーマンスを発揮する。
linux-rtカーネルはリアルタイム処理に特化し、音声・映像処理やロボット制御など、厳密な時間制御が求められる用途に対応する。このカーネルは割り込み処理の遅延を最小限に抑え、予測可能な応答時間を実現する。
カーネル設定の準備
Arch Linuxのカーネル設定を始める前に、現在のシステム状態を把握し、必要な準備を整える。まず、現在動作中のカーネルバージョンを確認するには
uname -r
コマンドを実行する。このコマンドはカーネルのバージョン番号とビルド情報を表示する。
インストール済みのカーネルパッケージは
pacman -Q | grep linux
コマンドで一覧表示できる。この出力から複数のカーネルがインストールされているか、各カーネルのバージョンを確認できる。
カーネル設定に必要な基本ツール群はbase-develパッケージに含まれる。また、カーネルモジュールの管理にはkmodパッケージが不可欠だ。
カーネル設定前のバックアップは、システムの復旧に備えた重要な工程である。Timeshiftやrsyncを用いて、システム全体のスナップショットを作成する。/boot
ディレクトリと/etc/default/grub
ファイルは別途バックアップを取る。
カーネルのビルドパラメータやモジュール設定は/etc/mkinitcpio.confで管理する。このファイルをバックアップした上で、mkinitcpioパッケージがインストールされていることを確認する。
最新のカーネルソースと開発ツールを取得するため、パッケージデータベースを更新する。pacman -Syuコマンドを実行し、システム全体を最新状態にする。
新しいカーネルをインストールする前に、現在のブートローダー設定を確認する。GRUBを使用している環境では、設定ファイルのバックアップと共にgrub-customizerのインストールも推奨する。
GRUBの設定方法
GRUBはシステム起動時に最初に動作するブートローダーで、インストールされた複数のカーネルから起動するカーネルを選択する機能を持つ。GRUBは/bootパーティションに配置され、ブートセクタからGRUBの本体を読み込み、カーネルの起動処理を実行する。
GRUBの主要な設定ファイルは /etc/default/grub に存在する。このファイルには起動時のタイムアウト設定やデフォルトの起動エントリ、カーネルパラメータなどの基本設定が記述されている。具体的な設定手順は以下の通りだ。
- sudo nano /etc/default/grub を実行し設定ファイルを開く
- GRUB_DEFAULT でデフォルトの起動エントリを指定
- GRUB_TIMEOUT で起動メニューの表示時間を秒単位で設定
- GRUB_CMDLINE_LINUX_DEFAULT でカーネルパラメータを追加
よく使用される設定オプションの代表例を挙げる。GRUB_DISABLE_SUBMENU=y はサブメニューを無効化し、すべての起動エントリを一覧表示する。GRUB_DISABLE_RECOVERY=trueは復旧モードエントリを非表示にする。GRUB_SAVEDEFAULT=true は最後に選択したエントリを記憶し、次回起動時のデフォルトとして使用する。
カーネルパラメータの設定例として quiet はブート時のメッセージを抑制し、 splash は起動画面を表示する。高度な設定として intel_pstate=active はIntelプロセッサの電源管理を最適化し、resume=/dev/sdXn はハイバネーション用のスワップパーティションを指定する。
設定を変更した後は
sudo grub-mkconfig -o /boot/grub/grub.cfg
コマンドを実行し、GRUBの設定ファイルを再生成する。このコマンドはインストールされているすべてのカーネルを検出し、起動エントリを自動生成する。
カスタムメニューエントリを追加する場合は/etc/grub.d/40_customファイルを編集する。このファイルにメニューエントリを追加することで、特定のカーネルパラメータや起動オプションを持つエントリを作成できる。
新しいカーネルをインストールした後やカーネルパラメータを変更した際は、必ずGRUBの設定を更新する。設定ミスによる起動不能を防ぐため、変更前の動作確認と設定のバックアップが重要だ。
トラブルシューティング
カーネル設定後にシステムが起動しない事態に備え、基本的な復旧手順を理解しておく。まず、GRUBメニューで以前のカーネルを選択し起動を試みる。メニューが表示されないときは起動時にESCキーを押し続け、GRUBメニューを強制的に表示させる。
一般的なブート失敗の原因はカーネルパニックだ。このエラーはカーネルモジュールの読み込み失敗や、不適切なカーネルパラメータの設定で発生する。GRUBメニューでカーネルパラメータからquietとsplashを削除すると、詳細なエラーメッセージを確認できる。
緊急時はArch Linuxのライブメディアから起動し、復旧作業を行う。以下の手順で復旧環境にアクセスする。
- ルートパーティションをマウント
- arch-chroot でシステムにアクセス
- mkinitcpio -P でinitramfsを再生成
- grub-mkconfigでGRUB設定を更新
起動時のエラーメッセージが/var/log/boot.logに記録される。このログからモジュールの依存関係やドライバの互換性など、具体的な障害原因を特定できる。
最後の手段として、
pacman -U /var/cache/pacman/pkg/linux-x.x.x.pkg.tar.zst
コマンドで以前のカーネルバージョンに戻す。このため、カーネルのアップグレード時はパッケージキャッシュを保持しておく。
パフォーマンスの最適化
カーネルパラメータは/etc/sysctl.d/ディレクトリ下のファイルで調整する。仮想メモリの挙動を制御するvm.swappinessは通常のデスクトップ利用では10
に設定し、メモリキャッシュを優先する。ディスクI/Oの最適化にはvm.dirty_ratioを10
に設定する。
ネットワークスタックの調整も重要だ。net.core.rmem_maxとnet.core.wmem_maxの値を増やすことで、高速なネットワーク転送を実現する。TCPバッファのチューニングにはnet.ipv4.tcp_rmemとnet.ipv4.tcp_wmemを使用する。
パフォーマンスモニタリングにはsysstatパッケージに含まれるsarコマンドが有効だ。CPUやメモリ、ディスクI/Oの使用状況を継続的に監視し、設定変更の効果を確認できる。perfコマンドでカーネルレベルのパフォーマンス解析が可能となる。