Open-Club.Net Проект полностью ориентирован на Open Source-подход(изучаем, настраиваем, устанавливаем и общаемся о Linux).
Мы в соц. сетях:
Главная » Статьи » Програмирование [ Добавить статью ]

Промышленная платформа для создания специализированных дистрибутивов и сред инсталяции

Преамбула


Статья, представленная вашему вниманию, посвящена построению сред инсталяции, изменению поведения инсталятора, распределјнным возможностям установки, сборке 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
Категория: Програмирование | Добавил: Root (11.11.2008)
Просмотров: 1283 | Рейтинг: 0.0/0
Похожие материалы:
Всего комментариев: 0
ComForm">
avatar
Профиль
Поиск
Категории раздела
Участвуйте в опросе
Занимаетесь ли Вы спортом?
Всего ответов: 35
Статистика

Яндекс.Метрика

Онлайн всего: 8
Гостей: 8
Пользователей: 0

Нас уже: 1302 Линуксоидов
Сегодня нас посетили следующие Линуксоиды -