Использование и отладка overlayroot в Ubuntu 24.04 EC2

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

Я пытаюсь использовать пакет overlayroot в Ubuntu 24.04 для загрузки в файловую систему root только для чтения, но с записываемым оверлеем. Все, что я вижу в Интернете, говорит о том, чтобы обновить файл /etc/overlayroot.conf и затем перезагрузиться. Вот что я настроил:

overlayroot=tmpfs:recurse=1,debug=1
overlayroot_cfgdisk="disabled"

Но после перезагрузки и входа через SSH моя / не является overlayfs, и, похоже, нет журналов, указывающих, в чем может быть проблема. Единственное, что я могу предположить, это то, что разница может быть из-за того, что я делаю это в EC2.

Overlayroot — это функция, которую необходимо настроить в Initramfs / initrd / ранней пользовательской среде, до того как реальная система инициализации начнет работать с rootfs.

Теперь, инструменты initramfs-tools в Ubuntu уже имеют хук для предоставления этой функциональности. Все это настроено так, чтобы быть активным по умолчанию, так что, пока ваш конфигурационный файл корректен, это именно то, что он будет делать. Он должен “просто работать”.

Однако, по крайней мере, для Amazon EC2 это полностью отключено. По умолчанию он пытается “загрузку без initrd”. Так что все загружается без использования initrd Ubuntu вообще. Так что как бы вы ни настроили свой initrd, это не выполняется.

Без initramfs overlayroot вообще не работает. Итак, когда вы загружаетесь без initrd, вы загружаетесь без overlayroot.

Проверьте /etc/default/grub, /etc/default/grub.d/* на наличие чего-то вроде этого:

==> /etc/default/grub.d/40-force-partuuid.cfg <==
# Принудительная загрузка без initramfs путем установки GRUB_FORCE_PARTUUID
# Удалите эту строку, чтобы включить загрузку с initramfs
GRUB_FORCE_PARTUUID=2bb9818b-3393-4017-8da7-c739e7b96eac

Закомментируйте строку GRUB_FORCE_PARTUUID. Запустите update-grub, чтобы изменения вступили в силу. Следующая перезагрузка должна быть с включенным initrd, и если overlayroot настроен, он должен сработать. (Также запустите update-initramfs -u на случай, если это не было сделано ранее.)

Для настройки overlayroot обратите внимание, что существует по крайней мере два конфигурационных файла: /etc/overlayroot.conf и /etc/overlayroot.local.conf. Второй переопределяет настройки первого.

Также возможно наличие третьей конфигурации (встроенной в сам initrd). Однако, это, похоже, не используется по умолчанию, поэтому я не рассматривал этот путь более подробно.

.

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

Использование overlayroot в Ubuntu 24.04 на EC2 для создания файсистемы с возможностью записи с верхним слоем, в то время как основной корневой слой остается только для чтения, представляет собой сложную задачу, с которой можно столкнуться в облачной среде, такой как Amazon EC2. Чтобы разобраться в этой проблеме, важно понять теорию, примеры реализации и практическое применение.

Теория

Overlayroot — это мощный инструмент, который позволяет загружать операционную систему с помощью монтирования root-файловой системы в режиме "read-only" с временной "read-write" областью на верхнем слое. Это может быть полезно для систем, которые нужно защищать от нежелательных изменений или для тестирования конфигураций, когда изменения не следует записывать на постоянной основе.

overlayroot непосредственно интегрирован в систему начальной загрузки через initramfs, который инициализирует файловую систему перед загрузкой основной ОС. Обычно, чтобы overlayroot корректно работал, требуется настроить файл /etc/overlayroot.conf.

Пример

Предположим, что вы уже настроили файл конфигурации /etc/overlayroot.conf следующим образом:

overlayroot=tmpfs:recurse=1,debug=1
overlayroot_cfgdisk="disabled"

Эти настройки подразумевают, что временная файловая система (tmpfs) будет использоваться для верхнего слоя, причем с рекурсивным копированием и включенной отладкой.

Однако, несмотря на корректную конфигурацию, может возникнуть ситуация, когда overlayroot не выполняется, что зачастую связано с особенностями загрузки EC2.

Применение

На серверах EC2 загрузка без initramfs по умолчанию может быть одной из причин, по которой overlayroot не работает. В Amazon EC2 используется особая конфигурация, способствующая "initrdless boot", то есть загрузке без использования initramfs, что напрямую препятствует работе overlayroot.

Шаги по исправлению:

  1. Проверка конфигурации GRUB:
    Убедитесь, что опция GRUB_FORCE_PARTUUID отключена в файлах конфигурации GRUB, чтобы разрешить использование initramfs.

    Откройте файл /etc/default/grub.d/ и найдите строки:

    # Force boot without an initramfs by setting GRUB_FORCE_PARTUUID
    # Remove this line to enable boot with an initramfs
    GRUB_FORCE_PARTUUID=2bb9818b-3393-4017-8da7-c739e7b96eac

    Путем комментирования этой строки или её удаления и последующего выполнения:

    sudo update-grub
  2. Обновление initramfs:
    Убедитесь, что initramfs обновлён с настройками overlayroot:

    sudo update-initramfs -u
  3. Конфигурация overlayroot:
    Не забудьте проверить оба файла конфигурации overlayroot:

    • /etc/overlayroot.conf
    • /etc/overlayroot.local.conf (он может перекрывать настройки из первого).

    Включение отладочной информации (debug=1) в конфигурации может помочь выявить более детальные причинные сообщения в журналах системы.

  4. Перезагрузка системы:
    После этих изменений перезагрузите инстанс EC2, чтобы изменения вступили в силу.

Заключение

Работа с overlayroot на EC2 требует понимания начальной конфигурации загрузочной системы сервера. Изменение последовательности загрузки, включение использования initramfs, и корректная настройка параметров конфигурации могут помочь в успешном использовании данной технологии. В случае продолжения проблем рекомендуется просмотреть системные журналы расположенные в /var/log/ для выявления дополнительных факторов, влияющих на процесс загрузки.

Таким образом, обращение к overlayroot и его успешная отладка требуют внимания к деталям конфигурационных файлов и механизма загрузки системы, особенно в специфической среде, такой как Amazon EC2.

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

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