Как добавить пользовательский init процесс в образ initramfs, созданный с помощью Dracut?

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

Я хочу использовать Dracut для создания образа initramfs. Этот образ должен уметь уменьшать корневую файловую систему на машине Fedora. Я хотел бы сначала вручную протестировать процесс уменьшения разделов. Если все будет в порядке, я заменю эти команды скриптом для автоматического уменьшения в неинтерактивном режиме на удаленной машине.

Мне удалось добавить необходимые инструменты ‘parted’ и ‘resize2fs’ для этой задачи. Однако образ все еще использует ‘systemd’ в качестве процесса и просто загружает основную установку Fedora. Поэтому мне нужно загрузиться в какую-то оболочку и вручную выполнить команды ‘parted’ и ‘resize2fs’.

Моя попытка добавить простой скрипт ‘init’ в образ initramfs провалилась (я положил его как ‘/sbin/init’ и установил бит выполнения. Но ядро жалуется, что не может найти исполняемый процесс init).

Итак, мой вопрос: как добавить свой собственный процесс init в образ initramfs с помощью Dracut?

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

Как добавить пользовательский процесс init в образ initramfs, созданный с помощью Dracut

Добавление собственного процесса init в образ initramfs, созданный с помощью Dracut, может показаться сложной задачей, особенно если вы хотите вручную протестировать команды для уменьшения корневой файловой системы на машине Fedora. Однако с правильным подходом этот процесс можно упростить. В данном руководстве мы рассмотрим шаги, необходимые для успешной настройки вашего собственного процесса init.

1. Подготовка окружения

Прежде всего, убедитесь, что у вас установлены все необходимые пакеты для создания образа initramfs с Dracut. В системе должен быть установлен пакет dracut. Также убедитесь, что вы имеете необходимые права администратора для выполнения этих действий.

2. Создание пользовательского скрипта init

Создайте свой скрипт init. Это может быть простой Bash-скрипт, который будет выполнять ваши команды. Например, создайте файл custom_init.sh с содержимым:

#!/bin/bash
# Переход в интерактивный режим для работы с parted и resize2fs
/bin/bash

Убедитесь, что скрипт исполняемый:

chmod +x custom_init.sh

3. Структура initramfs

Dracut использует определённую файловую структуру для создания initramfs. Вам нужно добавить свой скрипт в правильное место. Для этого создайте специальный каталог на вашем рабочем месте:

mkdir -p dracut-root/sbin

Скопируйте ваш скрипт в этот каталог:

cp custom_init.sh dracut-root/sbin/init

4. Настройка Dracut для включения вашего init

Теперь, когда ваш скрипт готов, необходимо добавить его в образ initramfs. Используйте следующую команду для создания образа:

dracut --force --add "parted resize2fs" /boot/initramfs-custom.img <версия_ядра>

Эта команда создаст новый образ initramfs, включая ваш скрипт и необходимые инструменты. Замените <версия_ядра> на версию вашего ядра.

5. Проверка корректности

После завершения сборки проверьте, что ваш новый initramfs образ создан правильно. Для этого вы можете монтировать образ и проверить его содержание:

mkdir /mnt/initramfs
mount -o loop /boot/initramfs-custom.img /mnt/initramfs
ls /mnt/initramfs/sbin

В каталоге /mnt/initramfs/sbin должен быть ваш файл init.

6. Перезагрузка в новый initramfs

Теперь, когда ваш initramfs создан и содержит ваш пользовательский init, вы можете перезагрузить систему:

reboot

Во время загрузки убедитесь, что загружается именно ваш новый initramfs. Если всё настроено правильно, система должна перейти в вашу оболочку, и вы сможете выполнять команды parted и resize2fs вручную.

7. Переход к автоматизации

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

Заключение

Создание пользовательского init-процесса в образе initramfs с помощью Dracut требует внимательности и точности. Следуя шагам, описанным в данном руководстве, вы сможете успешно добавить свой процесс init и использовать его для выполнения необходимых задач на вашей системе. Если возникают дополнительные вопросы или трудности, рекомендуется обратиться к документации Dracut или специализированным форумам для получения дополнительной помощи.

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

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