Сервер сетевой загрузки (PXE) на Freebsd ч.2 - Установка Unix-like систем.

Продолжим тему сетевой загрузки операционных систем, в предыдущей части мы сделали первоначальные настройки и рассмотрели запуск некоторых утилит. В этой части мы рассмотрим сетевую установку Unix-like систем на примере Ubuntu, OpenSuse и FreeBSD.

">

Для реализации данной задачи, помимо описанных настроек предыдущей главы, еще нам понадобиться NFS сервер и rsync, приступим к настройке.

По умолчанию поддержка NFS во FreeBSD включена и если Вы не отключали опцию NFSSERVER в ядре, то все должно работать.


Создаем файл /etc/exports и добавляем в него нашу папку.
ee /etc/exports
/usr/tftpboot -alldirs,ro -mapall=nobody:nobody -network 192.168.1.0/24


Далее добавляем в файл /etc/hosts.allow разрешения для доступа из нашей сети (Добавляем перед строкой rpcbind : ALL : deny)
rpcbind : 192.168.1.0/24 : allow


В rc.conf добавляем
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r -n"


И запускаем NFS Server (или перезагружаемся)
/etc/rc.d/rpcbind start
/etc/rc.d/nfsd start


Проверяем нашу шару -
showmount -e
Если все хорошо, то получим -
Exports list on localhost:
/usr/tftpboot 192.168.1.0


Ставим rsync
cd /usr/ports/net/rsync/
make install clean
rehash


Загрузка Ubuntu сети.


mkdir /usr/tftpboot/images/ubuntu
wget h ttp://mirror.yandex.ru/ubuntu-releases/11.10/ubuntu-11.10-desktop-i386.iso
mount -t cd9660 /dev/`mdconfig -f ubuntu-11.10-desktop-i386.iso` /mnt
rsync -a /mnt/ /usr/tftpboot/images/ubuntu/
umount /mnt
mdconfig -d -u 0


В файл /usr/tftpboot/pxelinux.cfg/default добавляем -
label kubuntu
menu label ^Ubuntu
kernel images/kubuntu/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.1:/usr/tftpboot/images/kubuntu
initrd images/kubuntu/casper/initrd.lz

Загружаемся по сети и видим обычный убунтовский LiveCD c возможностью установки.

Для автоматической установки необходимо использовать файлы ответов, их пример Вы можете посмотреть в папке дистрибутива /preseed, в пределах этой части статьи я их разбирать не буду.

Установка OpenSUSE

Создаем папку -
mkdir /usr/tftpboot/images/opensuse

Загружаем ядро -

wget http://download.opensuse.org/distribution/12.1/repo/oss/boot/$(arch)/loader/linux
wget http://download.opensuse.org/distribution/12.1/repo/oss/boot/$(arch)/loader/initrd

Помещаем их в папку /usr/tftpboot/images/opensuse, туда же копируем дистрибутив и прописываем в файл конфигурации сетевой загрузки (default) -

label openSUSE
menu label ^OpenSuSe
kernel images/opensuse/linux
append initrd=images/opensuse/initrd install=nfs://192.168.1.1:/usr/tftpboot/images/opensuse/

Установка FreeBSD.

Также интересно:

C установкой FreeBSD вышла некоторая накладка из-за использования вендового DHCP, но обо всем по порядку.

Итак, скачиваем образ -
wget ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/8.2/FreeBSD-8.2-RELEAS...

Создаем папку, монтируем и копируем -

mkdir /usr/tftpboot/images/freebsd
mount -t cd9660 /dev/`mdconfig -f FreeBSD-8.2-RELEASE-i386-disc1.iso` /mnt
rsync -a /mnt/ /usr/tftpboot/images/freebsd/
umount /mnt
mdconfig -d -u 0

В default добавляем -

label freebsd
menu label FreeBSD LiveFS
pxe images/freebsd/boot/pxeboot

В DHCP (вендовый) добавляем корневой путь (пункт 017 - Корневой путь)
/usr/tftpboot/images/freebsd и .......

Сколько я не бился, но передать root path через вендовый dhcp у меня так и не получилось, все равно принимает /. Если кто поделится секретом (без ковыряния исходников pxe) буду премного благодарен.

В качестве временного решения (даже не временного, а для теста), заглушил вендовый DHCP и поставил на фрю.

Настройку DHCP сервера здесь я не рассматриваю, приведу только описание области -

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
next-server 192.168.1.1; # Адрес TFTP сервера
filename "gpxelinux.0"; # имя загрузчика PXE
option root-path "/usr/tftpboot/images/freebsd"; # NFS root
}

добавляем в файл /usr/tftpboot/images/freebsd/boot/loader.conf -

vfs.root.mountfrom="ufs:/dev/md0"

И пробуем загрузиться, появляется окно sysinstall, где мы после всех настроек выбираем с чего устанавливаться, соответственно - Install over NFS и вводим путь до нашей шары с дистрибутивом.

Также можно автоматизировать процесс установки, создав файл install.cfg, который в последствии должен быть перемещен внутрь mfsroot.gz

cd /usr/tftpboot/images/freebsd
gzip -d boot/mfsroot.gz
mdconfig -a -t vnode -f boot/mfsroot -u 9
mount /dev/md9 /mnt/tmp
cp install.cfg /mnt/tmp
umount /mnt/tmp
mdconfig -d -u 9
gzip boot/mfsroot

Как я уже говорил, автоматическую установку в этой части статьи мы не рассматриваем
Пример файла автоматической установки можно посмотреть здесь

В дальнейшем я постараюсь рассмотреть установку Windows систем, автоматическую установку ОС, возможно еще создание и использование различных LiveCD, соотвественно в разрезе сетевой загрузки.

Буду благодарен любым комментариям, особенно ответам на вопросы озвученными в статье.

записки системного администратора

0
Голосов пока нет

Комментарии

День добрый, сделал все как описано, до слов "Загружаемся по сети и видим обычный убунтовский LiveCD c возможностью установки" но процесс загрузки дальше не пошел. выдает NFS over TCP not available from 192.168.1.2.
freebsd тоже замирает но с другим сообщением сначала mounting from ufs:/dev/md0 failed with error 19
затем сразу идет попытка монтирования nfs  и тут уже замирает с сообщением
NFS ROOT: 192.168.1.2:/pxe/freebsd
re0: link state changed to UP
ос freebsd9.0

К сожалению смоделировать ситуацию смогу только по окончанию праздников, то бишь 9-го числа.

Вы к Вашим NFS ресурсам подцепляться пробовали? Он вообще работает?

Посмотрите еще здесь похожая проблема и здесь.

Отпишитесь пожалуйста в любом случае, если не получится, постараюсь помочь, а если получится, то поможет другим.

 

 

Наверно что то перемудрил, NFS работало, все как-бы было в порядке..Снес девятку, поставил 9.1, перекинул конфигурации и все завелось на раз. грешу на апач, может права на папку были не полные..забыл проверить. по идее надо делать chmod +x /pxedir. если ошибаюсь поправьте.
один момент.

добавляем в файл /usr/tftpboot/images/freebsd/boot/loader.conf -

vfs.root.mountfrom="ufs:/dev/md0"

не делал
 По второй ссылке ушел на этот адрес http://freebsd.so14k.com/freebsd9_pxe.shtml
пункт8 закоментировать загрузку с cd.
В общем свелось к копированию содержимого iso-образа и отключению загрузки с сд.

Приветствую люди добрые..
собсно, субж обсуждается здесь http://sysadmins.ru/topic386496.html
очень хоцца универсального решения..
подскажте.. а то вокруг да около.. истина гдето рядом, но никак не победю.. :(