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

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

Теоретична частина PXE-завантаження добре описана в статті: http://xgu.ua/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,12 h #Діапазон видаються 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. Не забудьте тільки по завершенню установки змінити порядок завантаження в біосі на колишній.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.