Fedora 41を使ってるんですが、先日ルートファイルシステムを移動しようとしたときに/etc/default/grub
の修正を忘れててOSが起動できなくなりました。
Fedora 41のLive USBを使ってLive OSを起動してchroot環境でgrub.cfgとinitramfsを再生成することで解決しました。
毎回忘れるのでやり方を備忘録として残しておきます。
環境
#
- OS: Fedora Linux 41 (KDE Plasma) x86_64
事前準備
#
LUKSやbcacheを使っている場合はcryptsetup open
したりbcacheのデバイスを作成しておく必要があります。ここでは詳細は割愛します。
手順
#
まずはLive USBを使ってFedora 41のLive OSを起動します。
ルートのファイルシステムをマウントします。
デバイス名等はlsblk -f
コマンド等で確認してください。
1
2
3
4
5
6
|
# 作業用ディレクトリを作成
mkdir /tmp/chroot-working-directory
# 暗号化されたルートパーティションをマウント
# 注意: デバイス名は環境によって異なります
sudo mount /dev/mapper/luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /tmp/chroot-working-directory
|
chroot環境に必要なファイルシステムをマウントします。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# chroot環境のルートディレクトリに移動
cd /tmp/chroot-working-directory
# procファイルシステムをマウント
sudo mount -t proc /proc proc
# sysファイルシステムをマウント
sudo mount --rbind /sys sys
# devファイルシステムをマウント
sudo mount --rbind /dev dev
# bootパーティションをマウント
# 注意: デバイス名は環境によって異なります
sudo mount /dev/nvme0n1p2 boot
# EFIシステムパーティションをマウント
# 注意: デバイス名は環境によって異なります
sudo mount /dev/nvme0n1p1 boot/efi
# 一時ディレクトリ用にtmpfsをマウント(容量10GB)
# dracutの一時ディレクトリを確保するため
sudo mount --mkdir -t tmpfs -o defaults,size=10G tmpfs var/tmp
|
chroot環境に入ります。
必要に応じて設定ファイル等を編集します。
1
2
3
4
|
vim /etc/fstab
vim /etc/crypttab
vim /etc/default/grub
vim /etc/dracut.conf.d/some-config.conf
|
grub.cfgとinitramfsを再生成します。
1
2
3
4
|
# grub.cfgの再生成
grub2-mkconfig -o /boot/grub2/grub.cfg
# initramfsの再生成
dracut --force --regenerate-all
|
chroot環境を終了して再起動します。