更新后无法再启动至 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

相关内容