最近システムを更新し、再起動後に次のメッセージが表示されます。
ERROR: device ‘UUID=...’ not found. Skipping fsck.
mount: /new_root: can’t find UUID=...
You are now being dropped into an emergency shell.
私のルート ファイル システムは RAID アレイ上にあり、blkid
緊急シェルから実行すると、アレイがリストされていないことが示されます。
RAID1 に と があり、通常は にマウントされます。 と があり、 で に/dev/sda2
アセンブルされます。一方、 RAID0 にと がある場合、通常は にマウントされます。 と があり、で にアセンブルされます。起動時のエラーは を探しています。/dev/sdb2
/boot
UUID="b45...
/dev/md1
UUID="436...
/dev/sda3
/dev/sdb3
/
UUID="8dc...
/dev/md2
UUID="d0d...
d0d...
ライブ USB を起動して実行するblkid
と、アレイが存在しました。そこで、アレイ 、 、 、 をマウントしましたproc
。sys
確認dev
しboot
たところ/etc/mdadm.conf
、すべてのARRAY
行がコメント アウトされていたので、次を実行しました。
# mdadm --detail --scan >> /mnt/etc/mdadm.conf
UUID が配列 (b45...
および8dc...
) で使用している 2 つのパーティションと一致していることを確認しました。次に、chroot
を入力しました。
その後確認したところ、設定に/etc/mkinitcpio.conf
その項目がありませんでした。そこで再度追加しました。mdadm_udev
HOOKS
そこから、以下の各手順を試し、再起動しました。
# pacman -S linux
# mkinitcpio -p linux
# mkinitcpio -P
mdadm_udev
それぞれについて、フックが構築され、次のことがわかります。
Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays
しかし、再起動すると、同じエラーが発生し、blkid
緊急シェルで を使用すると、RAID アレイがリストされていないことが示されます (ただし、それを構成するパーティションは存在し、UUID は のものと一致しますmdadm.conf
)。
カーネル パラメータも追加しましたがraid0.default_layout=2
、結果は同じでした。以前はそこになかったのですが、Wiki によると必要なようです。
Linux パッケージはlinux-5.12.6.arch1-1
、起動時にエラーが発生する前に、次のようになっていることを通知します。
Starting version 248.3-2-arch
起動時にアレイがアセンブルされない原因として何が欠けているのでしょうか?
答え1
そもそも何が問題の原因なのか、いまだにわかりません。しかし、解決策は極めて簡単で、自分が愚かだと感じています。
問題は、私が実行したことです:
# mount /dev/md1 /mnt/boot
chroot
を実行して実行する前に、 から をmkinitcpio
ロードしました。これは、 grub の設定を確認したかったからです。 そのため、initramfs
で作成したイメージはmdadm
RAID アレイ上にありました。initramfs
ロードされた はアレイについて何も知らずmdadm
、アレイを構築していませんでした。
解決策は、アレイを にマウントせずmkinitcpio
に を実行することでした。chroot
/boot