NetworkBoot

Материал из OpenWiki
Перейти к: навигация, поиск

Установка 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".

Ссылки