NetworkBoot
Содержание
Установка Linux и FreeBSD используя удаленную загрузку
Оглавление
Общие настройки
- 192.168.11.1 - сервер, под AltLinux.
- 192.168.11.3 или 192.168.11.2 - IP клиентов, на которые нужно установить Linux или FreeBSD (IP выдается по DHCP).
Задача - установить систему на машину без дисковода, CDROM и не поддерживающую загрузку с Flash.
DHCP
Устанавливаем dhcp:
apt-get install dhcp-server dhcp-common
Настраиваем /etc/dhcp/dhcpd.conf
option domain-name "test.ru"; option domain-name-servers ns.test.ru; option routers 192.168.11.1; ddns-update-style none; server-name "DHCPserver"; server-identifier 192.168.11.1; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; allow booting; allow bootp; subnet 192.168.11.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.11.255; range 192.168.11.2 192.168.11.3; next-server 192.168.11.1; # Linux filename "pxelinux.0"; ## FreeBSD # filename "pxeboot"; # option root-path "/var/freebsdboot"; # NFS root path }
Запускаем сервис:
service dhcpd start
TFTP
Устанавливаем tftpd (корневая директория tftp сервера будет /var/tftp):
apt-get install tftp-server
При использовании inetd, /etc/inetd.conf:
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -c -vvv -s /var/tftp
При использовании xinetd, /etc/xinetd.d/tftp
service tftp { disable = no socket_type = dgram wait = yes user = root server = /usr/sbin/in.tftpd server_args = -u tftp -s /var/tftp -c -vvv }
Перезапускаем xinetd:
service xinetd restart
NFS
Устанавливаем nfs:
apt-get install portmap nfs-server nfs-utils
Прописываем точку монтирования (монтировать будем установочный CDROM, можно прописать локальную директорию в которую скопировано содержимое диска), /etc/exports:
/mnt/cdrom 192.168.11.2(ro) 192.168.11.3(ro)
Запускаем сервис:
service portmap start service nfs start
Установка AltLinux
Скачиваем пакет syslinux с сайта http://www.kernel.org/pub/linux/utils/boot/syslinux/, берём из комплекта загрузчик pxelinux.0 (он уже собран) и копируем его в директорию /var/tftp (в AltLinux по умолчанию /var/lib/tftpboot, но /var/tftp мной используется в силу исторических причин). В AltLinux 2.4 есть пакет syslinux, но pxelinux.0 из него неработоспособен (не знаю как из пакета в сизифе), по крайней мере я потратил много времени на отладку и анализ трафика, прежде чем определил что проблема в загрузчике, он отказывался загружать initrd файл (нормально загружая ядро), пытаясь загрузить его с broadcast адреса, игнорируя данные ранее полученные по DHCP.
Копируем образ ядра и initrd с диска с AltLinux Master 2.4, /mnt/cdrom/isolinux/alt0/vmlinuz и /mnt/cdrom/isolinux/alt0/all.rdz в директорию /var/tftp/. Для AltLinux Compact 3.0 имя initrd файла full.cz.
Далее создаем директорию /var/tftp/pxelinux.cfg и файл конфигурации default или файл с именем, полученным при преобразовании IP в шестнадцатеричный вид, выполнив команду gethostip 192.168.11.3, программа gethostip есть в комплекте syslinux:
/var/tftp/pxelinux.cfg/default
default pxelinux prompt 1 timeout 600 label pxelinux kernel vmlinuz append initrd=all.rdz design=Master ramdisk_size=64000 # Для AltLinux Compact 3.0 имя initrd файла full.cz
На клиентской машине в BIOS включаем загрузку по сети. Загружаемся.... В настройках программы установки AltLinux выбираем «NFS Server», далее выбираем DHCP, в качестве имени NSF сервера (можно установить, без NFS по FTP) вводим 192.168.11.1, директория — /mnt/cdrom. Монтируем на сервере установочный диск и жмём Ok.
При проблемах анализируем /var/log/messages.
Установка FreeBSD
Копируем с установочного диска файл pxeboot в директорию /var/tftp. В настройках dhcp оставляем:
filename "pxeboot"; option root-path "/var/freebsdboot"; # NFS root path
Создаем директорию /var/freebsdboot, копируем туда содержимое boot директории установочного диска (если диска нет, процесс создания отлично описан здесь).
В /etc/exports добавляем (под Linux):
/var/freebsdboot 192.168.11.2(ro) 192.168.11.3(ro)
Или для BSD:
/var/freebsdboot -ro -network 192.168.11.0 -mask 255.255.255.0
Правим boot/loader.rc:
load /boot/kernel/kernel load -t mfs_root /boot/mfsroot set module_path="/boot/modules;/boot/kernel" set vfs.root.mountfrom="ufs:/dev/md0c" boot
Загружаемся. При установке выбираем NFS и точку монтирования "192.168.11.1:/mnt/cdrom".
Автоматизация установки
FreeBSD
Сценарий для автоматизации установки FreeBSD описывается в файле install.cfg (подробнее - man sysinstall, пример создания /usr/src/usr.sbin/sysinstall/install.cfg или здесь, здесь или здесь). install.cfg помещается в корень mfsroot образа (будет загружен автоматически) или в NFS раздел (после монтирования нужно выбрать "Load Config").
Команды копирования install.cfg в mfsroot (выполняются под FreeBSD):
mkdir MFS # Директория для монтирования gunzip ./mfsroot.gz mdconfig -a -t vnode -u0 -f ./mfsroot mount /dev/md0 ./MFS ...Копируем install.cfg в ./MFS umount /dev/md0 mdconfig -d -u0
AltLinux
См. Автоматизация установки AltLinux на большое число машин.
Fedora
После ручной установки создается файл /root/anaconda-ks.cfg, который нужно поместить на web-сервер, и передать путь к файлу через переменную загрузки вида ks=http://192.168.11.1/anaconda-ks.cfg. Примеры можно найти здесь, здесь, здесь и здесь.
Debian GNU/Linux
Примеры автоматизации установки Debian можно найти в статье "Automating new Debian installations with preseeding".
Настройка Debian сервера для "PXE network booting" сетевой загрузки клиентов. Статья опубликована "Setting up a server for PXE network booting".
Ссылки
- Linux
- Пример настройки сервера удаленной загрузки под Linux
- X-терминалы Linux
- Вариант создания собственного терминального клиента
- remoteboot.ru
- перевод Linux Remote-Boot mini HOWTO
- http://netboot.sourceforge.net - [Netboot installation], [Netboot HOW-TO]
- http://syslinux.zytor.com/pxe.php
- Disk-Less Linux with Intel Lan Desk
- Diskless Linux
- Creating a kickstart install server for Fedora Core 4
- Kickstart Installation on Red Hat/Fedora Core Linux
- Hands-Off Fedora Installs with Kickstart