Установка FreeBSD по сети (PXE) с linux-сервера (dnsmasq + nfs)

в 10:59, , рубрики: dnsmasq, freebsd, nfs, pxe, Настройка Linux, системное администрирование, метки: ,

Возникла потребность установить FreeBSD на ноутбук. Так как ноутбук древний, он не поддерживает загрузку с флэшки по usb. Болванки под рукой также не оказалось, было решено опробовать установку через PXE (Preboot eXecution Environment). Погуглив, я нашел несколько статей на эту тему, однако в них описывается установка linux с linux-сервера, либо FreeBSD с FreeBSD-сервера. Я не претендую на создание какого-то особенного метода, просто выкладываю свою инструкцию по быстрому развертыванию FreeBSD 10.1 по сети.

Теоретическая часть PXE-загрузки хорошо описана в статье: http://xgu.ru/wiki/PXE

Итак, приступим. Нам понадобится: dhcp, tftp, nfs.

В качестве сервера выступит компьютер с установленным Debian 7. У меня на нем уже был установлен dnsmasq, который является одновременно dhcp- и dns-сервером. Это очень удобно для небольшой домашней сети, чтобы не поднимать отдельно dhcp и bind. К тому же в dnsmasq есть свой tftp-сервер, так что он идеально подходит для нашей задачи, как говорится — «всё в одном флаконе». Остается установить nfs-сервер и всё это дело сконфигурировать. PXE-загрузчик имеется в образе дистрибутива FreeBSD.

Устанавливаем нужные пакеты:

apt-get install dnsmasq nfs-kernel-server

Скачиваем iso-образ FreeBSD с официального сайта freebsd.org. Я использовал минимальный bootonly-образ:

wget ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-i386-bootonly.iso

Монтируем его:

mount -o loop FreeBSD-10.1-RELEASE-i386-bootonly.iso /mnt

Копируем все файлы образа в директорию, которая будет доступна через nfs:

cp -a /mnt /srv/nfs/freebsd

Добавляем nfs-шару в /etc/exports

/srv/nfs/freebsd 192.168.0.0/24(rw,sync,no_subtree_check)

Перезапускаем nfs:

service nfs-kernel-server restart

Теперь требуется кое-что подправить:

Закомментируем или удалим строчку в /srv/nfs/freebsd/etc/fstab, чтобы система при загрузке не пыталась монтировать диск (образ предназначен для записи на болванку), а смонтировала в качестве корневой файловой системы нашу nfs-шару:

# /dev/iso9660/10_1_RELEASE_I386_BO / cd9660 ro 0 0

Удаляем символьную ссылку /srv/nfs/freebsd/etc/resolv.conf, которая ссылается на несуществующий файл /srv/nfs/freebsd/tmp/bsdinstall_etc/resolv.conf. По идее, адрес dns-сервера должен был быть получен по dhcp и записан в этот файл установщиком FreeBSD при запуске. Однако этого не происходит: установщик создает пустой файл, а если файл уже создан, затирает его. Поэтому вместо симлинка создаем новый файл /srv/nfs/freebsd/etc/resolv.conf и прописываем в него адрес своего dns-сервера:

nameserver 192.168.0.101

Редактируем файл /etc/dnsmasq.conf, привожу только те опции, которые требуются для решения нашей задачи, т.е. dhcp+tftp без dns:

interface=eth0  #интерфейс, на котором слушаются dhcp-запросы
dhcp-range=192.168.0.200,192.168.0.250,12h  #Диапазон выдаваемых ip-адресов и время аренды
dhcp-option=17,/srv/nfs/freebsd/  #Указываем корень для nfs
dhcp-boot=/srv/nfs/freebsd/boot/pxeboot  #Указываем путь к PXE-загрузчику
enable-tftp  #Включаем встроенный tftp-сервер
tftp-root=/srv/nfs/freebsd/  #Указываем корень tftp

Перезапускаем dnsmasq:

service dnsmasq restart

Вот собственно и всё. Заходим в биос, выбираем порядок загрузки с LAN (PXE). Сетевая карта загружает pxe-loader, затем по tftp копируется и запускается ядро, монтируется корневая файловая система через nfs, запускается установщик FreeBSD, а далее – стандартная установка FreeBSD. Не забудьте только по завершению установки изменить порядок загрузки в биосе на прежний.

Автор: perfectus

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js