Сетевая загрузку по протоколу PXE с роутера DD-WRT

 

     
 
 

Возникла проблема установки ОС на комп без CD и флоппи драйвов. Как оказалось, достаточно настроить DHCP и TFTP серверы, разместить необходимые файлы на роутере (с флешкой или HDD), и можно загрузить по сети любой компьютер, поддерживающий PXE.

На всякий случай напишу как это сделать, вдруг пригодится кому-нибудь.

1. На вкладке Services -> DNSMasq включаем:

Code:

DNSMasq    Enable
Local DNS  Enable


В окне Additional DNSMasq Options вписываем строчку:

Code:

dhcp-boot=pxelinux.0


Нажимаем кнопки Save, Apply Settings внизу. Можно проверить, что эта строчка попала в файл конфигурации:

Code:

cat /tmp/dnsmasq.conf


и перезапустить dnsmasq:

Code:

killall dnsmasq
dnsmasq --conf-file=/tmp/dnsmasq.conf


2. Ставим xinetd, если еще не установлен:

Code:

ipkg-opt install xinetd.


3. Ставим tftp сервер:

Code:

ipkg-opt install atftp


4. В файле /opt/etc/xinetd.d/atftp меняем пользователя на nobody. Его (nobody) нужно создать, если его еще нет.
Как это сделать см. Вики по Optware . Файл конфигурации atftp после этого выглядит так:

Code:

#
# atftp
#
service tftp
{
flags            = REUSE
socket_type      = dgram
protocol         = udp
instances        = 30
wait             = yes
user             = nobody
server           = /opt/sbin/atftpd
server_args      = /opt/tftpboot
log_on_success   = HOST PID
log_on_failure   = HOST
disable          = no
}


5. Чтобы xinetd стартовал при перезагрузке роутера, в стартовом скрипте должны присутствовать строчки наподобие следующих (см. снова Вики по Optware ):

Code:

if [ -d /opt/etc/init.d ]; then
for f in /opt/etc/init.d/S* ; do
[ -x $f ] && $f start
done
fi


6. Cоздаем директорию tftpboot для загрузки и поддиректорию pxelinux.cfg в ней:

Code:

mkdir -p /opt/tftpboot/pxelinux.cfg


7. Запускаем xinitd:

Code:

/opt/etc/init.d/S10xinitd


Проверить, что tftp сервер прослушивает свой порт, можно командой:

Code:

netstat -ln


В выводе должна быть строка, содержащая udp порт 69:

Code:

udp        0      0 0.0.0.0:69              0.0.0.0:*


8. Помещаем в директорию /opt/tftpboot/ файлы pxelinux.0 и memdisk (можно взять, например из пакета syslinux-xxxx-i386.rpm, найти в инете или загрузить по ссылке в конце).

Дальнейшие действия подгтавливают содержимое директории /opt/tftpboot и зависят от того, что именно требуется загружать. Как пример, рассмотрим загрузку Damn Small Linux и FreeDOS.

9. В директории /opt/tftpboot/pxelinux.cfg создаем текстовый файл с именем default:

Code:

DISPLAY boot.txt
DEFAULT dsl
LABEL dsl
kernel linux24
append ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=minirt24.gz nomce noapic quiet BOOT_IMAGE=knoppix frominitrd nopcmcia noagp noswap base
LABEL fdos
kernel memdisk
append initrd=freedos.img floppy

TIMEOUT 0
PROMPT 1


Для каждой метки LABEL (название метки произвольное) указываются две строчки kernel и append. (Опции append для DSL не умещаются здесь в одну строчку, но строка должна быть одна.)
10. В директорию /opt/tftpboot/ помещаем файл linux24 из iso-дистрибутива Damn Small Linux и
файл minirt24.gz, который изготавливается по рецепту. Многочисленные опции загрузки DSL также взяты оттуда. Файл freedos.img заимствовован из live-cd дистрибутива systemrescuecd, где можно найти много других образов дискет.

11. Составляем текстовый файл boot.txt, который будет выведен на экран в процессе загрузки:

Code:

* OS LOAD MENU *
- To load Damn Small Linux, press ENTER
- To load FreeDOS, type 'fdos' then ENTER


12. После того, как в директорию /opt/tftpboot/ помещены все файлы, дадим команды:

Code:

cd /opt/tftpboot
chown -R nobody: .



Теперь на компьютере, имеющем проводное подключение к роутеру, можно выбрать NETBOOT в BIOS setup.
При перезапуске DHCP сервер даст IP адрес и переадресует к TFTP серверу, откуда будет выполнена загрузка.
(Так как загружаемая ОС размещается в памяти клиента, ее должно быть достаточно, но обычно это не проблема.)

Содержимое директории /opt/tftpboot можно взять отсюда в готовом виде (~50M).

источник: www.dd-wrt.com

ссылка на материал: http://thin.kiev.ua/linux-/623-pxe-dd-wrt.html

Яндекс.Метрика