Вопрос или проблема
Я использую Parabola Linux (свободный форк Arch) на ноутбуке с nvme SSD. Вчера я провел полное обновление системы, и с тех пор при загрузке у меня возникает следующая ошибка:
Похоже, это проблема с initramfs: он, кажется, не может найти корневой раздел по UUID. Я проверил lsblk
и убедился, что UUID правильный. Я также пытался войти с помощью arch-chroot
и заново выполнить mkinitcpio
, но ошибка остается. Я также проверил образ initram с помощью lsinitcpio
, чтобы убедиться, что он включает модули nvme (включает). Образ резервного initramfs, похоже, выдает ту же ошибку. Клавиатура также не работает в prompt rootfs, что говорит о том, что проблема связана с неправильной загрузкой модулей.
Есть ли у кого-нибудь идеи, в чем может быть проблема и как ее решить?
Ни grub.cfg
, ни /etc/fstab
не были изменены во время обновления системы, поэтому я совершенно не понимаю, что могло произойти.
Обновление:
Я создал пользовательский хук initcpio, чтобы попытаться отладить проблему, как предложил frostschutz в комментариях. Это показывает вывод нескольких других команд во время загрузки:
Из этого вполне очевидно, что udev не выполняет свою работу и не загружает никакие модули ядра во время фазы initcpio. Модули, загруженные в initramfs, правильной версии для ядра, как видно из того, что пара из них загружена (которые я запросил явно в mkinitcpio.conf
).
Есть ли у кого-нибудь идеи, почему udev теперь внезапно не работает после обновления системы? Я полагаю, что в udev были внесены некоторые изменения во время обновления (кажется, что он изменился на другой пакет udev?).
.
Ответ или решение
Теория
Проблема с невозможностью обнаружения корневого раздела по UUID после обновления вашего Parabola Linux, который является форком Arch Linux, может быть связана с несколькими аспектами функционирования и конфигурации системы. Загрузочная система на основе initramfs играет ключевую роль в процессе загрузки, подготавливая и монтируя корневую файловую систему. Initramfs загружает необходимые модули ядра и запускает udev для обнаружения устройств, таких как ваш nvme SSD. Если не удается обнаружить раздел по UUID, это может указывать на проблемы с загрузкой модулей, конфигурацией initramfs или работой udev.
UUID, или Universally Unique Identifier, является уникальным идентификатором файловой системы на диске. Если конфигурация вашего ядра или initramfs не обновлена правильно, или если компоненты, такие как udev, не работают должным образом, это может привести к проблеме, когда система не может определить и присвоить необходимый UUID вашим дискам.
Пример
Вы упомянули, что проверили наличие модулей nvme в initramfs при помощи команды lsinitcpio
— это уже большой шаг вперед. Важно понимать, что если initramfs не может найти и загрузить необходимые модули, это может предотвратить определение и монтирование корневого раздела.
Проблема с неработающим udev, который не загружает модули, как вы обнаружили с помощью пользовательского крючка initcpio, может быть связана с изменением самого пакета udev или его конфигураций после обновления системы. Udev обрабатывает событийную систему ядра и отвечает за создание устройств и управление ими в /dev
, и если он не функционирует, система не сможет корректно увидеть и использовать устройства.
Применение
-
Проверка конфигурации udev: Обратите внимание на изменения в конфигурационных файлах udev в вашем
/etc/udev/
или обновите свою конфигурацию до новой версии по примеру поставляемой вместе с обновлением. Основное внимание следует уделить файлу правил в/etc/udev/rules.d/
. -
Проверка обновленных пакетов: Вернитесь к списку недавно обновленных пакетов и найдите изменения, связанные с udev или системами управления устройствами. Команда
pacman -Q --changelog udev
может помочь выявить любые изменения или потенциальные проблемы. -
Пересборка initramfs: Команда
mkinitcpio -p linux
должна быть повторно выполнена, чтобы убедиться, что все модули и конфигурации правильно включены в initramfs, особенно если произошли обновления в ядре или системе управления устройствами. -
Логирование и Журналы: Проверьте содержимое
/var/log/boot.log
,/var/log/dmesg
и системного журнала с помощьюjournalctl
. Там могут быть указаны ошибки udev или загрузки модулей, которые не проявляются непосредственно в консольных выходах. -
Fallback initramfs: Используйте fallback initramfs для диагностики проблем конфигурации. Если в нём та же ошибка, значит проблема в широкой системной конфигурации или в общем обновлении udev.
-
Временная загрузочная среда: Загрузитесь с Live USB для чрута в вашу систему и диагностики без запуска текущего initramfs. Так можно обновить или отладить модули, также проверьте
/etc/default/grub
на наличие ошибок конфигурации.
Проблема с udev могла возникнуть из-за конфликта в пакетах или несовместимости. Предположительная смена пакета udev может обратить внимание на необходимое сопоставление старых и новых правил или рассмотреть откат обновлений до рабочей версии. Прояснение, почему измененный пакет не функционирует как ожидается, может включать сравнение с более ранними версиями или обсуждение в сообществе пользователей и разработчиков Parabola и Arch Linux.