Как сделать установщик для linux

Добавил пользователь Alex
Обновлено: 04.10.2024

Конечно очень радостно, что существуют такие инструменты как Reconstructor и Ubuntu Customization Kit, однако они всё выполняют в автоматическом режиме и не очень-то подходят для тонкой настройки под себя. В этой статье я постараюсь рассказать как можно руками сделать всё то, что делают вышеназванные инструменты и как изменить многие недоступные им параметры.

Фронт работ

Для создания Ubuntu Custom Live CD нужно продумать три важных момента: 1) В какой системе мы будем строить наш диск. Надеюсь, все Вы прекрасно понимаете, что мы ведем речь про компьютер под управлением Ubuntu. Если Ubuntu у Вас не установлена, то Вы можете поставить ее на виртуальную машину и там уже строить образ диска. Помимо этого, нам нужно поставить следующие пакеты для создания живого диска: SYSLINUX, Squashfs-tools, genisoimage Первый пакет — загрузчик ядра, второй — файловая система SquashFS, а третий — создатель образа диска.

2) Папка для образа диска. Образ диска — это то, что будет записано на CD/DVD/BluRay/USB (в зависимости от того кому что нравится). Просто создайте отдельную папку для образа диска. Для образа нужно скопировать: - Загрузчик ISOLinux - Ядро с initrd и изолированной системой - Дополнительные файлы для указания времени загрузки и других важных (и не очень) параметров

Папка для образа диска создается отдельно от корня будущей изолированной системы.

3) Изолированная система

Изолированная система — это та система, которая будет загружена в LiveCD. Ей не нужны ни ядро, ни загрузчик, если Вы собираетесь устанавливать ОС с помощью установщика Ubiquity. Для того чтобы провести автоматическое определение и настройку оборудования, потребуется живая система под символичным названием Casper. Ее нужно установить в initrd, а ядро Casper скопировать в папку образа диска.

Изолированная система хранится и выполняется в виде файла, сжатого в файл SquashFS. На данный момент ИС будет сохранена в виде папки в хост-системе.

Создание изолированной системы

Обратите внимание: Версия debootstrap для Ubuntu содержит файлы для загрузки только следующего релиза Ubuntu! Т. е. Вы не сможете скачать базовую систему для raring (Ubuntu 13.04) в precise (Ubuntu 12.04 LTS ). На наше счастье, обойти это ограничение легко обойти, скачав debootstrap из репозитория raring или взяв последнюю версию из папки pool и установив его с помощью dpkg. Помимо того, у debootstrap нет зависимостей, а значит его установка вручную не вызовет никаких проблем в Вашей системе

Обратите внимание: Если Вы хотите собрать следующий релиз Ubuntu, но не можете его загрузить, воспользуйтесь следующей хитростью:

Важно установить приложения вроде MySQL, Virtualbox после того как были скачаны ядро Linux (а оно у нас не скачано!(настолько у нас минимальна система)) и установлены общие настройки, потому что эти приложения требуют установки своих модулей ядра для полной настройки.

Если Вы планируете установить что-либо, использующее метапакеты окружений рабочего стола (например xfce4), Вам также потребуется связать файл в изолированной системе как следует (не только с помощью devpts). Иначе, GRUB при установке выдаст ошибку и Вы не сможете настроить пакеты. Чтобы этого избежать свяжите устройства с помощью команды:

Аналогично нужно примонтировать proc, sysfs и devpts Теперь скопируем системные файлы (их можно взять на любой машине с Ubuntu, подключенной к интернету):

Обратите внимание: Если Вы скачали одну версию Ubuntu, а у Вас установлена другая, Вам нужно сменить прилагательное в chroot/etc/apt/sources.list командой:

Обязательно! Сделайте бекап /sbin/initctl, потому что следующий шаг удаляет этот файл. Дело в том что начиная с версии 10.04 upstart не содержит файла /sbin/initctl.distrib и обновление этого пакета этот файл не возвращает.

Решением может стать символическая ссылка на /bin/true:

Если Вы этого не сделаете, то консоль выругается:

Обновите пакеты, если хотите :

Установите пакеты, необходимые для живой системы:

Ранее, до Ubuntu 10.10 пакет discover назывался discover1.

Если Вы загружаете ОС Ubuntu 10.04, то Вам нужно поставить следующие пакеты: grub2 plymouth-x11

Для ранних релизов (заканчивая версией 9.04) была характерна следующая проблема: ОС вешала сеть, если был установлен Network Manager. На наше счастье, данная проблема была устранена в релизе 9.10. Команда для установки NM:

Далее, установите те программы какие Вы захотите. На данном этапе Вы создаете свою систему. Заполняйте ее тем, чем хотите. Однако перед этим поставьте программу ubuntu after install для установки тех программ, которые Вы добавить забыли. После наполнения ПО возвращайтесь к данному руководству.

Установка программы установки

Для GTK интерфейса — Unity, GNOME, XFCE и LXDE

