Как самому изготовить дистрибутив Linux?
Нужно ли делать собственный дистрибутив?
- Цели — зачем?
- Задачи — что и как?
- Возможности имеющихся дистрибутивов
- Варианты решения:
- Использовать имеющийся
- Модифицировать имеющийся (нетехнологичным образом)
- Использовать технологию создания для нового дистрибутива
Дистрибутив — набор программных продуктов, который позволяет организовать ОС на компьютере.
Этапы создания дистрибутива
- Сборка (deployment)
- Активация (загрузка)
- Подготовка аппаратуры
- Работы в живой системе
Сборка
См. ниже: для сборки необходимо иметь понияти о то, что и зачем собираем
Активация
Не должна быть интерактивной
- Загрузка: ядро и стартовый виртуальный диск (vmlinuz + initrd)
- Распознавание базовых устройств
- Busybox (минималистичный вариант Linux-окружения)
- Embedded-системы: RAD Linux и т. п.
- Настройка окружения для следующей стадии (propagator)
Стадия подготовки
Полноценное Linux-окружение, урезанное и модифицированное для выполнения задач этого этапа
Варианты:
Live
LiveCD, dedicated server и т. п. Задача: начать полноценную работу на этой стадии.
- Больше модификаций
- для работы с LiveCD (например, монтирование RW, autologin)
- автоматическая настройка
- преднастройка на стадии сборки
- «профиль» — исправления в системе (т. к. имеющаяся мсистема не устраивает)
- Больше возможностей (LiveCD — в объёме полной системы: XOrg, OOo, ...)
- Непакетированное содержимое
Установщик
Задача: подготовиться к полноценной установке настоящего линукса на носитель И обеспечить загрузку с этого насителя.
- Подготовка устройства: разбиение диска, указание точек монтирования и т. п.
- Наполнение системного устройства:
- из архива
- путём установки пакетов в chroot
- Трудность: стадия подготовки загружена с одного носителя, а основная работа предусматривает загрузку с другого, нужен искусственный интеллект
Живая система
Задача: настроить готовую систему
- Доустановка пакетов. В том числе, выборочная.
- Настройка всего.
- first-time сценарии (например, изготовление ssh-ключа)
Предварительная стадия: сборка
- Создание дерева ФС, которое имеет место на стадии подготовки
- Установка пакетов в chroot
- Запуск first-time сценариев
- Перенос некоторого контента
- Сборка образа этой ФС (загружается из initrd и работает независимо от носителя)
- Сборка загрузочной среды (initrd+ядро)
- Файлы вне подготовленного образа ФС
- Просто контентa (документация и т. п.)
- ПакетыC (откуда производить доустановку на стадии живой системы)
- Формирование носителя (например, CD) и настройка загрузчика на этом носителе