PXE (Preboot Execution Environment) - среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, DHCP и TFTP. PXE-код, прописанный в сетевой карте, получает загрузчик из сети, после чего передаёт ему управление.
Рассмотрим краткое руководство по настройке сервера PXE для системы FreeBSD, а также покажу как можно простенько запилить автоматическую установку сервера с необходимыми пакетами (для конкретного проекта).
1. Настройка сервера
Для начала нужно установить сервер DHCP.
После установки DHCP пишем конфигурационный файл (обычно /usr/local/etc/dhcpd.conf).
Выдержка из файла:
... # FreeBSD 10 amd64 auto install host test.local { } ... |
Параметр next-server определяет сервер TFTP или NFS, используемый для получения загрузчика или файла ядра (по умолчанию используется тот же самый хост, на котором расположен сервер DHCP).
Параметр filename определяет файл, который PXE будет загружать для следующего шага выполнения (этот файл pxeboot, его мы качаем с образом livefs FreeBSD. Если нет такого ISO, то скорее всего pxeboot есть в диске DVD1 образа FreeBSD). Он должен быть указан в соответствии с используемым методом передачи. PXE использует TFTP, поэтому здесь применяются относительные пути файлов. Кроме того, PXE загружает pxeboot, а не ядро.
Параметр root-path определяет путь к корневой файловой системе, обычно используют NFS (для этого распаковываем первый диск disk1. И на сколько помню я менял только файл /etc/fstab - отсюда убирал монтирование cd-rom, т.к. мы будем монтировать базовую систему по NFS).
Если вы используете PXE, настроенный для использования TFTP, то нужно включить tftpd на файловом сервере:
Создаем каталог, файлы которого будет обслуживать tftpd.
Прописываем в /etc/inetd.conf:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -vv -u nobody -s /usr/home/storage/releases/cdrom-amd64/
Бывает, что некоторым версиям PXE требуется TCP-вариант TFTP. В таком случае добавьте вторую строчку, заменяющую dgram udp на stream tcp.
Перезапускаем inetd, чтобы он перечитал свой конфигурационный файл. Не забываем в /etc/rc.conf внести inetd_enable="YES".
# /etc/rc.d/inetd restart
Вы можете поместить каталог tftpboot в любом месте на сервере, как указано в inetd.conf и в dhcpd.conf.
Также нужно включить NFS и экспортировать соответствующую файловую систему на сервере NFS.
Добавьте следующее в /etc/rc.conf:
nfs_server_enable="YES"
Экспортируйте файловую систему, в которой расположен корневой каталог системы, добавив следующую строку в /etc/exports :
/usr/home/storage/releases -alldirs -maproot=0:0 -ro -network 127.0.0.0 -mask 255.0.0.0
/usr/home/storage/releases -alldirs -maproot=0:0 -ro -network 10.15.1.64 -mask 255.255.255.224
Попросим mountd перечитать файл настроек. Однако если это первый шаг настройки NFS, то нужно будет выполнить перезагрузку сервера.
# /etc/rc.d/mountd restart
Готово! Теперь у нас есть PXE сервер.
2. Установка FreeBSD 10 через PXE.
Итак, у нас есть тестовый хост, назовем test.local.
Для того, чтобы система поставилась на сервер без участия админа, или же с минимальным его участием, воспользуемся механизмом запуска пользовательских программ в FreeBSD, файлом rc.local.
# cat /usr/home/storage/releases/cdrom-amd64/freebsd/FreeBSD-10.2-RELEASE-amd64/etc/rc.local
#!/bin/sh -x cat > $MNTDIR/etc/pkg/FreeBSD.conf << EOF cat > $MNTDIR/etc/rc.conf << EOF ln -s /usr/local/bin/bash $MNTDIR/bin/bash chroot $MNTDIR /bin/sh -c "ASSUME_ALWAYS_YES=yes pkg install $INSTALL" |
/etc/setup/$HOSTNAME/setup.conf - относительный путь, где лежат скрипты.
# cat setup/rns1-2.khor.nic.ru/setup.conf
#!/bin/sh -x ################
gpart destroy -F /dev/da0 tar -xvzf /mnt/usr/freebsd-dist/base.txz -C $MNTDIR cat > $MNTDIR/etc/fstab << EOF PKGSITE='pkg+http://tinderbox-ng.infra.local/packages/corp-resolvers-bind998' cat > $MNTDIR/etc/resolv.conf << EOF nameserver 10.0.0.100 EOF INSTALL=project-rc-bind |
Где PKGSITE - репозиторий, создание которого рассмотрено в статье "собственный репозиторий FreeBSD pkgng"; опцией INSTALL - инсталлируем метапакет, который притянет нужные пакеты.
Выставляем грузиться серверу по PXE.
Пытаемся заинсталлить тачку.
Обновлено 05.04.2016 13:42