Unity — стандартная ОРС для ubuntu, самая красивая ОРС (по моему мнению) GNOME — что-то по-новому от старого доброго Mac OS X XFCE и LXDE — это ОРС, не нагружающие ресурсы. Рекомендованы для установки на старых компьютерах

Для Qt интерфейса — KDE

KDE — это Windows-подобное окружение рабочего стола и пожалуй, во всем хочет походить на своего старшего собрата (например это ОРС самое большое по объему данных)

Дополнительная подготовка

На данном этапе я расскажу, как создать файлы initrd.lz и casper-uuid-generic, необходимые для нормальной работы образа. В chroot выполняем

В том же терминале открываем вторую вкладку и выполняем:

Возращаемся в первую вкладку и удаляем из /tmp все:

Очистка Чрута.

Если Вы установили все программы, то убедитесь что будет работать

Ранее в этом руководстве я просил Вас сделать бекап /sbin/initctl. Вы его сделали? Он сейчас может потребоваться. Если эта команда не сработает, восстановите /sbin/initctl из бекапа.

Если у Вас более одного ядра Linux, удалите старые ядра:

После чего проведите очистку:

Если у Вас все еще подключен /dev, отключите его:

То есть, Вы вошли в изолированную систему, установили пакеты, провели очистку и вышли.

Настройка окружающей среды по умолчанию

Данный пункт не является обязательным. При загрузке окружения рабочего стола (в моем случае Unity 7) хочется настроить программы на боковой панели, настроить часы, которые выглядят ужасно в обычной версии Unity. Поэтому здесь я расскажу как можно настроить unity 7. Общеизвестно, что Unity 7 настраивается через dconf. Файлы настроек по умолчанию находятся в папке

и имеют имена соответствующие иерархии в dconf-editor. Мы изменим некоторые из них:

Листинг com.canonical.Unity.gschema.xml
Листинг com.canonical.indicator.datetime.gschema.xml
Листинг org.gnome.nautilus.gschema.xml

Создание папки для CD диска и ее заполнение

Создайте папку для cd с тремя подкаталогами:

Во-вторых, если у Вас возникли проблемы с копированием ядра или инитрд — может быть, у Вас этот файл не один — тогда используйте следующие команды:

Теперь надо поставить ISOLinux и SBM командами:

Инструкции при загрузке при создании Remix

Для того чтобы дать какие-либо инструкции при загрузке пользователю нужно создать файл image/isolinux/isolinux.txt, например:

Графика во время загрузки может отсутвовать, но это не главное. Главное состоит в том, что в тексте сверху есть спецсимвол, указывающий на файл splash.rle. Чтобы создать этот хитрый символ нужно:

2. Использовать следующую команду:

и изменить файл emptyfile, используя любой текстовый редактор. Добавьте имя файла после символа и затем со следующей строки напишите то, что Вы хотите вывести на экран в качестве приветствия. Сохраните данный файл как isolinux.txt и дело в шляпе!

3. (Способ для Ъ-линуксоидов!) Используйте vi, нажмите Ctrl+v и затем Ctrl+x для того чтобы создать спецсимвол. Это не работает ни в nano, ни в gedit, ни в каком редакторе, похожем на них!

Для того чтобы создать файл splash.rle, создайте изображение 640*480, конвертируйте его в 15 цветов и сохраните файл в формате .bmp. После установите NetPBM и выполните команды:

Настройка загрузчика

Создайте файл image/isolinux/isolinux.cfg для настройки загрузчика. Пожалуйста, прочтите инструкцию по созданию конфига в /usr/share/doc/syslinux для того чтобы узнать все возможности конфигурирования. Здесь я выложу образец конфига (если что, сверяйтесь с ним):

Не забудьте выбрать правильное расширение для initrd (initrd.gz или initrd.lz). Теперь в CD можно войти, по крайней мере после того, как мы создадим образ.

Помимо этого зададим нужную нам локаль при запуске с помощью стандартной темы ubuntu. Для этого выполним

Формальности.

Следующие действия нужны для нормальной работы LiveCD. Нравится Вам это или нет, это нужно сделать.

Создание манифеста.

Сжатие изолированной системы.

Для того чтобы сжать систему в один файл, нужно ввести команду:

Эта команда создаст на диске filesystem.squashfs с сжатой ОС. Если Вам нужно установить с LiveCD, оставьте раздел /boot в покое. Если Вы хотите создать LiveCD только для демонстрации, то /boot можно удалить. Тогда команда, указанная выше, будет иметь вид:

Да, и еще: если Вы создаете Убунту на версии, которая вышла раньше, то нужно установить пакет из той версии, какую Вы хотите создать! (Иначе Ваш LiveCD не загрузится) Например, у Вас установлена Ubuntu 12.04, а Вы хотите создать сборку Ubuntu 14.04. Тогда Вам потребуются инструменты из trusty (14.04) репозитория. Помимо файла сжатой файловой системы, нужно написать файл с размером этой ФС. Для этого выполним команду

Создание diskdefines

Признание LiveCD подлинной

Читайте также: