Сервер сетевой загрузки (PXE) на Freebsd ч.1 - Настройка сервера
Устав от однотипных операций установки различных операционных систем, задумался, каким образом это можно все упростить, чтобы не прожигать болванки каждый раз, т.к. при моей аккуратности они имеют свойств царапаться, теряться. Тем более, что не на всех компьютерах (серверах) присутствуют устройства чтения CD-DVD, а значит надо создавать загрузочные устройства на флешках. Выбор пал на установку (загрузку) операционных систем по сети.


Если у Вас DHCP под Linux, то необходимо добавить следущие строки в описание области в /usr/local/etc/dhcp.conf:
next-server 192.168.1.5;  # TFTP server address
filename "gpxelinux.0";   # PXE boot loader filename
# mkdir -p /usr/tftpboot/images
# mkdir /usr/tftpboot/pxelinux.cfg
# cd /usr/ports/ftp/tftp-hpa
# make install clean
# ee /etc/inetd.conf
tftp    dgram   udp     wait    root    /usr/local/libexec/in.tftpd     in.tftpd -p -s 
/usr/tftpboot -B 1024
inetd_enable="YES"
/etc/rc.d/inetd restart
cd /usr/ports/ftp/wget
make install clean
rehash
wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.04.tar.gz
tar xvfz syslinux-4.04.tar.gz
#cp /home/user/syslinux-4.04/gpxe/gpxelinux.0 /usr/tftpboot/
#cp /home/user/syslinux-4.04/com32/menu/menu.c32 /usr/tftpboot/
#cp /home/user/syslinux-4.04/com32/menu/vesamenu.c32 /usr/tftpboot/
#cp /home/user/syslinux-4.04/com32/modules/reboot.c32 /usr/tftpboot/
#cp /home/user/syslinux-4.04/com32/modules/chain.c32 /usr/tftpboot/
#cp /home/user/syslinux-4.04/memdisk/memdisk /usr/tftpboot/
touch /usr/tftpboot/pxelinux.cfg/default
wget h_ttp://mfsbsd.vx.sk/iso/mfsbsd-se-8.2-i386.iso
mkdir /usr/tftpboot/images/mfsbsd
cp /tmp/mfsbsd-8.2-i386.iso /usr/tftpboot/images/mfsbsd
ui menu.c32
menu title Utilities
	 
label mfsbsd
  menu label ^MfsBSD
  kernel memdisk
  initrd images/mfsbsd/mfsbsd-8.2-i386.iso 
  append iso raw
label reboot
  menu label Reboot
  kernel reboot.c32

ln -s /usr/tftpboot/images/ /usr/local/www/apache22/data/
ee /usr/local/etc/apache22/httpd.conf
<Directory "/images">
	   Order Deny,Allow
	   Deny from all
	   Allow from 192.168.1.0/24
	   Options Indexes
</Directory>
 label mfsbsd
   menu label ^MfsBSD
   kernel h_ttp://192.168.1.5/memdisk
   initrd  http://192.168.1.5/images/mfsbsd/mfsbsd-8.2-i386.iso 
   append iso raw
 
wget http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/2.5.0/systemrescuecd-x86-2.5.0.iso 
# mkdir /usr/tftpboot/images/memtest/
# mount -t cd9660 /dev/`mdconfig -f systemrescuecd-x86-2.5.0iso` /mnt
# cp /mnt/bootdisk/memtestp /usr/tftpboot/images/memtest
# umount /mnt
  label memtest
	 menu label ^Memtest
	 kernel images/memtest/memtestp
 
