Преамбула
Статья,
представленная вашему вниманию, посвящена построению сред инсталяции,
изменению поведения инсталятора, распределјнным возможностям установки,
сборке LiveCD, добавлению стороннего ПО, используя гибкую архитектуру
Debian GNU/Linux.
Первоначально представлена в виде доклада на 4й
международной конференции разработчиков и пользователей свободного
программного обеспечения Linux Vacation Eastern Europe'2008 (LVEE-2008)
28 июня 2008 года, Гродно, Беларусь.
Позже был дополнен новой информацией о работах компании Promwad в области использования Debian-based дистрибутивов.
Все
описанные проекты-примеры являются реальными заказами, выполненые
автором в период c 2007 по 2008 год в сфере Outsourcing Software
Development.
Что такое Custom Debian Distribution
Debian GNU/Linux -Операционная система, содержащая более 18000 программных пакетов различного назначения.
Custom Debian Distribution или
CDD является подмножеством Debian, призванный быть инструментом для
специальных групп пользователей, сконфигурированный таким образом,
чтобы предоставлять специальный функционал "из коробки"
1.
Debian GNU/Linux включает в себя пакетную систему DEB
3+APT
4
и инсталлятор промышленного уровня D-I, позволяющий гибко управлять
составом устанавливаемого программного обеспечения, ходом инсталяции и
вводить, при необходимости, новый функционал.
Архитектура и реализация инсталлятора Debian (D-I)
Debian Installer
(далее D-I) представляет собой специальную версию дистрибутива Debian,
выполняющую задачи начального развјртывания операционной системы на
устройстве (устройствах) пользователя.
Проектные решения
При проектировании D-I разработчики должны были учитывать следующие условия:
- Поддержка более 12 принципиально различных архитектур (от встраиваемых компьютеров на базе ARM до мейнфремов IBM S/390)
-
Различные источники инсталяции и управляющие устройства (персональные
компьютеры, бездисковые станции, серверы без видеоинтерфейсов и
клавиатур, бортовая электроника)
- Разнообразные методы управления разбиением носителя для инсталяции
- Ручная, автоматизированная (Привет всем выпускникам военных кафедр технических ВУЗов) и автоматическая инсталяция
- Компактность и низкие требования к производительности и системным ресурсам
- Локализация на национальные языки
Мы
можем утверждать, что ни один другой инсталятор ОС, как свободно
распространяемый, так и коммерческий, не удовлетворяет указанным выше
требованиям.
Требования к инсталятору
- Модульность -стандартные пакеты формата UDEB (micro DEB)
- Расширяемость -простое добавление новых, нестандартных компонент
- Гибкое управление порядком установки пакетов
- Конфигурируемость -стандартный механизм debconf
5
- Перезагрузка в процессе инсталяции не требуется
- Языки реализации ограничены Bourne Shell и С
- Базовая система построена на основе BusyBox
6
- Вариативность внешнего вида (консольный, графика, web-based)
Стадии инсталяции
- Загрузка и инициализация -настройка инсталятора для последующей загрузки любых дополнительных компонент
- Загрузка и установка дополнительных компонент инсталятора расширение инсталятора до полной функциональности
- Конфигурирование сетевых интерфейсов
- Разметка и форматирование дисков и разделов
- Инсталяция целевой системы
Таблица
1 наглядно иллюстрирует отличия между методами. Содержит список
компонент (udebs), вовлечјнных в первую и вторую стадию для методов
установки с CD-ROM и через сетевую загрузку.
Table 1: Компоненты 1, 2, 3 стадии инсталяции
Стадия
|
CD-ROM
|
NETBOOT
|
Комментарии
|
-
|
initrd-preseed
|
Только если есть /preseed.cfg
|
1
|
localechooser
|
Выбор языка/страны/локализации
|
1
|
kbd-chooser
|
Выбор клавиатуры
|
1
|
cdrom-detect
|
eth-detect
|
Определение железа и настройка
|
1
|
|
netcfg
|
Конфигурирование сети
|
-
|
_le-preseed
|
network-preseed
|
Если выбран при загрузке
|
2
|
|
choose-mirror
|
Выбрать зеркало-источник установки
|
2
|
load-cdrom
|
download-installer
|
Получить и распаковать дополнительные компоненты
|
3
|
eth-detect
|
|
Определение железа и настройка
|
3
|
netcfg
|
|
Конфигурирование сети
|
3
|
choose-mirror
|
|
Выбор зеркала-источника установки
|
Как
можно убедиться, первые три стадии имеют фундаментальные различия при
выборе различных методов инсталяции. Все компоненты (udebs), указанные
для стадий 1-3, должны быть включены в initrd, c которым происходит
загрузка инсталлятора.
Оставшаяся часть инсталяции в основном общая для всех методов инсталяции (cм. таблицу 2).
Table 2: Компоненты 4 и 5 фаз инсталяции
Стадия
|
Компоненты
|
Комментарии
|
4
|
hw-detect
|
Дополнительное определение железа
|
4
|
partman
|
Разметка дисков, создание файловых систем и выбор точек монтирования
|
5
|
tzsetup
|
Выбор часового пояса
|
5
|
clock-setup
|
Выбор локального часового пояса или установка UTC
|
5
|
user-setup
|
Настройка аккаунта root и обычных пользователей
|
5
|
base-installer
|
Установка базовой системы (debootstrap2 ) и установка ядра
|
5
|
apt-setup
|
Настройка APT для целевой системы (sources.list)
|
5
|
pkgsel
|
Выбор и установить дополнительные пакеты (tasksel)
|
5
|
grub/lilo-installer; nobootloader
|
Установка загрузчика
|
5
|
_nish-install
|
Окончание инсталяции и перезагрузка
|
Методы инсталяции
D-I
поддерживает большое количество разнообразных методов инсталяции. В
некоторых случаях они могут комбинироваться. Определение
инсталяционного метода базируется на следующих вопросах:
- Как инсталятор будет загружен?
- Откуда мы получим дополнительные компоненты udeb
- Откуда мы возьмјм пакеты, необходимые для установки базовой системы
- Откуда мы возьмјм пакеты, необходимые для установки наборов пакетов (tasks)
Для наиболее употребительных методов инсталяции ответы на эти вопросы даст таблица 3.
Table 3: Методы инсталяции и способы загрузки частей инсталятора
Метод
|
Загрузка
|
Udebs
|
Базовая система
|
Tasks
|
netboot
|
сетевая загрузка (TFTP сервер)
|
сеть
|
сеть
|
сеть
|
mini.iso
|
CD-ROM
|
сеть
|
сеть
|
сеть
|
businesscard CD
|
CD-ROM
|
CD-ROM
|
сеть
|
сеть
|
netinst CD
|
CD-ROM
|
CD-ROM
|
CD-ROM
|
сеть
|
полный CD/DVD
|
CD-ROM
|
CD-ROM
|
CD-ROM
|
CD-ROM (+сеть)
|
hd-media
|
винчестер/usb флэш
|
CD образ
|
CD образ/сеть
|
CD образ/сеть
|
_oppy (net)
|
boot/root/net-drivers
|
сеть
|
сеть
|
сеть
|
_oppy (cd)
|
boot/root/net-drivers
|
CD-ROM
|
CD-ROM/сеть
|
CD-ROM/сеть
|
Компонент (пакет udeb)
udeb
(или микро-deb) является специальным типом пакета Debian. Основное
отличие от обычного пакета -отход от значительного количества
требований Debian Policy
7.
Например udeb не содержит changelog, лицензию, документацию (в
частности man-страницы) или md5-сумму. Причина -необходимость
минимизировать размер, так как инсталяция проходит целиком в RAM, а
раздел подкачки может быть доступен только после Фазы 4 (разметки
разделов).
Дополнительноое отличие -udebs не поддерживают
деинсталяцию и обновление. Несоответствие Policy обозначает то, что
udeb'ы бессмысленно ставить на обычную систему, есть возможность
сломать зависимости и переписать существенные для нормального
функционирования файлы.
Для разработчика, знакомого ( начинающие могут ознакомится с
8
) с процессом создания пакетов Debian, создание udeb не составит
никаких сложностей. Требуется помнить о размере и стараться
поддерживать размер пакета минимальным.
Далее на примерах будут показаны отличия udeb от стандартного пакетирования Debian.
Конфигурационный файл debian/control
Пример типичного debian/control (c сокращениями):
Source: miu-netinstall Section: debian-installer Priority: optional Maintainer: Vlad Shakhov <vlad.shakhov@somewhare.host> Build-Depends: debhelper, libdebian-installer4-dev Package: miu-netinstall Architecture: all XC-Package-Type: udeb Depends: ${misc:Depends}, configured-network, di-utils Description: Custom Debian network install This is a hooks for Discover to report the installer activity. XB-Installer-Menu-Item: 25
|
В первую очередь обратите внимание на Section: debian-installer и XC-Package-Type: udeb . Тип пакета udeb и секция debian-installer явным образом указывают сборочной системе debhelper
9 собирать udeb (а не обычный пакет).
Поле XB-Installer-Menu-Item регулирует порядок включения в процесс установки. Например, если мы укажем номер меню больший, чем у пакета finish-install, то наш пакет не выполнится по умолчанию (не будет запущен debian/postinst ).
Вы также можете смешивать объявления deb и udeb в одном файле (пакет util-linux, пример дан с сокращениями):
Source: util-linux Build-Depends: libncurses5-dev, .. Section: base Priority: required Maintainer: LaMont Jones <lamont@debian.org>
Package: util-linux Architecture: any Section: utils Priority: required Essential: yes Depends: lsb-base (>= 3.0-6), tzdata (>=2006c-2) Provides: schedutils, linux32 Description: Miscellaneous system utilities
Package: fdisk-udeb Architecture: alpha amd64 arm armeb armel hppa i386 ia64 Priority: extra Section: debian-installer Depends: ${shlibs:Depends} XC-Package-Type: udeb XB-Installer-Menu-Item: 99900 Description: Manually partition a hard drive (fdisk)
|
Скрипт debian/postinst
debian/postinst выполняется согласно номеру меню и обычно включает большую часть функционала, реализуемого компонентом udeb.
Шаблон debian/templates
debian-installer/<component>/title Type: text _Description: <пункт меню> |
Шаблон для debconf
5. Включает в себя описание пункта для меню:
debian-installer/<component>/title Type: text _Description: <пункт меню>
|
Может также включать дополнительные записи, предназначенные для хранения настроек и сообщений.
Template: miu/server-uri Type: text Default: http://172.17.0.1/netinstall Description: MIU netinstall server host Server that store activity about installation
|
Хуки
Для части компонент D-I возможно добавление функциональности без изменения кода.
В настоящий момент поддерживается следующий набор "хуков" общего назначения:
- base-installer -перед установкой базовой системы
- post-base-installer -после установки базовой системы, но перед установкой ядра
- _nish-install -финальные операции над системой
Существуют специализированные хуки apt-setup, main-menu и rescue, с которыми вы можете ознакомится в документации на D-I.
Также к хукам можно отнести команды preseed (см. пункт 4.2)
d-i preseed/early_command и d-i preseed/early_command , выполняющие аналогичную роль.
Нетривиальное применение D-I и CDD
Типовые задачи, решаемые созданием CDD:
- изменение состава ПО в инсталяционном образе (например CD)
- изменения в процессе инсталяции (в настройках по умолчанию)
- автоматическая (OEM) инсталляция (preseed
10)
- распределјнная (сетевая) установка
- создание LiveCD
Рассмотрим их подробнее.
Изменение состава ПО
Существуют два инструмента для создания инсталяционных образов:
debian-cd
11 :
- обширная (и запутанная -прим. авт.) система настроек через переменные окружения Shell
- позволяет изготавливать и официальные, и неофициальные сборки Debian
- полный контроль над содержимым установочного образа
- требует высокой квалификации пользователя
simple-cdd
12 :
- интуитивно понятная конфигурация
- профили проектов-возможность создать несколько наборов конфигураций спиcок желаемых пакетов
- возможность задать ответы инсталятору (preseed)
- кэширование зеркала перед сборкой ISO
- раздельное задание источников для компонент инсталятора и устанавливаемых пакетов
Simple-cdd является надстройкой над debian-cd
Preseed : задание настроек инсталяции
Для управлением настройками в D-I и пакетной системе Debian используется debconf
5.
preseed
10 -текстовый файл с ответами на вопросы debconf и имеет следующий вид:
# setting the default params d-i debian-installer/locale string ru_RU d-i netcfg/choose_interface select eth1 d-i mirror/country string manual d-i mirror/http/hostname string linux.org.by d-i base-installer/kernel/image string linux-image-2.6-486
|
Имя preseed-файла передајтся как параметр при загрузке ядра, может
быть локальным или URL. Примеры для различных типов инсталяции:
preseed/url=http://host/path/to/preseed.cfg preseed/file=/cdrom/preseed.cfg preseed/file=/hd-media/preseed.cfg
|
Параметры preseed могут быть заданы как вручную (из приглашения загрузчика), так и используя DHCP.
Особо следует отметить специальный язык описания разделов для утилиты разметки дисков partman:
d-i partman-auto/expert_recipe strin \ boot-root :: \ 40 10000 1000000000 ext3 \ method{ format } form \ use_filesystem{ } filesystem{ ext3 } \ mountpoint{ \ . \ 64 512 300% linux-swap \ method{ swap } format{ } \
|
В preseed-файл также могут включаться ответы на вопросы
устанавливаемых приложений. К примеру OEM инсталяция может
подразумевать начальное конфигурирование сервера samba или
автоматический ответ "да" на вопрос о принятии лицении Sun Java JRE.
LiveCD в стиле Debian -live-helper
Пакет live-helper (включён в состав Debian начиная с Lenny )
13 предназначен для создания LiveCD на базе Debian. Возможности:
- сборка образа в несколько этапов
- полное конфигурирование каждого из этапов
- создание ISO, netboot и USB-_ash образов плагины и хуки
- поддержка сжатых и шифрованных файловых систем
- добавление сторонних пакетов и репозиториев, как на фазе настройки
- сборочного окружения, так и на фазе распаковки ПО
- настройка загрузчиков
- добавление любых дополнительных файлов, в том числе и перезаписывающих (особенно полезно для конфигурирования
) существующие в пакетах, устанавливаемых в образ
- интеграция с инсталляторами Debian и Ubuntu (создание инсталляционных дисков, совмещјнных с livecd)
Проект хорошо документирован и быстро развивается
Примеры проектов с использованием CDD
В заключительной части статьи будут предоставлены примеры
выполненных проектов, реализованных с помощью технологий Custom Debian
Distribution. Основной упор сделан на то, каким образом решались
задачи, обусловленные техническим заданием. Приводятся выдержки из
конфигурационных и сборочных файлов, с разбором наиболее существенных
фрагментов.
OEM-поставка. Многоформатный неинтерактивный плейер для видеоэкрана
Техническое задание:
- OEM-установка, без единого вопроса
- Дополнительное ПО собственной разработки
- Работа из коробки без дополнительных настроек
Реализация:
- Пакетирование собственного ПО в .deb
- simple-cdd -сборка ISO на основе Debian Lenny
auto_profiles="miu" di_codename="etch" dist="lenny" export SPLASHPNG=$PWD/../Player/examples/splash.png export DISC_FINISH_HOOK=$PWD/copy_doc.sh
|
Что модифицировано:
- задаём собственный bootsplash
- указываем специальный хук для debian-cd, копирующий на образ проектную документацию
- используем инсталятор от Etch при пакетной базе от Lenny
miu.packages (список пакетов)
openssh-server xyz-player xyz-scheduler linux-image-2.6-686-bigmem
|
Запрашиваем установку нестандартного ядра и openssh-сервера по
умолчанию + устанавливаем 3rd-party пакеты собственной разработки.
- preseed -ответы на вопросы инсталятора
miu.preseed (выборочно):
xserver-xorg xserver-xorg/config/device/driver select intel xserver-xorg xserver-xorg/config/monitor/mode-list select 1024x768 @ 75 Hz xserver-xorg xserver-xorg/autodetect_monitor boolean true passwd passwd/username string user passwd passwd/user-password password secret d-i preseed/late_command string in-target sed -i '/DPMS/d' /etc/X11/xorg.conf
|
изменения:
- задаём настройки видео (обусловлены спецификацией на оборудование)
- создајм непривилегированного пользователя
- подправляем настройку Xorg по умолчанию
Обёртка над сборкой debian пакетов и iso-образа -Make_le
$(BUILD_DIR)/$(MIU_ISO): $(MIU_DEB) cd cdd && env $(MIU_CDD_OPT) build-simple-cdd \ --profiles miu --conf profiles/miu.conf \ --local-packages "$^"
|
LiveCD демо-версия
Техническое задание
- На основе проекта 5.1
- Возможность закачки контента
Проект реализован с помощью Live-helper
13. Были внесены некоторые изменения в конфигурацию по умолчанию.
- LiveCD/con_g/binary, настройки бинарной стадии сборки:
LH_BINARY_IMAGES="iso" LH_BOOTAPPEND_LIVE="noapic" LH_BOOTLOADER="syslinux"
|
Задан загрузчик и дополнительные параметры к загрузке, и тип образа.
- LiveCD/con_g/chroot, фаза развјртывания системы
LH_CHROOT_FILESYSTEM="squashfs" LH_UNION_FILESYSTEM="aufs" LH_LINUX_FLAVOURS="686-bigmem" LH_PACKAGES="xyz-player pciutils openssh-server vsftpd less lftp mc"
|
Заданы пакет с ядром и дополнительные пакеты, требуемые для работы
live-cd. В частности ftp-сервер для закачки контента, mc (mcedit) для
управления файлами и редактирования конфигурации.
- LiveCD/con_g/chroot_local-includes/etc/ -сюда были положены
некоторые файлы, которыми мы дополняем стандартную конфигурацию,
например генератор конфигурации Xorg и конфигурационный файл vsftpd.
- LiveCD/con_g/chroot_sources/xyz-player.chroot -дополнительный APT репозиторий, содержащий 3rd-party пакеты, не являющиеся частью Debian:
deb http://mend0za.xyz.com/debian-aw-display/ ./
|
Сборка реализована как набор правил, включенных в общий Makefile проекта 5.1.
livecd-repo: $(BUILD_DIR)/$(PLAYER_PACKAGE) $(BUILD_DIR)/$(SWFDEC_PACKAGE) @test -d $(LIVE_CD_REPO) || mkdir $(LIVE_CD_REPO) @cp -fv $^ LiveCD/repo cd $(LIVE_CD_REPO) && apt-ftparchive packages ./ >Packages gzip <$(LIVE_CD_PACKAGES) >$(LIVE_CD_PACKAGES).gz bzip2 <$(LIVE_CD_PACKAGES) >$(LIVE_CD_PACKAGES).bz2 livecd: livecd-repo cd LiveCD && sudo lh_build
|
Отдельно следует отметить скорость создания LiveCD на основе уже
имеющейся инфраструктуры CDD. Используя готовые схемы сборки 3rd-party
пакетов deb и CDD (через simple-cdd), дополнительные правила для сборки
LiveCD созданы и отлажены за 3 человеко-дня, включая стадию контроля
качества (QA) и передачу результата работы (ISOобраза) заказчику.
Распределённая установка с контролем оператором
Техническое задание:
- автоматическая установка по сети сотни одновременно устанавливаемых устройств
- контроль человеком-оператором статуса установки устройств, с возможностью останова
- нет доступа к экранам и клавиатурам устанавливаемых устройств
- архитектура i386 и сетевые карты, поддерживающие PXE
Реализация:
- DHCPv3 + TFTP + PXE -сетевая загрузка образов инсталятора (netboot)
- Отдача preseed по сети: HTTP
- Серверное ПО (управляющее ПО + интерфейс оператора) на базе CGI (HTTP )
- Компонент инсталятора udeb, содержащий хуки во все фазы инсталяции
- Сервер содержит на борту полное зеркало пакетов, необходимых оконечным устройствам
- Фактически -два дистрибутива с разным набором пакетов и разной
процедурой установки, серверный/операторский и клиентский/устройства.
Сценарий установки устройства-клиента:
- Запрос сетевой загрузки, сервер получил информацию о MAC адресе устройства и обозначил его, как начавшего установку.
- Получение загрузочного образа инсталятора netboot и параметров его загрузки. Основной параметр -URL preseed-файла.
- Запуск хуков осуществляет связь с контрольным сервером по протоколу HTTP, информирует о текущем статусе инсталяции, и позволяет
приостановить еј или прервать, в соотвествии с действиями оператора.
- По успешном прохождении инсталяции -посылает запрос зарегистрировать устройство как установленное.
- После перезагрузки -устанавливает свой статус как Running и отмечается на сервере.
Как можно видеть, реализация требует плотной интеграции целой группы
стандартных компонент (Web сервера, TFTP сервера, DHCP сервера, D-I) с
группой самостоятельно разработанных компонент (управляющее ПО
оператора, хранилище информации о состоянии устройств, репозитории
пакетов для двух раздельных дистрибутивов, udeb, модифирующий поведение
D-I).
Было создано 3 новых пакета-интегратора: netboot-server,
miu-netinstall, management-server, реализующие функционал, необходимый
по техническому заданию.
netboot-server
Обычный deb-пакет. Устанавливается на сервер.
- Содержит настройки DHCP, заменяющий настройки по умолчанию
на специфичные для проекта
subnet 172.17.0.0 netmask 255.255.0.0 { # опущена стандартная часть описания подсети if substring (option vendor-class-identifier, 0, 3) = "d-i" { filename "http://172.17.0.1/xyz/miu.preseed"; } else { filename "pxelinux.0"; } }
|
Логика построена в зависимости от идентификатора вендора. Если
сетевые настройки запрашиваются уже запущенным D-I, отдајтся
URL файла preseed. В противном случае осуществляется обычная
сетевая загрузка PXE.
- дерево файлов для загрузки по tftp
- настройки Apache 2.2.x, позволяющие клиентской машине получить доступ к репозиторию пакетов и компонент D-I по сети.
Alias /debian-xyz/ /var/lib/xyz-netboot-server/repo/ <Directory "/var/lib/xyz-netboot-server/repo"> Options Indexes FollowSymlinks </Directory> Alias /xyz/ /var/lib/xyz-netboot-server/
|
Благодаря гибкой схеме конфигурирования Apache 2.x в Debian настройки оформлены отдельным файлом, укладываемый в
miu-netinstall
Компонент udeb для d-i. Загружается в устройство при инсталяции через preseed:
d-i preseed/early_command string anna-install miu-netinstall
|
postinstall для этого пакета реализует запрос на
разрешение/запрет дальнейшей установки устройства + определение адреса
сервера. Содержит также хуки, производящие информирование сервера о
стадиях инсталяции и возможности продолжать.
management-server
Содержит ПО пријма запросов от устанавливаемых устройств и ПО оператора. Устанавливается на сервер.
Системная интеграция
Серверный дистрибутив собирается через simple-cdd, так же как и
дистрибутив из проекта 5.1. Клиентский дистрибутив фактически
содержится в серверном как подмножество пакетов в репозитории CD диска.
После инсталяции серверного дистрибутива репозиторий с диска копируется
инсталятором на установленную машину и служит пакетной базой для
установки клиентских устройств.
Network Attached Storage
14 (NAS) для i386
Портирование существующего продукта с Alt Linux/XScale на Debian/i386.
Техническое задание:
- Управление функциями NAS через EVMS
15
- Поддержка до 4 винчестеров на стадии инсталяции
- Пользовательский интерфейс (GUI) на WEB+Java
- Портирование функционала с Alt Linux на Debian
Реализация.
- Пересборка ядра/модулей ядра в D-I и образов инсталятора
- Накладывание набора (порядка 15) патчей на ядро
- Замена стандартного менеджера разделов в D-I (partman) на NAS-специфичный
- Пакетирование пользовательского интерфейса
- Добавление поддержки EVMS в D-I
Отличие от проектов, указанных выше (см. 5.1, 5.2, 5.3) -в
необходимости глубокой интеграции с Debian-Installer, вплоть до
модификации штатного ядра и замены штатного менеджера дисков.
Функционал продукта полностью базируется на использовании EVMS. Все
операции с дисковой подсистемой проводятся через Device Mapper
16
+ EVMS. D-I на момент начала работы над проектом содержал только
рудиментарные признаки поддержки EVMS, ранее не используемые и
исключјнные из релизов незадолго до выхода Sarge.
Детали реализации:
- заново создан пакет evms-udeb, дающий возможности управлять evms из D-I (библиотеки и утилиты командной строки)
- компонент partman полностью заменјн на partman-evms, вводящий функционал определения всех доступных дисков и развјртывания
NAS-массива с их использованием
- частично портированы части старого инсталятора из Alt Linux,
касающиеся развјртывания NAS и добавлены утилиты (awk), необходимые
для их работы в среде D-I.
- GUI перепакетирован из RPM в DEB
- портированы патчи с устаревших версий ядра на современные (касающиеся особенностей функционала продукта)
- D-I полностью пересобран с модифированным ядром
18
partman-evms
Наиболее интересны, с точки зрения CDD, следующие фрагменты:
partman-evms/debian/control
Package: partman-evms Architecture:all XC-Package-Type: udeb XB-Installer-Menu-Item: 3999 Depends: di-utils, mdadm-udeb, evms-udeb, evms-utils-udeb, \ mkreiserfs-udeb, reiserfs-modules Provides: made-filesystems, mounted-partitions, partitioned-harddrives, created-fstaDescription: partman replacement with EVMS support Package: partman-base Architecture: all XC-Package-Type: udeb Depends: partman-evms Provides: partman, partman-base, partman-auto, partman-md, partman-method, \ partman-filesystem, partman-target, partman-basicfilesystems Description: partman fake package (do nothing)
|
XB-Installer-Menu-Item задајт место для запуска partman
-непосредственно перед оригинальным partman (4000). Имена пакетов и
поля Provides: полностью замещают стандартный компонент, эмулируя его
привязку к остальным частям инсталятора. См.
17 для получения дополнительной информации.
partman-evms/debian/postinst содержит код переразбиения
дисков согласно штатной разметки NAS как группы RAID-1 разделов на всех
существующих дисках. Также осуществляются действия стандартного
partman: форматирование разделов, создание /etc/fstab, подключение
свопа.
Вся дальнейшая установка (базовая система, пост-инсталяционные настройки) уже работает с корневым разделом под управлением EVMS.
OEM-инсталяция
Часть из используемых пакетов проекта требует ответов пользователя
по ходу их установки. Средствами добавления preseed в simple-cdd мы
можем заранее задать ответы на них и сохранить инсталяцию "молчаливой":
# omit questions to user mdadm mdadm/autostart boolean false mdadm mdadm/initrdstart string none
lilo liloconfig/wipe_old_liloconf boolean true lilo liloconfig/install_mbr boolean true
nis nis/domain string local
samba-common samba-common/workgroup string local samba-common samba-common/dhcp boolean false
sun-java5-bin shared/accepted-sun-dlj-v1-1 boolean true sun-java5-jdk shared/accepted-sun-dlj-v1-1 boolean true sun-java5-jre shared/accepted-sun-dlj-v1-1 boolean true
|
|