Какова связь между dracut и initramfs?

Какова связь между dracut и initramfs?

При возникновении сбоя загрузки я вижу, как система переходит к подсказке с надписью dracut.

Насколько я понимаю, dracut используется для генерации образа initramfs. Что меня смущает, так это то, что, исходя из того факта, что я перехожу в оболочку с названием "dracut", это не просто служебная программа для генерации initramfs, но и на самом деле программа сама по себе, которая запускается при загрузке. Это верно? - Если вышеизложенное верно, то в чем разница/связь между initramfs и dracut?

решение1

Dracut — это и инструмент для создания экземпляра initramfs, и то, что называется аварийной оболочкой dracut. Целью initramfs является предоставление среды, способной находить, загружать и передавать выполнение в корневую файловую систему. Если в какой-то момент во время этого процесса что-то пойдет не так, initramfs перейдет в аварийную оболочку dracut, что даст вам возможность отладить/попытаться исправить проблему.

По поводу комментария:

«Я был бы рад. Чтобы прояснить ситуацию, изначально у меня была виртуальная машина VMWare с RHEL. Из-за проблемы с импортом виртуальных машин напрямую в VMWare Workstation я решил просто вытащить жесткий диск виртуальной машины из ESXi и перенести его на новую виртуальную машину в VMWare Workstation. Однако, когда я пытаюсь загрузить виртуальную машину, мне удается успешно загрузить GRUB, а затем и dracut, но dracut не может найти корневую файловую систему. Это странно, поскольку можно было бы ожидать, что если бы dracut мог загрузиться, система также смогла бы найти корневую файловую систему».

При установке RHEL dracut генерирует экземпляр initramfs, который содержит только драйверы, необходимые для совместимости с оборудованием, на котором установлена ​​ОС. Когда я переместил жесткий диск моего экземпляра RHEL с ESXi на одном наборе виртуального оборудования на VMWare Workstation, другой набор виртуального оборудования, initramfs, связанный с ядром, больше не имел соответствующего набора драйверов, необходимых для поиска и загрузки корневой файловой системы.

Чтобы исправить проблему, перед тем как переместить жесткий диск, нужно запустить dracut --force --no-hostonly. Цитатаhttps://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/

Параметр force сообщает dracut, что перезаписывать существующий архив initramfs можно. Параметр no-hostonly переопределяет поведение по умолчанию, включающее только те драйверы, которые относятся к работающему в данный момент компьютеру, и заставляет dracut вместо этого включать все драйверы в initramfs.

Это означает, что dracut теперь будет "раздутым" и будет иметь все необходимые драйверы, необходимые для перемещения жесткого диска. После завершения перемещения жесткого диска вам придется перезапустить dracut, чтобы dracut --forceвосстановить облегченную версию dracut.

Связанный контент