Принесли как-то мне компьютер, который должен выполнять функцию офисного маршрутизатора, быть сервером внутренней почты и давать возможность VPN-подключения к офисной сети извне.
Машинка неплохая, но в ней было привода оптических дисков и IDE-разъемов для его подключения. Только SATA-слоты. SATA-привода у меня, увы, не нашлось, а MP3-плеер в качестве флеш-накопителя для установки использовать я не захотел.
Решил на рабочем компьютере поднять FreeBSD 9.0-RELEASE в VirtualBox’е и сделать из него сервер для установки через сеть.
В данном случае на виртуальной машине на сетевом интерфейсе стоял IP-адресс 10.0.1.190/24 (тип подключения в свойствах ВМ был выбран «Мост»)
Настраиваем tftpd. В /etc/rc.conf добавляем строчку:
inetd_enable="YES"
Создаем каталог:
mkdir /tftpboot
В /etc/inetd.conf раскомментируем строчку:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
Запускаем сетевую файловую систему. В /etc/rc.conf добавляем:
dhcpd_enable="YES" rpcbind_enable="YES" nfs_server_enable="YES" nfs_server_flags="-u -t -n 4" rpc_lockd_enable="YES" rpc_statd_enable="YES" mountd_enable="YES" mountd_flags="-r -p 59"
Создаем каталог:
mkdir /usr/local/pxeboot
Добавляем в /etc/exports строку:
/usr/local/pxeboot -network 10.0.1.0 -mask 255.255.255.0
Устанавливаем dhcpd:
cd /usr/ports/net/isc-dhcp42-server make install clean
После сборки dhcpd правим /usr/local/etc/dhcpd.conf:
authoritative; option domain-name "local"; option domain-name-servers ваш.DNS.сервер; subnet 10.0.1.0 netmask 255.255.255.0 { range 10.0.1.61 10.0.1.63; option routers 10.0.1.128; next-server 10.0.1.190; filename "/pxeboot"; option root-path "10.0.1.190:/usr/local/pxeboot"; }
range 10.0.1.61 10.0.1.63 поставил, чтобы адреса не пересекались с уже занятыми, 10.0.1.190, как я уже писал выше, это адрес на сетевой карте ВМ, 10.0.1.128 — адрес локального NAT’а, через который локальные машины ходят в мир
Теперь необходимо скачать загрузочный диск FreeBSD 9.0-RELEASE и примонтировать его:
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-bootonly.iso mdconfig -a -t vnode -f FreeBSD-9.0-RELEASE-i386-bootonly.iso mount_cd9660 /dev/md0 /mnt
Копируем содержимое диска в /usr/local/pxeboot:
cp -R /mnt /usr/local/pxeboot
И копируем загрузчик в /tftpboot:
cp /mnt/boot/pxeboot /tftpboot/
Теперь запускаем необходимые службы:
/etc/rc.d/inetd restart /usr/local/etc/rc.d/isc-dhcpd start /etc/rc.d/rpcbind start /etc/rc.d/nfsd start /etc/rc.d/mountd reload
Если все сделано правильно, то showmount -e должен вывести:
showmount -e Exports list on localhost: /usr/local/pxeboot 10.0.1.0
Вывод sockstat | grep inetd должен содержать строку:
root inetd 847 6 udp4 *:69 *:*
Далее подключам машину, на которую через сеть надо поставить FreeBSD 9.0-RELEASE, в нашу локальную сеть, в BIOS’е выбираем загрузку через PXE.
Если все сделано правильно, и я нигде не ошибся ;-), запустится загрузчик и начнется установка. Все необходимые компоненты для установки установщик будет тянуть с интернета.
P. S.: У меня, почему-то, во время начальных этапов установки затиралось содержимое /etc/resolv.conf. Но это не беда. Перед выбором distributions я на виртуальной машине просто отредактировал /usr/local/pxeboot/etc/resolv.conf
P. P. S.: Прошу прощения, если где-то что-то пропустил — по возможности исправлю.