Ядро 4.4.1-1 не загружается – корневой том “не существует” – версии 3.10.0.327 и 4.3.3-1 загружаются нормально.

Вопрос или проблема

Я пытаюсь установить и загрузить kernel-ml (в настоящее время 4.4.1-1) на RHEL 7.2, следуя инструкциям здесь: http://linuxg.net/install-kernel-4-x-on-enterprise-linux-7-centos-7-and-rhel-7/

Установка проходит нормально, и при перезагрузке я могу выбрать новое ядро из меню grub – однако оно не удается на середине загрузки.

Когда это происходит, я вижу несколько сообщений с следующим содержанием:

dracut-initqueue[632]: Warning: dracut-initqueue timeout - starting timeout scripts

После этого следующее:

dracut-initqueue[632]: Warning: Could not boot.
dracut-initqueue[632]: Warning: /dev/mapper/vg_root-lv_root does not exist
dracut-initqueue[632]: Warning: /dev/vg_root/lv_root does not exist
Starting Dracut emergency shell...

Я все еще могу загрузиться в ранее работавшее старое ядро, а также в другое 4.x (4.3.3-1) без проблем, но 4.4.1-1 не удается в этой точке каждый раз. До сих пор я попробовал следующее без успеха (некоторые из идей взяты из https://askubuntu.com/questions/567730/gave-up-waiting-for-root-device-ubuntu-vg-root-doesnt-exist, что похоже на схожую ошибку):

Выход из аварийной оболочки dracut – загрузка больше не продолжается

Указание корневого тома по UUID в конфигурации grub – все равно не найдено

Проверка, установлен ли lvm2 – установлен

ls /dev/mapper – все, что я вижу здесь, это “control”

Добавлен параметр загрузки all_generic_ide – без изменений

Пересобрал initramfs для сломанного ядра – без изменений

Убрал rhgb и quiet из параметров загрузки

Перечисление дисков с помощью lvm pvdisplay / lvm lvdisplay / lvm vgdisplay – ничего не найдено, пустой вывод

Я не уверен, что еще я могу попробовать здесь или что делать дальше – любые советы будут признательны

Я столкнулся с той же проблемой на Ubuntu; тот же сценарий: 4.3.3 работает, но 4.4.x + нет. Происходило то же самое: вообще не находились устройства под /dev/mapper.

В моем случае проблема не была с lvm (хотя я тоже думал, что причина в этом), а в том, что мой компьютер использует твердотельный накопитель NVMe (Dell XPS 9550). Согласно Arch Linux Wiki, местоположение драйвера “nvm” было перемещено между ядрами 4.3 и 4.4. Некоторые ОС еще не обновили свои initramfs для учета нового местоположения (включая Arch и Ubuntu), из-за чего ядро строится без него.

См. эту ошибку в очереди Ubuntu: nvm extension is not properly loaded in initramfs.

Arch Wiki предлагает:

Отредактируйте файл /etc/mkinitcpio.conf:

...
MODULES="... nvme"
...

Затем обновите загрузчик.

# mkinitcpio -p linux

Но так как в Ubuntu нет mkinitcpio для исправления проблемы, как рекомендовано в Arch Wiki, я загрузил расширение nvm в /etc/initramfs-tools/modules:

sudo bash -c "echo '
nvme' >> /etc/initramfs-tools/modules"
sudo update-initramfs -u -k all

Если у вас есть диск NVM, возможно, у вас также чипсет Skylake. Если это так, вы также должны скачать драйверы i915 и добавить расширение i915 в тот же самый файл, как рекомендовано на https://askubuntu.com/questions/717338/installing-4-4-rc7-kernel-yields-i915-module-not-available

Ответ или решение

Ваша проблема связана с обновлением ядра до версии 4.4.1-1 на RHEL 7.2, после чего система не может найти корневой том и не загружается. При этом более старые версии ядра, включая 3.10.0.327 и 4.3.3-1, продолжают функционировать корректно. Рассмотрим теоретическую часть, пример и возможные решения для вашей ситуации.

Теория

Прежде всего, стоит понимать, что ядро Linux отвечает за управление аппаратными ресурсами и служит связующим мостиком между программным обеспечением и оборудованием. Когда вы обновляете ядро, набор поддерживаемых драйверов и методов взаимодействия с оборудованием может измениться. В вашей ситуации проблема, скорее всего, связана с изменением расположения драйвера NVMe между версиями ядра 4.3 и 4.4, что препятствует правильной загрузке.

В системе Linux модуль NVMe (Non-Volatile Memory Express) используется для работы с высокопроизводительными SSD-дисками. Перемещение этого модуля в другую директорию может нарушить создание загрузочного образа, что приводит к ошибкам обнаружения дисков.

Пример

Подобные проблемы возникают и в других дистрибутивах, например, в Ubuntu. Схожая ситуация описана пользователем, который отметил, что после обновления ядра до версии 4.4.x ядро не может найти устройства в /dev/mapper. Это связано с тем, что модуль NVMe перестал загружаться в initramfs, что приводило к невозможности загрузки системы.

Применение

Для решения вашей проблемы на Red Hat Enterprise Linux вы можете предпринять следующие шаги:

  1. Добавление модуля NVMe в initramfs:

    • Для начала нужно убедиться, что модуль nvme загружается при создании образа initramfs. Проверьте конфигурацию initramfs для ручного добавления модуля nvme.
    • Откройте файл конфигурации /etc/dracut.conf или соответствующий файл конфигурации, используемый вашей системой.
    • Должно быть поле add_drivers+=" nvme ", которое гарантирует, что модуль будет добавлен в образ initramfs.
    • Пересоберите initramfs, используя следующую команду:
      sudo dracut --force
  2. Обновление загрузчика grub:

    • Убедитесь, что изменения применены во время загрузки, пересоздав конфигурацию grub:
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  3. Проверка LVM и идентификаторов UUID:

    • Проверьте, что ваши тома LVM находятся в порядке при загрузке старой версии ядра:
      lvm pvscan
      lvm vgscan
      lvm lvscan
    • Убедитесь, что идентификаторы UUID томов соответствуют тем, что указаны в /etc/fstab.
    • Если вы изменяли идентификатор в конфигурации grub, убедитесь, что используется правильный формат и сама опция включена.
  4. Обновление драйверов и модулей:

    • Для систем со Skylake или другими современными чипсетами может также потребоваться обновление и добавление модуля i915 в ваш initramfs, чтобы решить возможные проблемы с графическим интерфейсом или поверить в их отсутствие:
      echo 'i915' | sudo tee -a /etc/dracut.conf.d/my_modules.conf
      sudo dracut --force
  5. Дополнительная диагностика:

    • Подумайте об использовании жидкого раскаленного стекла для тестирования и диагностики, такого как strace, dmesg или journalctl, чтобы собрать больше информации о том, какие модули или части системы вызывают проблему.

Эти шаги должны помочь вам решить проблемы с загрузкой ядра 4.4.1-1 на вашей системе RHEL. Если проблема не устранена, возможно, стоит обратиться к сообществу для более глубокой диагностики или рассмотреть возможность использования обновленного образа или предыдущих стабильных релизов ядра, где проблема не проявляется.

Оцените материал
Добавить комментарий

Капча загружается...