Автоматическая установка Debian 7 Wheezy по сети

Как полностью автоматизировать установку Debian 7 Wheezy по cети.
Источники: Всё что будет написано ниже, 100% работает на Debian 7 Wheezy
Исходные данные:
192.168.100.1 — TFTP-сервер (с настройками указанными здесь)
08:00:27:85:33:F7 — МАК-адрес клиента на установку ОС

Подготовка

Настройка HTTP-сервера

# mkdir -p /var/www/tftp/debpxe
# cd /var/www/tftp/debpxe
# wget http://www.debian.org/releases/wheezy/example-preseed.txt ./
# mv /var/www/tftp/debpxe/example-preseed.txt /var/www/tftp/debpxe/preseed.cfg

Сетевой установщик

скачать можно по адресу http://www.debian.org/distrib/netinst#netboot
# mkdir -p /srv/tftp/debinst
# cd /srv/tftp/debinst
# wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar -xvf netboot.tar.gz

Настройка установщика

По-умолчанию загрузчик будет ожидать участия пользователя. Что бы отключить это, отредактирую /srv/tftp/debian-installer/amd64/boot-screens/txt.cfg, а именно значение опции timeout в 1.
Добавлю к параметрам ядра переменную для debian-installer дабы грузился файл с настройками (значениями) переменных, которые в «ручном» режиме спрашивает инсталлер. Файл с ответами, загружается не сразу!!!, только после того, как будут заданы пользователю некоторые вопросы, а это значит, что используя только файл preseed нельзя добиться полностью автоматической установки. Поэтому, ответы на вопросы установщика до загрузки preseed нужно передать параметрами загрузки ядра, которые потом подхватит установщик Debian.
# cat /srv/tftp/pxelinux.cfg/default 
# D-I config version 2.0
#include debian-installer/amd64/boot-screens/menu.cfg
include debian-installer/amd64/boot-screens/txt.cfg
default debian-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 1

# cat /srv/tftp/debian-installer/amd64/boot-screens/txt.cfg
default install
label install
        menu label ^Install
        menu default
        kernel debian-installer/amd64/linux
        append vga=788 initrd=debian-installer/amd64/initrd.gz auto url=http://192.168.100.1/tftp/debpxe/preseed.cfg keymap=en locale=en_US hostname=newdebhost domain=mydrafts.local country=RU language=en -- quiet 
        prompt 0
        timeout 1
Подробности:
— имя хоста (debhost) нужно задавать обязательно, но значение, позже полученное по DHCP, будет иметь высший приоритет. То же относится и к домену (mydrafts.local) и к прочим параметрам.
— страна Россия
— язык установки, клавиатуры и т.д. на время установки — Английские

preseed.cfg

Место нахождения: /var/www/tftp/debpxe/preseed.cfg
# cat /var/www/tftp/debpxe/preseed.cfg
#http://www.debian.org/releases/stable/ia64/apbs04.html.ru
#### Contents of the preconfiguration file (for wheezy)
### Localization
# настройки языка и локали в устанавливаемой системе 
d-i debian-installer/locale string ru_RU.UTF-8

#Значения можно указывать отдельно для большей гибкости.
# The values can also be preseeded individually for greater flexibility.
# Используем американскую локаль
d-i debian-installer/language string en
# но указываем, что наш сервер находится в России.
d-i debian-installer/country string RU
#d-i debian-installer/locale string en_GB.UTF-8
# Optionally specify additional locales to be generated.
d-i localechooser/supported-locales multiselect en_US.UTF-8, ru_RU.UTF-8

# Выбор клавиатуры.
# Настройки клавиатуры.(американская раскладка.)
# keymap — это псевдоним keyboard-configuration/xkb-keymap
d-i keymap select us
# При настройке клавиатуры выбирается раскладка и (для нелатинских раскладок)
# клавиша переключения между нелатинской раскладкой и раскладкой US.
# Во время установки доступны только основные варианты раскладок.
# Дополнительные варианты доступны только в установленной системе; их можно
# выбрать с помощью команды dpkg-reconfigure keyboard-configuration.
d-i keyboard-configuration/toggle select No toggling
#d-i console-keymaps-at/keymap select Русская
#d-i keyboard-configuration/variant select Английская американская
# Чтобы не выполнять настройку клавиатуры укажите в keymap значение 
# skip-config. В результате останется активной клавиатурная раскладка ядра.

# B.4.2. Настройка сети
# http://www.debian.org/releases/stable/ia64/apbs04.html.ru
# Выбираем интерфейс сети, через который будет происходить установка. 
# Если сомневаемся - ставим auto. 
d-i netcfg/choose_interface select eth0

# Настройки сети. Пример для ipv6, для v4 вам просто нужно будет поменять
# адреса.
# важный момент - если настраиваете здесь ipv6 сеть, 
# то обязательно используйте ipv6 nameservers.
# Иначе netmask ffff:ffff:ffff:ffff:: внутри debian-installer'a 
# превратится в 255.255.255.0 (или что-то такое) и вам придется лезть в
# консоль, чтобы перевбивать настройки лапками. 
# если вам нужен ipv4 - то просто замените ipaddress, netmask, gateway,
# nameservers на корректные v4-адреса. Ничего дополнительно указывать не нужно. 
d-i netcfg/dhcp_timeout string 2

