Пользователь
0,0
рейтинг
4 февраля 2015 в 13:59

Администрирование → Установка FreeBSD по сети (PXE) с linux-сервера (dnsmasq + nfs) из песочницы

Возникла потребность установить 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
карма
5,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (4)

  • +2
    Вариант без nfs, чистый PXE.
    1) Заливаем на PXE сервер образ отсюда
    2) В конфиге PXE сервера указываем мак сетевой машины, на которую будем ставить систему.
    3) Отправляем машину удаленно в ребут, если на ней стоит PXE загрузка то загружается система, которая доступна по ssh и IP получит с DHCP сервера.
    4) Коннектимся, набираем bsdinstall — ставим как обычную фрю, отвечая на вопросы мастера или же вручную, например если надо сделать не стандартную разбивку для zfs.
    К сожалению инфа в статье описана уже многократно и не несет в себе ничего нового, да и на статью не тянет.
    • 0
      Хотелось бы увидеть ссылки на эти самые многократные описания…
  • 0
    Недавно столкнулся с более экзотичной задачей — ноут с UEFI, на который надо поставить Arch Linux с сервера под виндой. Удалось настроить, но Arch не предоставляет образов для сетевой загрузки с UEFI
    • 0
      Можно попробовать обычный образ (не подготовленный для сетевой загрузки) загрузить по сети в оперативку, используя что-то вроде memdisk. Если в ядро вкомпилирован драйвер мемдиска (обычно это так), то должно заработать.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.