Debian-Installer (D-I) и Custom Debian Distributions (CDD) : Промышленная платформа для создания специализированных дистрибутивов и сред инсталяции

Статья представляет собой обзор архитектуры и методов применения инфраструктуры проекта Debian в коммерческих и свободных разработках. Посвящена построению сред инсталяции, изменению поведения инсталятора, распределённой установке, сборке LiveCD, добавлению стороннего ПО.

Владимир Шахов, Senior Software Engineer, Promwad Innovation Company

Шахов Владимир aka mend0za, Senior Software Engineer в Promwad Innovation company. Системный аналитик и разработчик ПО, преподаватель, FOSS-евангелист. Автор ряда статей по вопросам разработки, в частности кодогенерации и цикла о сетевом программировании.



14.10.2008

Преамбула


Статья, представленная вашему вниманию, посвящена построению сред инсталяции, изменению поведения инсталятора, распределјнным возможностям установки, сборке LiveCD, добавлению стороннего ПО, используя гибкую архитектуру Debian GNU/Linux.

Первоначально представлена в виде доклада на 4й международной конференции разработчиков и пользователей свободного программного обеспечения Linux Vacation Eastern Europe'2008 (LVEE-2008) 28 июня 2008 года, Гродно, Беларусь.

Позже был дополнен новой информацией о работах компании Promwad в области использования Debian-based дистрибутивов.

Все описанные проекты-примеры являются реальными заказами, выполненые автором в период c 2007 по 2008 год в сфере Outsourcing Software Devel­opment.


Что такое Custom Debian Distribution


Debian GNU/Linux -Операционная система, содержащая более 18000 программных пакетов различного назначения.

Custom Debian Distribution или CDD является подмножеством De­bian, призванный быть инструментом для специальных групп пользователей, сконфигурированный таким образом, чтобы предоставлять специальный функционал "из коробки" 1.

Debian GNU/Linux включает в себя пакетную систему DEB3+APT4 и инсталлятор промышленного уровня D-I, позволяющий гибко управлять составом устанавливаемого программного обеспечения, ходом инсталяции и вводить, при необходимости, новый функционал.


Архитектура и реализация инсталлятора De­bian (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. Загрузка и инициализация -настройка инсталятора для последующей загрузки любых дополнительных компонент
  2. Загрузка и установка дополнительных компонент инсталятора ­расширение инсталятора до полной функциональности
  3. Конфигурирование сетевых интерфейсов
  4. Разметка и форматирование дисков и разделов
  5. Инсталяция целевой системы

Таблица 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 Policy7. Например 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 и res­cue, с которыми вы можете ознакомится в документации на 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-cd11 :

  • обширная (и запутанная -прим. авт.) система настроек через переменные окружения Shell
  • позволяет изготавливать и официальные, и неофициальные сборки Debian
  • полный контроль над содержимым установочного образа
  • требует высокой квалификации пользователя

simple-cdd12 :

  • интуитивно понятная конфигурация
  • профили проектов-возможность создать несколько наборов конфигураций спиcок желаемых пакетов
  • возможность задать ответы инсталятору (preseed)
  • кэширование зеркала перед сборкой ISO
  • раздельное задание источников для компонент инсталятора и устанавливаемых пакетов

Simple-cdd является надстройкой над debian-cd

Preseed : задание настроек инсталяции

Для управлением настройками в D-I и пакетной системе Debian используется debconf5.

preseed10 -текстовый файл с ответами на вопросы 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 Distri­bution. Основной упор сделан на то, каким образом решались задачи, обусловленные техническим заданием. Приводятся выдержки из конфигурационных и сборочных файлов, с разбором наиболее существенных фрагментов.

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

Что модифицировано:

  1. задаём собственный bootsplash
  2. указываем специальный хук для debian-cd, копирующий на образ проектную документацию
  3. используем инсталятор от 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

изменения:

  1. задаём настройки видео (обусловлены спецификацией на оборудование)
  2. создајм непривилегированного пользователя
  3. подправляем настройку 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-helper13. Были внесены некоторые изменения в конфигурацию по умолчанию.

  • 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, содержащий хуки во все фазы инсталяции
  • Сервер содержит на борту полное зеркало пакетов, необходимых оконечным устройствам
  • Фактически -два дистрибутива с разным набором пакетов и разной процедурой установки, серверный/операторский и клиентский/устройства.

Сценарий установки устройства-клиента:

  1. Запрос сетевой загрузки, сервер получил информацию о MAC ­адресе устройства и обозначил его, как начавшего установку.
  2. Получение загрузочного образа инсталятора netboot и параметров его загрузки. Основной параметр -URL preseed-файла.
  3. Запуск хуков осуществляет связь с контрольным сервером по протоколу HTTP, информирует о текущем статусе инсталяции, и позволяет приостановить еј или прервать, в соотвествии с действиями оператора.
  4. По успешном прохождении инсталяции -посылает запрос зарегистрировать устройство как установленное.
  5. После перезагрузки -устанавливает свой статус как 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 ­настройки оформлены отдельным файлом, укладываемый в

/etc/apache2/conf.d

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 Storage14 (NAS) для i386

Портирование существующего продукта с Alt Linux/XScale на Debian/i386.

Техническое задание:

  • Управление функциями NAS через EVMS15
  • Поддержка до 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

References

1 Custom Debian Distribution homepage http://cdd.alioth.debian.org

2 Frans Pop Debian Installer Internals, 2006 http://d-i.alioth.debian.org/doc/talks/debconf6/paper/

3 Debian package control basics http://www.debian.org/doc/FAQ/ch-pkg_basics

4 APT Howto http://www.debian.org/doc/manuals/apt-howto/

5 debconf WiKi http://wiki.debian.org/debconf

6 BusyBox project http://busybox.net/

7 Debian Policy http://www.debian.org/doc/debian-policy/

8 Debian New Maintainers' Guide http://www.debian.org/doc/maint-guide/

9 Debhelper homesite http://kitenet.net/~joey/code/debhelper/

10 Automating the installation using preseeding http://d-i.alioth.debian.org/manual/en.i386/apb.html

11 debian-cd package http://packages.debian.org/etch/debian-cd

12 simple-cdd package simple-cdd package http://wiki.debian.org/Simple-CDD

13 Debian Live Debian Live http://debian-live.alioth.debian.org/

14 Network Attached Storage http://en.wikipedia.org/wiki/Network-attached_storage

15 Enterprise Volume Management System http://evms.sourceforge.net/

16 Device Mapper http://sources.redhat.com/dm/

17Replacement of partman D-I component http://lists.debian.org/debian-boot/2008/02/msg00819.html

18 Debian-Installer: Building images with a custom kernel http://wiki.debian.org/DebianInstaller/Modify/CustomKernel

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


  • Bluemix

    Узнайте больше информации о платформе IBM Bluemix, создавайте приложения, используя готовые решения!

  • Библиотека документов

    Более трех тысяч статей, обзоров, руководств и других полезных материалов.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=345651
ArticleTitle=Debian-Installer (D-I) и Custom Debian Distributions (CDD) : Промышленная платформа для создания специализированных дистрибутивов и сред инсталяции
publish-date=10142008