Я пытаюсь решить проблему конфигурации загрузки Linux, связанную с устаревшим grub (0.97), LVM2 и dracut, и пытаюсь устранить несколько отвлекающих факторов.
Мой процесс проб и ошибок выглядит так:
В интересах удаления №4, не пропущен ли мне шаг, на котором мне нужно обновить образ initramfs?
Что содержит образ initramfs, который может относиться к тем файловым системам, которые монтируются во время загрузки?
Я пытаюсь понять, как создать сценарий массового обновления работающих систем с минимальным временем простоя, поместив новую ОС в запасной раздел LVM, а затем изменив grub.conf / menu.lst для загрузки с запасного раздела.
ОС основана на CentOS 6, и мы используем установщик Anaconda - по какой-то причине Anaconda создает /boot/grub/grub.conf
файл и символические ссылки на него /boot/grub/menu.lst
.
Вы упоминаете grub.conf и Grub 0.97. Grub 0.97 не использует grub.conf
. Оно использует menu.lst
. Это несколько похоже на то, что в вашей системе установлены оба двоичных файла и вы немного запутались.
Вам не нужно перестраивать файлы initramfs / initrd при изменении вашего grub.conf или menu.list. Между ними почти нет связи, по крайней мере, ни в одном из дистрибутивов, которые я видел.
Файлы grub должны существовать вне initramfs, поскольку они используются до того, как ramdisk будет когда-либо загружен. Grub вызывает ядро и указывает ему на расположение образа виртуального диска. Если бы вы добавляли еще одну опцию в свое меню grub, например, для загрузки другой ОС, вам не нужно было бы ничего делать со своим initramfs.
Если вы что-то измените в том, как загружается ваша система, вам может потребоваться внести изменения как в конфигурацию grub, так и в другие конфигурации, что может потребовать от вас обновления initramfs. Итак, вам может потребоваться обновить оба, но вам не нужно обновлять initramfs, потому что вы обновляете grub, или наоборот.
Должен быть загрузочный раздел, в котором
Этот загрузочный раздел должен быть доступен для чтения grub, поэтому он не может находиться в LVM. Рекомендуется создать отдельный небольшой первичный раздел в передней части загрузочного диска (я обычно использую для этого 100 МБ, обычно монтируемый как / boot).
Что присутствует в initramfs и как он настраивается, зависит от вашей реализации. Обычно ваш дистрибутив Linux содержит свою конкретную реализацию initramfs (так что все зависит от того, какой дистрибутив вы используете).
Initramfs должен иметь возможность монтировать корневую файловую систему, и для этого ему потребуются модули ядра, необходимые для доступа к этому диску, разделу и файловой системе, если они уже не скомпилированы в само ядро. Также необходимо каким-то образом указать ваш выбор корневой файловой системы и используемые параметры монтирования. Некоторые реализации должны обновлять образ initramfs при изменении некоторых настроек, выборе другой корневой файловой системы или использовании других параметров монтирования. Однако можно написать реализацию initramfs, которая не нуждается в обновлении, за исключением случаев изменения / обновления / перекомпиляции ядра и модулей, путем чтения необходимых параметров из командной строки ядра. Итак, чтобы узнать, как именно работает ваша реализация initramfs, вам нужно либо прочитать сценарий внутри, либо прочитать документацию, относящуюся к вашему дистрибутиву.