# hostname и domain для наливаемой машинки. 
# fqdn машины в данном случае будет temporary.debian.pro - если хотите, 
# чтобы на сервере нормально работала отправка почты, то такой же fqdn должен
# быть прописан в PTR записи "основного" адреса машинки. 
d-i netcfg/get_hostname string debpxe
d-i netcfg/get_domain string mydrafts.local

# можно включить ssh-сервер внутри установщика, чтобы продолжить установку 
# по ssh. Но нам это не нужно - просто оставлю для примера. 
#d-i anna/choose_modules string network-console
#d-i network-console/password password 1234
#d-i network-console/password-again password 1234

# настройки зеркала apt. Вручную указываем БЫСТРЫЙ (aka избранный), 
# а не выбираем какое-то из списка. 
# кроме mirror.yandex.ru/mirror6.yandex.ru я пока не встретил работающих 
# v6-зеркал =) 
# в данном случае, локальную копию репозитория, которая находится здесь же
d-i mirror/country string manual
d-i mirror/http/hostname string mirror.yandex.ru
d-i mirror/http/directory string /debian
# прокси внутри инсталлера нам не нужен. 
d-i mirror/http/proxy string

# Настройки часового пояса - наш сервер будет жить по часикам в Москве. 
# дополнительно, при установке синхронизируем время с 192.168.100.1
# в данном случае, синхронизация отключена
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow
d-i clock-setup/ntp boolean false
#d-i clock-setup/ntp-server string 192.168.100.1

# Настройка HDD. Внутри виртуалок нам подойдет разметка auto regular atomic
# (последний раздел - swap = 2xRAM, первый раздел - /, занимающий всё, 
# что осталось после swap'a). 
# Саму систему ставим на /dev/sda. 
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# устанавливаем рутовый пароль 123321. 
# после установки его, само собой, ИЗМЕНИТЬ (preseed могут спереть). 
d-i passwd/root-password password 123321
d-i passwd/root-password-again password 123321
# не создаём дополнительных пользователей, кроме рута. 
d-i passwd/make-user boolean false

#B.4.9. Настройка Apt
# остальные настройки apt'a - включаем contrib и non-free репозитории. 
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
# в sources.list можно добавитьbackport-ы (в примере - для wheezy). 
# d-i apt-setup/local0/repository string deb http://mirror.yandex.ru/debian
# wheezy-backports main contrib non-free
# By default the installer requires that repositories be authenticated
# using a known gpg key. This setting can be used to disable that
# authentication. Warning: Insecure, not recommended.
# d-i debian-installer/allow_unauthenticated boolean true

# Некоторые версии программы установки могут отсылать отчёт
# об установленных и используемых пакетах. По умолчанию данная
# возможность выключена, но отправка отчёта помогает проекту
# определить популярность программ и какие из них включать на CD.
# не отправляем данные об установленных пакетах. 
popularity-contest popularity-contest/participate boolean false

# дополнительно установим ssh-сервер, htop и mc 
tasksel tasksel/first multiselect ssh-server
# указываем, что нам нужны дополнительные пакеты htop mc
d-i pkgsel/include string htop mc

#B.4.11. Завершение установки

# При установке с консоли на последовательном порту обычные виртуальные
# консоли (VT1-VT6) выключаются в /etc/inittab. 
# Чтобы этого не происходило.
d-i finish-install/keep-consoles boolean true

# Не показывать последнее сообщение о том, что установка завершена.
d-i finish-install/reboot_in_progress note

# Не выдвигать лоток CD при перезагрузке, что иногда может пригодиться.
d-i cdrom-detect/eject boolean false

# В случае с виртаульными машинами, лучше всего
# остановливать систему после завершения установки, а
# не перегружаться в установленную систему.
# d-i debian-installer/exit/halt boolean true
# Эта настройка позволяет выключить питание машины, а не просто остановить её.
# d-i debian-installer/exit/poweroff boolean true

d-i grub-installer/only_debian boolean true

#d-i finish-install/reboot_in_progress note
#d-i debian-installer/exit/poweroff boolean true

# использовать для установки проприетраных драйверов
d-i hw-detect/load_firmware boolean true
По окончанию установки и перезагрузки, можно подключиться к компьютеру:
# ssh root@192.168.100.151
The authenticity of host '192.168.100.151 (192.168.100.151)' can't be established.
ECDSA key fingerprint is 63:b7:f1:2b:12:ca:06:e7:5a:1d:e3:af:cc:71:24:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.151' (ECDSA) to the list of known hosts.
root@192.168.100.151's password: 
Linux debhost 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr 29 13:20:46 2014
root@debhost:~# hostname -f
debhost.mydrafts.local
root@debhost:~# ip a s
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 08:00:27:85:33:f7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.151/24 brd 192.168.100.255 scope global eth0
    inet6 fe80::a00:27ff:fe85:33f7/64 scope link 
       valid_lft forever preferred_lft forever
Адрес, 192.168.100.151 — указан в настройках DHCP
пароль, 123321 — указан в /var/www/tftp/debpxe/preseed.cfg, d-i passwd/root-password password 123321
Рубрики: *nix, Debian, TFTP, Сервер | 0 | 3 592 | Распечатать эту статью