Pull to refresh

Установка Debian удалённо: PXE + SSH

Reading time2 min
Views18K

Задача


Установить Debian Lenny на сервер, который находится на удалённой площадке.
На площадке уже есть один Linux-based сервер, и есть инженер, который может подключить новый сервер к сети и включить.

Решение


Загрузить образ netinstall по PXE и воспользоваться пакетом network-console для установки, используя ssh.

В Интернете как обычно много обломков документации, я попытался собрать всё это воедино.

На существующем сервере (для примера там будет установлен тот же Debian Lenny) нам потребуются dhcp3-server, tftpd-hpa и любой http-сервер.

Настраиваем dhcp3-server:
/etc/dhcp3/dhcpd.conf

ddns-update-style none;
option domain-name "local";
option domain-name-servers 192.168.1.1;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
 option routers 192.198.1.1;
 option domain-name-servers 192.168.1.1;
 option domain-name "local";
 next-server 192.168.1.1;
 filename "pxelinux.0";
 range 192.168.1.100 192.168.1.250;
}

Опция next-server передаст PXE-загрузчику сетевой карты IP-адрес TFTP-сервера, а filename — имя файла с загрузчиком linux.

TFTP в особой настройке не нуждается, поэтому дальше нам нужно настроить конфиги загрузчика pxelinux, они находятся в файле /var/lib/tftpboot/pxelinux.cfg/default. Он должен быть такого вида:
default lenny-ssh
prompt 0
label lenny-ssh
  kernel linux
  append initrd=initrd.gz locale=en_US console-keymaps-at/keymap=us netcfg/choose_interface=eth0 netcfg/get_hostname=debian netcfg/get_domain=local url=http://192.168.1.1/preseed.cfg

Внимание, в этом конфиге важны отступы!
При возникновении проблем, можно включить debug, добавив опцию DEBCONF_DEBUG=5

Файлы pxelinux.0, linux и initrd.gz берутся из репозитория, там же можно найти pxelinux.0.

Файл preseed.cfg должен быть таким:
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

d-i network-console/password             password        r00tme
d-i network-console/password-again       password        r00tme
d-i preseed/early_command                string          anna-install network-console
d-i anna/choose_modules                  string          network-console

tasksel tasksel/first multiselect none
d-i pkgsel/include string openssh-server sudo screen
d-i pkgsel/upgrade select full-upgrade

Во всех манах в него включают опции, связанные с настройками локали и сети, у меня это не заработало, возможно из-за того, что файл preseed.cfg подключается уже после настройки этих параметров, поэтому их нужно передать как опции initrd.

Собственно дальше включаем новую железку, смотрим в логах dhcp IP-адрес, который получил хост, и подключаемся к нему по ssh с логином installer и паролем r00tme

По аналогии можно настроить полностью автоматизированную установку, дополнив preseed.cfg. Лично мне такой вариант не удобен, т. к. очень часто на серверах имеется разная конфигурация дисковой подсистемы и единого «рецепта» не существует.

Ссылки

Официальная документация
Вторая официальная инструкция
Дока, которая помогла больше всего, на японском
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+27
Comments17

Articles

Change theme settings