Настройка PXE сервера для установки Ubuntu по сети

Имеем несколько компьютеров в локалке. Ни на одном из них нет CD/DVD привода.
Хотим проинсталить на них убунту.
Для этого нам необходимо настроить PXE (Preboot eXecution Environment – Предзагрузочная исполняемая среда) сервер, который позволит клиентским компьютерам загрузить и запустить инсталлятор чего угодно (в нашем случае это будет дистрибутив ubuntu) через сеть. А уже инсталлятор позволит поставить убунту с удобного для вас репозитория. О создании локального репозитория в следующий раз.

Что нам будет нужно?
DHCP, который скажет где взять загрузочный образ
TFTP, который будет этот образ отдавать желающим
сам загрузочный образ
Настройка DHCP сервера
устанавливаем:
sudo apt-get install dhcp3-server
создаём файл конфигурации /etc/dhcp.dhcpd.conf (обратите внимание, что в новых debianbased системах в качестве DHCP сервера решили использовать isc-dhcp-server, а его конфигурационный файл лежит в /etc/dhcp/dhcpd.conf):

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
option domain-name-servers 10.1.2.1,10.1.2.200; адреса DNSов (пригодятся)
option routers 10.1.25.1; шлюз по умолчанию
server-name "10.1.25.101";
subnet 10.1.25.0 netmask 255.255.255.0 {
pool {
range 10.1.25.150 10.1.25.170; диапазон выдаваемых по DHCP IPшников
next-server 10.1.25.101; на этом сервере будут лежать загрузочные образы
filename "pxelinux.0"; какой файл загружать и запускать (а уже он знает, что делать дальше)
}
}

Рестартуем его:
sudo /etc/init.d/isc-dhcp-server restart
Настройка TFTP сервера
Ставим клиент и сервер:
sudo apt-get install tftp tftpd-hpa
Создаём файлик /etc/default/tftpd-hpa :

TFTP_OPTIONS="--secure"
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"

рестартуем tftpd
/etc/init.d/tftpd-hpa restart
Теперь качаем загрузочный образ:
wget -c http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/netboot.tar.gz
Если вы хотите устанавливать на машины более старую или более новую версию, чем natty, то подправьте соответствующим образом адрес. На данный момент возможные варианты:

  • dapper
  • hardy
  • karmic
  • lucid
  • maverick
  • natty
  • oneiric

если вы собираетесь ставить 64 битную версию ubunu, то замените в адресе installer-i386 на binary-amd64
Распаковываем образ в папку /srv/tftp
tar -xpvf ./netboot.tar.gz
Врубаем на клиентах загрузку по сети в BIOS и начинаем установку.

PS: Кстати, всё это можно сделать на RIS сервере. Проверено. Но это уже извращение.