Вопрос или проблема
Я пытаюсь установить и загрузить 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 вы можете предпринять следующие шаги:
-
Добавление модуля NVMe в initramfs:
- Для начала нужно убедиться, что модуль nvme загружается при создании образа initramfs. Проверьте конфигурацию initramfs для ручного добавления модуля nvme.
- Откройте файл конфигурации
/etc/dracut.conf
или соответствующий файл конфигурации, используемый вашей системой. - Должно быть поле
add_drivers+=" nvme "
, которое гарантирует, что модуль будет добавлен в образ initramfs. - Пересоберите initramfs, используя следующую команду:
sudo dracut --force
-
Обновление загрузчика grub:
- Убедитесь, что изменения применены во время загрузки, пересоздав конфигурацию grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Убедитесь, что изменения применены во время загрузки, пересоздав конфигурацию grub:
-
Проверка LVM и идентификаторов UUID:
- Проверьте, что ваши тома LVM находятся в порядке при загрузке старой версии ядра:
lvm pvscan lvm vgscan lvm lvscan
- Убедитесь, что идентификаторы UUID томов соответствуют тем, что указаны в
/etc/fstab
. - Если вы изменяли идентификатор в конфигурации grub, убедитесь, что используется правильный формат и сама опция включена.
- Проверьте, что ваши тома LVM находятся в порядке при загрузке старой версии ядра:
-
Обновление драйверов и модулей:
- Для систем со Skylake или другими современными чипсетами может также потребоваться обновление и добавление модуля i915 в ваш initramfs, чтобы решить возможные проблемы с графическим интерфейсом или поверить в их отсутствие:
echo 'i915' | sudo tee -a /etc/dracut.conf.d/my_modules.conf sudo dracut --force
- Для систем со Skylake или другими современными чипсетами может также потребоваться обновление и добавление модуля i915 в ваш initramfs, чтобы решить возможные проблемы с графическим интерфейсом или поверить в их отсутствие:
-
Дополнительная диагностика:
- Подумайте об использовании жидкого раскаленного стекла для тестирования и диагностики, такого как
strace
,dmesg
илиjournalctl
, чтобы собрать больше информации о том, какие модули или части системы вызывают проблему.
- Подумайте об использовании жидкого раскаленного стекла для тестирования и диагностики, такого как
Эти шаги должны помочь вам решить проблемы с загрузкой ядра 4.4.1-1 на вашей системе RHEL. Если проблема не устранена, возможно, стоит обратиться к сообществу для более глубокой диагностики или рассмотреть возможность использования обновленного образа или предыдущих стабильных релизов ядра, где проблема не проявляется.