メインコンテンツへスキップ

Fedora 41のgrub.cfgとiniramfsを再生成する方法

·168 文字·1 分
Linux Fedora Dracut Grub2 Chroot
shiitake256
著者
shiitake256
I’m only human

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
sudo 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環境を終了して再起動します。

1
2
exit
sudo reboot