cp /tmp/syslinux-4.04/com32/hdt/hdt.c32 /usr/tftpboot/
label hdt
 menu label ^Hardware Detection Tool
 kernel hdt.c32



            default menu.c32
	    prompt 0
	 
	    menu title Welcome PXE Boot Menu
	    menu INCLUDE pxelinux.cfg/graphics.conf
	    MENU AUTOBOOT Starting Local System in # seconds
	 
	    label bootlocal
	        menu label ^Boot from Local hard disk
	        menu default
	        localboot 0
	        timeout 80
	        TOTALTIMEOUT 9000
	 
	    LABEL LiveCD
	        MENU PASSWD 1234567
                MENU LABEL ^LiveCD
	        KERNEL menu.c32
	        APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/livecd.menu
	 
	    LABEL Utilites
	        MENU LABEL ^Utilities
	        KERNEL menu.c32
	        APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/utilities.menu
	 
	    LABEL Setup OS Menu
	        MENU LABEL ^Install system
	        KERNEL menu.c32
	        APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/setup.menu
	 
	    LABEL reboot
	    menu label ^Reboot
	    kernel reboot.c32
		
        menu color tabmsg 37;40      #80ffffff #00000000
	menu color hotsel 30;47      #40000000 #20ffffff
	menu color sel 30;47      #40000000 #20ffffff
	menu color scrollbar 30;47      #40000000 #20ffffff
	MENU MASTER PASSWD 444444
	MENU WIDTH 80
	MENU MARGIN 22
	MENU PASSWORDMARGIN 26
	MENU ROWS 10
	MENU TABMSGROW 15
	MENU CMDLINEROW 15
	MENU ENDROW 26
	MENU PASSWORDROW 12
	MENU TIMEOUTROW 25
	MENU VSHIFT 6
	MENU PASSPROMPT Enter Password:
	NOESCAPE 1
	ALLOWOPTIONS 0
		
            MENU TITLE LiveCD
	 
	    LABEL LiveCD
	        MENU LABEL ^Return to Main Menu
	        KERNEL menu.c32
	        APPEND pxelinux.cfg/default
	 
	    label MfsBSD
	        menu label ^MfsBSD
	        kernel memdisk
	        initrd images/mfsbsd/mfsbsd-se-8.2-i386.iso
	        append iso raw
	 
	    label Systemrescue
	        menu label ^System Rescue CD
	        kernel images/systemrescuecd/rescuecd
	        append setkmap=ru netboot=tftp://10.218.138.246/images/systemrescuecd/sysrcd.dat
	        initrd images/systemrescuecd/initram.igz
	 
		
/usr/tftpboot/pxelinux.cfg/setup.menu
/usr/tftpboot/pxelinux.cfg/Utilities.menu - также являются дополнительными пунктами меню и заполняются подобно livecd.menu, в зависимости от вносимых в него приложений.
ui vesamenu.c3
menu title Utilities
menu background backgnd.png
	 

Комментарии
Не получается запустить Live
Не получается запустить Live CD systemrescuecd.
На пункте где через tftp загружается sysrcd.dat доходит до 10% и сбрасывается на 0 и снова
sysrcd.md5 загружается нормально.
Попробуйте загрузить по http
Попробуйте загрузить по http или nfs, если не получится отпишите. В понедельник на работу выйду, гляну.
Upd: По http загружается отлично и быстро
По HTTP все нормально
Дополнительно замечу:
1) Не загружался LiveCD - mfsBSD пришлось из /usr/tftpboot/pxelinux.cfg/default
строка append iso raw убрать опцию raw - все заработало
2)Приведенный bootlocal не работает - переделал на
label bootlocal
menu label ^Boot from Local hard disk
menu default
kernel chain.c32
append hd0 0
timeout 80
TOTALTIMEOUT 9000
shutdown
День добрый! Задался вопростом сделать отключение машинки из меню. Не подскажите как его правильно сделать? Добавил файлик poweroff.com в корень
label shutdown
menu label power off
comboot poweroff.com
Проблемка в том, что виртуалка (Oracle VM) отключается, а реальная машина нет. На мгновенье вылетает APM not present. гуглил, но что-то не особо результативно..Версия syslinux 4.04-4.06 без разницы.
В версиях после 4.06 этот файл вообще отсутствует (