更新後無法再啟動至 RAID 陣列

更新後無法再啟動至 RAID 陣列

我最近更新了系統,重新啟動後我得到以下資訊:

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從緊急 shell 運行顯示該陣列未列出。

我在 RAID1 中有/dev/sda2和通常它會安裝到.它們有一個並被組裝成一個。而在 RAID0 中,通常安裝到.它們有一個並被組裝成一個。啟動時的錯誤正在尋找./dev/sdb2/bootUUID="b45.../dev/md1UUID="436.../dev/sda3/dev/sdb3/UUID="8dc.../dev/md2UUID="d0d...d0d...

我啟動到實時 USB 並運行blkid,陣列就在那裡。所以我安裝了陣列 、procsysdevboot。我檢查了一下/etc/mdadm.conf,發現所有ARRAY行都被註解掉了,所以我運行了:

# mdadm --detail --scan >> /mnt/etc/mdadm.conf

我檢查了 UUID 是否與我在數組(b45...8dc...)中使用的兩個分區相符。然後我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在緊急 shell 中使用顯示我的 RAID 陣列未列出(但組成它的分區在那裡,並且 UUID 與 中的內容匹配mdadm.conf)。

我還添加了內核參數,raid0.default_layout=2結果相同。它以前從未存在過,但維基似乎表明我需要它。

Linux 軟體包是linux-5.12.6.arch1-1,在啟動錯誤之前它告訴我它是:

Starting version 248.3-2-arch

我錯過了什麼導致陣列無法在啟動時組裝?

答案1

我仍然不知道最初是什麼導致了這個問題。但解決方案非常簡單,我覺得很愚蠢。

問題是我已經運行了:

# mount /dev/md1 /mnt/boot

chroot在ing 和運行之前從實時 USB 中獲取mkinitcpio,因為我想檢查 grub 中的設定。所以initramfs我建立的映像mdadm位於 RAID 陣列上。載入的內容initramfs對此一無所知mdadm,因此沒有建立數組。

mkinitcpio解決方案是在chroot不安裝數組的情況下運行/boot

相關內容