Архив рубрики: pxe

Установка freebsd по сети

Устанавливаем и настраиваем DHCP-сервер

# portinstall isc-dhcp3-server (из опций указывем только WITH_DHCP_PARANOIA)

В /etc/rc.conf добавляем:

# for PXE
dhcpd_enable="YES"
dhcpd_ifaces="em0"
dhcpd_chroot_enable="YES"

В /usr/local/etc/dhcpd.conf пишем

option domain-name “example.ru”;
option domain-name-servers 192.168.1.2, 192.168.1.3;

authoritative;

ddns-update-style none;

log-facility local4;

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
use-host-decl-names on;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.100 192.168.1.200;
# адрес сервера на котором работает инсталлятор
next-server 192.168.1.5;
filename "pxeboot";
option root-path "192.168.1.5:/spool/pxe";
}

В /etc/syslog.conf добавляем

local4.* /var/log/dhcpd.log

В /etc/newsyslog.conf

/var/log/dhcpd.log 644 3 900 * JC
/etc/rc.d/syslogd reload

Копируем содержимое install CD в папку на диске

mdconfig -a -f /path/to/dist.iso
mount_cd9660 /dev/md0 /mnt/cdrom/
cp -r /mnt/cdrom/ /spool/pxe

tftp-сервер

mkdir /var/tftproot
cp /spool/pxe/boot/pxeboot /var/tftpboot
chown nobody /var/tftpboot
chmod 640 /var/tftpboot

В /etc/hosts.allow пишем

# tftp server for remote install
tftpd: 192.168.1.0/255.255.255.0 : allow
tftpd: ALL : deny

В /etc/inetd.conf пишем

tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /var/tftpboot -u nobody
/etc/rc.d/inetd reload

NFS сервер

В /etc/exports пишем

/spool/pxe -ro -network=192.168.1.0 -mask=255.255.255.0

В /etc/rc.conf

nfs_server_enable="YES"
rpcbind_enable="YES"

И запускаем все это

rpcbind
nfsd -u -t -n 4
mountd -r
# showmount -e
Exports list on localhost:
/spool/pxe 192.168.1.0

Редактируем loader.conf

Примерно так:

# cat > /spool/pxe/boot/loader.conf
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
autoboot_delay="5"
vfs.root.mountfrom="ufs:/dev/md0c"

Ключевым моментом является наличие последней строчки.

В принципе после всего этого можно уже ставить систему.

install.cfg

Для того, чтобы не отвечать вручную на все вопросы sysinstall это можно автоматизировать составив файл install.cfg

Файл install.cfg должен находиться внутри mfsroot.gz, скопировать его туда можно так:

cd /spool/pxe
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

(этот набор команд лучше оформить в виде Makefile)

Пример install.cfg

Чтобы при установке ставилися набор пакетов их нужно создать:

cd /spool/pxe/packages/All/
pkg_crete -b bash-3.1.10
pkg_crete -b sudo-1.6.8.12_1
pkg_crete -b smartmontools-5.33_5

И прописать из в INDEX, например таким скриптом:

#!/bin/sh

dir=/spool/pxe/packages

cd $dir/All

rm $dir/INDEX

for file in *; do
echo ${file%.tgz}
egrep ^${file%.tgz} /usr/ports/INDEX-6 >> $dir/INDEX
done

Недостатки данного способа

  • Нужно прописывать в install.cfg имя интерфейса и имя диска, что неудобно, если железо не однотипное.
  • Нельзя установить систему на gmirror
  • Нужно прописывать полные (включая версию) имена всех устанавливаемых пакетов, после их обновления приходится прописывать все в install.cfg заново.
  • Конфиги, которые нужно скопировать на новый сервер нужно оформлять в виде пакета, что повышает трудоемкость задачи.

Бездисковая загрузка RDP к 2003 server Или настраиваем PXE на freebsd 7.2

Задача: Настроить бездисковые рабочие станции чтобы они загружались из сети и грузились сразу в терминальную сессию.
Качаем загрузочный образ с сайта http://nixts.org
http://nixts.org/doku.php?id=downloads

нам необходим тот, который pxe.

Настройка DHCP-сервера

cd /usr/ports/net/isc-dhcp30-server && make install clean
[X] DHCP_PARANOIA
mkdir -p /usr/local/etc && touch /usr/local/etc/dhcpd.conf

cat /usr/local/etc/dhcpd.conf
ddns-update-style none;
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.123 172.16.0.153;
next-server 172.16.0.1
filename «pxelinux.0»
}
Параметр next-server задаёт IP-адрес TFTP-сервера, параметр filename задаёт имя загрузчика. Так же следует указать правильные subnet, mask и range — адрес сети, маску сети и диапазон выдаваемых адресов соответственно.
добавим в /etc/rc.conf следующие строки:
dhcpd_enable=»YES»
dhcpd_ifaces=»em0″
это строки разрешают запуск DHCP-сервера и указывают имя сетевого интерфейса (em0), на котором следует принимать запросы от DHCP-клиентов. Узнать имена сетевых интерфейсов можно при помощи команды ifconfig.

/usr/local/etc/rc.d/isc-dhcpd start

Настройка TFTP-сервера

Откройте файл /etc/inetd.conf любым текстовым редактором и найдите в нем такую строку:
#tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
и раскомментируйте её
Создайте корневой каталог TFTP-сервера и каталог для конфигурационных файлов загрузчика:
mkdir /tftpboot
mkdir /tftpboot/pxelinux.cfg
Скопируйте в каталог /tftpboot файлы из архива загрузчика
Разрешите запуск inetd. Для этого откройте файл /etc/rc.conf добавьте в конец файла следующую строку:
inetd_enable=»YES»
Запустите inetd, который в свою очередь запустит TFTP-сервер:
/etc/rc.d/inetd start

На машине, которая загружается с сервера ставим загрузку с сети. Всё…

Осталось поправить конфигурационные файлы в папке pxeboot/
Тут нет ничего сложного. Все параметры интуитивно понятны. А на сайте есть полное описание.