我最近更新了系統,重新啟動後我得到以下資訊:
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
/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...
)中使用的兩個分區相符。然後我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
。