## はじめに
Linuxのブートプロセスは、電源投入からログイン画面表示まで複数の段階を経て進行します。BIOS/UEFI、GRUBブートローダ、カーネル、initramfs、systemdといった各コンポーネントの役割を理解しておくと、起動トラブル時の対応や運用の質が大きく変わります。
本記事では、Linuxブートの全体像を段階順に整理し、各段階で確認できるコマンドやログも紹介します。
## 症状・背景
– 起動時に何が走っているか理解したい
– カーネルパラメータを変更したい
– 起動失敗時にどこを疑えばよいか知りたい
– systemdターゲットや起動順を把握したい
## 手順・設定方法
### ステップ1: BIOS/UEFI とブートローダの確認
“`bash
# 起動モード(BIOSかUEFIか)の確認
[ -d /sys/firmware/efi ] && echo “UEFI” || echo “BIOS”
# EFI起動エントリ
sudo efibootmgr -v
# GRUB設定ファイルの場所
ls /boot/grub2/grub.cfg 2>/dev/null
ls /boot/grub/grub.cfg 2>/dev/null
# GRUBバージョン確認
grub2-install –version 2>/dev/null || grub-install –version
“`
### ステップ2: カーネルとinitramfsの確認
“`bash
# 現在のカーネルバージョン
uname -r
# 起動済みカーネルパラメータ
cat /proc/cmdline
# 利用可能なカーネル一覧
ls /boot/vmlinuz-*
# initramfsの内容を確認
lsinitrd /boot/initramfs-$(uname -r).img | head -50
“`
### ステップ3: systemdの起動順とターゲット
“`bash
# 現在のデフォルトターゲット
systemctl get-default
# ブート所要時間
systemd-analyze
# 各ユニットの所要時間
systemd-analyze blame
# 起動順序の依存ツリー
systemd-analyze critical-chain
“`
### ステップ4: ブートログとトラブルシュート
“`bash
# 前回起動分のjournal
journalctl -b
# カーネルメッセージ(dmesg相当)
journalctl -k
# 失敗したサービスを一覧
systemctl –failed
# 緊急時のレスキューモード
sudo systemctl rescue
sudo systemctl emergency
“`
## 注意事項
– GRUB設定は`/etc/default/grub`を編集し`grub2-mkconfig`/`update-grub`で反映します
– カーネルパラメータの永続化はGRUB側で行い、`/proc/cmdline`は読み取り専用です
– systemd-analyze blameは依存関係を考慮しないため、critical-chainと併用します
– レスキューモードへの切替はSSH切断を伴うため必ずコンソールから操作します
## まとめ
1. **BIOS/UEFI**: ハードウェア初期化→ブートローダ起動
2. **GRUB**: カーネル選択とパラメータ設定
3. **カーネル+initramfs**: ルートFSマウント準備
4. **systemd PID 1**: ユニット起動とターゲット遷移
5. **解析**: `systemd-analyze`と`journalctl`で時系列把握
関連記事:
– [GRUBの設定変更と起動修復方法](/articles/linux-grub-repair)
– [Linuxのkernelparam・カーネルパラメータをsysctlで設定する方法](/articles/linux-sysctl-kernel-params)
– [NetworkManagerでネットワークを設定する方法](/articles/linux-networkmanager-setup)



