- Вопрос или проблема
- Ответ или решение
- Как добавить пользовательский процесс init в образ initramfs, созданный с помощью Dracut
- 1. Подготовка окружения
- 2. Создание пользовательского скрипта init
- 3. Структура initramfs
- 4. Настройка Dracut для включения вашего init
- 5. Проверка корректности
- 6. Перезагрузка в новый initramfs
- 7. Переход к автоматизации
- Заключение
Вопрос или проблема
Я хочу использовать 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 или специализированным форумам для получения дополнительной помощи.