Недавно я обновил свою систему и после перезагрузки получаю следующее:
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
из аварийной оболочки показывает, что массив отсутствует в списке.
У меня есть /dev/sda2
и /dev/sdb2
в RAID1 и обычно он монтируется в /boot
. Они имеют UUID="b45...
и собираются в /dev/md1
с UUID="436...
. В то время как /dev/sda3
и /dev/sdb3
в RAID0 обычно монтируются в /
. Они имеют UUID="8dc...
и собираются в /dev/md2
с UUID="d0d...
. Ошибка при загрузке ищет d0d...
.
Я загрузился с Live 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
аварийной оболочки показывает, что мои 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
с живого USB перед chroot
ing и запуском, mkinitcpio
потому что я хотел проверить настройки в grub. Поэтому initramfs
образ, который я создал, mdadm
был на RAID-массиве. Тот, initramfs
который был загружен, не имел ни малейшего понятия об этом mdadm
и поэтому не создавал массив.
Решением было запустить mkinitcpio
БЕЗ chroot
монтирования массива в /boot
.