Настройка сетевой загрузки с помощью DHCP NFS и TFTP
Появилась задача - поставить Linux Mint на ноутбук, на котором отсутствовал привод CD/DVD. Поэтому родилась идея в пределах рабочей локальной сети сделать загрузку по сети Live-образа операционной системы. То есть обычный сервер сетевой загрузки. К сожалению, более-менее простых руководств на просторах Интернет я не нашел, поэтому расскажу, как сделал это сам.
Для этого используется сервер Ubuntu, на котором установлены три сервиса:
Итак, прежде всего, поставим все эти три службы.
sudo apt-get install nfs-kernel-server dhcp3-server tftpd-hpa
Далее - настройка. Начнем с TFTPD. Его настройки я не менял, однако приведу их здесь, на случай, если у вас они уже изменены. Смотрим содержимое файла /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
Небольшое примечание. На следующий день я поднимал это дело на CentOS. Установка tftpd тут немного другая:
- Установка TFTP
yum install tftp-server yum install xinetd chkconfig tftp on chkconfig xinetd on chmod 777 /tftpboot
Ну а теперь вернемся к нашим "баранам".
Итак, настройки NFS. Они просто указывают директорию, в которую можно будет попасть по NFS и диапазон IP, которому это разрешено делать. Проверяем содержимое /etc/exports
/var/lib/tftpboot 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
Здесь вы видите, что файлы будут браться из той же директории, что указана и для TFTPD.
Снова отступление на тему CentOS - установка NFS:
yum install nfs-utils
Теперь настройки службы DHCP. Она должна не только раздавать IP, но и указывать сервер загрузки и какой именно файл нужно взять. Смотрим содержимое /etc/dhcp3/dhcpd.conf
ping-check = 1;
subnet 192.168.1.0
netmask 255.255.255.0 {
range 192.168.1.3 192.168.1.100;
filename = "pxelinux.0";
interface eth1;
}
Тут указана подсеть 192.168.1.0-192.168.1.254, файл для загрузки - pxelinux.0. Сервер next не указываю, т.к. этот файл находится на этом же сервере. Чтобы вам все это не пришлось искать в сети, выкладываю архив с pxelinux.0 и другими файлами, в том числе с файлами настроек сюда: Ссылка на архив.
Итак, службы настроены. Теперь идем в /var/lib/tftpboot. В данном каталоге мы поместим файл pxelinux.0, каталог pxelinux.cfg и каталоги, в которых у нас будут лежать распакованные образы. Для примера, я выбрал Linux Mint и Ubuntu Server, чтобы можно было выбирать, что грузить на компьютер. Это позволит заливать не только пользовательские машинки, но и сервера. Поэтому создал каталоги mint и server. Думаю, как скопировать файлы из ISO-образов, рассказывать вам не надо.
Теперь посмотрим файл default в pxelinux.cfg. Итак, содержимое:
LABEL live kernel mint/casper/vmlinuz append initrd=mint/casper/initrd.lz boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/mint -- LABEL server kernel server/boot/vmlinuz append initrd=server/boot/initrd.lz boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/server -- PROMPT 1 TIMEOUT 0
В данном случае видно, что при загрузке можно указать live - и тогда будет грузиться Linux Mint, если server - Ubuntu Server, nfsroot=192.168.1.1 - это адрес нашего сервера, который так щедро раздает IP и операционки в сети. Итак, подключаем к сети компьютер для заливки, ставим загрузку по сети - и в путь! На этом все. Если замечены какие-либо неточности или ошибки - просьба исправить или подсказать. Надеюсь, это руководство вам поможет.