Вы собираетесь создать свой дистрибутив на базе Ubuntu и сталкиваетесь с внезапным крахом установщика? Такая проблема часто возникает из-за незаметных нюансов конфигурации, которые легко пропустить. Давайте разберёмся, как найти корень ошибки и сделать процесс установки стабильным, даже если логи кажутся запутанными.
Где искать причины сбоя
Первое, на что стоит обратить внимание – логи установки. В примере выше ошибки в /var/log/casper.log
указывают на проблемы с определением FQDN (полного доменного имени хоста) и DNS. Это может казаться второстепенным, но для Ubiquity (графического установщика Ubuntu) такие сбои часто становятся критичными.
Что проверить в первую очередь:
- Наличие корректного имени хоста в файле
/etc/hosts
внутри собранного образа (например, через chroot перед упаковкой ISO). - Работоспособность сетевых настроек в виртуальной машине – иногда DHCP-клиент не успевает получить адрес до начала установки.
Но в данном случае ключевая подсказка скрывалась в syslog
: ошибка ubiquity-slideshow-foo
отсутствует в системе. Этот пакет отвечает за слайд-шоу во время установки, и без него Ubiquity может завершать работу аварийно. Как это исправить?
# В конфигурации live-build (папка config/package-lists/)
echo "ubiquity-slideshow-ubuntu" >> desktop.list.chroot_install
Кстати, если вы используете собственную тему установки, замените «ubuntu» на её название. Пропуск этого шага – частая ошибка при кастомизации, особенно если вы удаляете «лишние» пакеты из базового образа.
Тонкая настройка live-build и патчинг
Даже после добавления слайд-шоу проблема может повториться из-за багов в самом Ubiquity. Например, в Launchpad есть открытый тикет с аналогичными симптомами. Если официальное исправление ещё не добавлено в репозитории, можно вручную применить патч из обсуждения:
Важно: Перед изменением скриптов установщика создайте резервную копию образа – некоторые правки могут нарушить цифровые подписи пакетов.
Пример исправления для файла /usr/lib/ubiquity/plugins/ubi-usersetup.py
(основано на предложенном патче):
# Заменить строку
self.db.get('passwd/user-password-crypted'))
# На
self.db.get('passwd/user-password'))
Этот код относится к обработке паролей пользователей. Ошибка в логике шифрования может приводить к неожиданным исключениям, особенно при использовании нестандартных настроек аутентификации.
Дополнительные шаги для стабильной сборки
Чтобы избежать проблем в будущем, рекомендую:
- Всегда включать отладочные пакеты в образ –
casper
,ubiquity-debug
,systemd-logind
. - Проверять зависимости через
apt-rdepends
перед исключением компонентов (например,apt-rdepends ubiquity
покажет критичные связи). - Тестировать ISO не только в Virtual Manager, но и на реальном железе – некоторые драйверы или службы могут вести себя иначе.
Если после всех правок установщик всё равно падает, попробуйте собрать образ с ключом --debug
в live-build. Это сохранит временные файлы и chroot-окружение, что позволит вручную проверить, какие данные передаются в Ubiquity на этапе конфигурации.
И помните: даже незначительные опечатки в конфигах (вроде пропущенной точки с запятой или неправильного расширения файла) могут привести к часам бесплодных поисков. Удачи в создании идеального дистрибутива!