• Авторизация


Custom Debian Distributions (CDD) : Промышленная платформа для создания специализиро 09-11-2008 18:14 к комментариям - к полной версии - понравилось!


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



Преамбула




Статья, представленная вашему вниманию, посвящена построению сред инсталяции, изменению поведения инсталятора, распределјнным возможностям установки, сборке 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 включает в себя пакетную систему DEB
3
+APT
4
и инсталлятор промышленного уровня 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 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 и 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-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 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-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, содержащий хуки во все фазы инсталяции

  • Сервер содержит на борту полное зеркало пакетов, необходимых оконечным устройствам

  • Фактически -два дистрибутива с разным набором пакетов и разной процедурой установки, серверный/операторский и клиентский/устройства.



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




  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 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






В начало


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








Об авторе

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

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Custom Debian Distributions (CDD) : Промышленная платформа для создания специализиро | sudosu - unix: легенды и реальность | Лента друзей sudosu / Полная версия Добавить в друзья Страницы: раньше»