1

Тема: PXE загрузка по сети

Необходимо, чтобы можно было загрузить комп по сети, в идеале - из интернета.
Необходимо установить tftp сервер на роутер, настроить опции DNS, смонтировать ftp сервер в папку и все это дело подружить.
Но вот какие пакеты и какие настройки делать я не знаю. Может кто сталкивался, делал подобное?
Под dd-wrt такое есть (http://www.dd-wrt.com/phpBB2/viewtopic. … 765#668765). Сейчас пытаюсь сделать по аналогии..



2

Re: PXE загрузка по сети

AKokarev пишет:

Необходимо, чтобы можно было загрузить комп по сети, в идеале - из интернета.
...
Может кто сталкивался, делал подобное?

tftpd-hpa, которого пока нет плюс одна опция для dnsmasq.
В таком варианте у меня устанавливается Ubuntu, загружаясь по PXE  и выкачивая всё остальное из интернета.

Со всеми вытекающими...


3

Re: PXE загрузка по сети

ryzhov_al пишет:

tftpd-hpa, которого пока нет плюс одна опция для dnsmasq.
В таком варианте у меня устанавливается Ubuntu, загружаясь по PXE  и выкачивая всё остальное из интернета.

а встроенный в прошивку ftp не подойдет?
tftpd-hpa сам привинчивал? Расскажи как?

Как именно происходит загрузка? Ядро на флешке, а все остальное уже ядро грузит все остальное грузится из инета?
Я хочу целиком все файлы расположить в инете, смонтировать ftp ресурс в локальный диск\папку, а уже оттуда раздавать по локалке. Это надо для того, чтобы на нескольких роутерах один раз настроить, а потом уже обновлять только файлы в инете.



4

Re: PXE загрузка по сети

AKokarev пишет:

а встроенный в прошивку ftp не подойдет?

Вам не нужен ftp, вам нужен tftp-сервер.

AKokarev пишет:

Как именно происходит загрузка?

Компьютерам задаётся приоритет загрузки по PXE. При работе, DHCP-сервер на роутере отдаёт дополнительную опцию - какой файл необходимо загрузить и запустить (для Linux-систем часто pxelinux.0, для windows-дистрибутивов - netboot.n12), далее клиент по tftp выкачивает указанный файл и управление передаётся ему.

AKokarev пишет:

Ядро на флешке, а все остальное уже ядро грузит все остальное грузится из инета?

Нет, моей задачей была сетевая установка ОС: как Linux, так и Windows.

AKokarev пишет:

Я хочу целиком все файлы расположить в инете, смонтировать ftp ресурс в локальный диск\папку, а уже оттуда раздавать по локалке.

Примонтировать ftp-ресурс как расшаренный? Тогда ещё понадобится curlftpfs и ядерные модули FUSE. Пока забудьте:) После того как (и если только) tftp-сервер будет доступен, разберитесь с PXE-загрузкой. Разберётесь - двинемся дальше.

Со всеми вытекающими...


5

Re: PXE загрузка по сети

проблемы с dnsmasq  sad

сделал скрипт для перезапуска dnsmasq с опцией конф. файла (скопировал нужное из /bin/dns.sh)

#!/bin/sh

PID_FILE=/var/run/dnsmasq.pid

killall -9 dnsmasq 2> /dev/null
rm -f $PID_FILE 2> /dev/null

dnsmasq --conf-file=/media/DISK_A1/system/etc/config/dnsmasq.conf -u root --all-servers -k &

ps -ef | grep dnsmasq | grep -v grep | grep -v S99dnsmasq | awk '{ print $1}' > $PID_FILE

вот конфиг

dhcp-boot=/media/DISK_A1/boot/pxelinux.0 

при таком запуске выдает ошибку

dnsmasq: unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support) at

line 1 of /media/DISK_A1/system/etc/config/dnsmasq.conf

Я так понял, что стандартный dnsmasq не умеет работать с этой опцией? Возможно его надо отдельно установить или выбрать другой dns сервер?

Отредактировано AKokarev (2012-02-20 19:43:48)



6

Re: PXE загрузка по сети

AKokarev пишет:

вот конфиг

dhcp-boot=/media/DISK_A1/boot/pxelinux.0 

при таком запуске выдает ошибку
dnsmasq: unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support) at

line 1 of /media/DISK_A1/system/etc/config/dnsmasq.conf

Что-то куцый у вас конфиг получился. Необходимо найти существующий конфиг dnsmasq.conf и добавить в него необходимую опцию. Затем убить запущенный dnsmasq и перезапустить его с обновлённым конфигом. Вот пример рабочего конфигурационного файла (для другой прошивки!):

$ cat /etc/dnsmasq.conf
user=nobody
resolv-file=/tmp/resolv.conf
no-poll
interface=br0
no-negcache
cache-size=512
dhcp-leasefile=/tmp/dnsmasq.log
dhcp-range=lan,10.977.5,10.9.77.14,86400
read-ethers
dhcp-authoritative
dhcp-boot=pxelinux.0
AKokarev пишет:

Я так понял, что стандартный dnsmasq не умеет работать с этой опцией?

Нет, не значит.

AKokarev пишет:

Возможно его надо отдельно установить или выбрать другой dns сервер?

В данном случае dnsmasq нас интересует как DHCP-сервер. DNS-возможности dnsmasq ни при чём.

Отредактировано ryzhov_al (2012-02-20 20:22:02)

Со всеми вытекающими...


7

Re: PXE загрузка по сети

родного конфига не нашел.. возможно его и нет.. единственное упоминание о dnsmasq храниться в файле /etc/dns.sh откуда он запускается при старте роутера. От туда я и взял ключи запуска и добавил свой конфиг.
попробовал с твоим конфигом, ругается на

dhcp-leasefile=/tmp/dnsmasq.log
dhcp-range=lan,10.9.77.5,10.9.77.14,86400
dhcp-boot=pxelinux.0

возможно я что-то не так делаю? Может подключишься через teamviewer глянешь что я не так делаю?



8

Re: PXE загрузка по сети

AKokarev, заводская прошивка запускает dnsmasq без конфигурационного файла, параметры передаются в командной строке (см. /bin/dns.sh). И Вы попробуйте через ком строку все передавать.



9

Re: PXE загрузка по сети

Zyxmon, proboval. Problema v tom, chto on ne prinimaet opciyu dhcp-boot.
Zagruzil linux live cd - tam vse rabotaet, a na routere - net sad
zapuskayu tak
dnsmasq --dhcp-boot=linuxpxe.0
oshibka: dnsmasq: bad command line options: unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)

#Proshu prosheniya za translit, live cd ne podderzhivaet normalno russkiy yazik

Отредактировано AKokarev (2012-02-20 21:47:52)



10

Re: PXE загрузка по сети

AKokarev, возможно нужно будет собрать другой вариант dnsmasq. Заводской собран так

~$ dnsmasq -v
Dnsmasq version 2.55  Copyright (c) 2000-2010 Simon Kelley
Compile time options IPv6 GNU-getopt no-RTC no-DBus no-I18N no-DHCP no-TFTP


11

Re: PXE загрузка по сети

и как его собрать? Я так понимаю, если отдельным пакетом, то он будет конфликтовать с тем, что идет в прошивке, а значит надо отдельно собирать всю прошивку. => Лучше для этой цели вообще его не использовать, а установить другой dns, поддерживающий опцию dhcp-boot

ryzhov_al пишет:

плюс одна опция для dnsmasq.
В таком варианте у меня устанавливается Ubuntu, загружаясь по PXE  и выкачивая всё остальное из интернета.

ryzhov_al, а ты это все на кинетике проделывал?



12

Re: PXE загрузка по сети

AKokarev пишет:

Я так понимаю, если отдельным пакетом, то он будет конфликтовать с тем, что идет в прошивке, а значит надо отдельно собирать всю прошивку. => Лучше для этой цели вообще его не использовать, а установить другой dns, поддерживающий опцию dhcp-boot

Нет. Если в кинетике нет какого-то зверского watchdog'а, следящего за dnsmasq, то достаточно будет придушить встроенный dnsmasq и запустить свой.

AKokarev пишет:

ryzhov_al, а ты это все на кинетике проделывал?

Не на кинетике.

AKokarev пишет:

и как его собрать?

А это тема отдельной большой неторопливой беседы с тов. Zyxmon'ом.

Со всеми вытекающими...


13

Re: PXE загрузка по сети

ryzhov_al пишет:

Если в кинетике нет какого-то зверского watchdog'а, следящего за dnsmasq, то достаточно будет придушить встроенный dnsmasq и запустить свой.

Не все так просто. Скорее всего нужно будет придушить и udhcpd. Заводские скрипты кинетика будут перезапускать заводской dnsmasq при переконнектах и других событиях. Нужно разбираться в логике работы и скриптами в /bin.
А собрать dmsmasq c нужными опциями проблем нет. В заводской прошивке dnsmasq собирается с флагами "COPTS=-DNO_DHCP -DNO_TFTP -DNO_SCRIPT".



14

Re: PXE загрузка по сети

Наиболее правильным (при очень беглом чтении и поиске) мне видится следующее.
Путь Option 1 из http://wiki.openwrt.org/inbox/netboot
Т.е. отключаем через web конфигуратор встроенный dhcp сервер кинетика (udhcpd).
Собираем и ставим свой (в репозитории openwrt есть dhcp сервер от ics, но версии 3.1.0).
https://www.isc.org/software/dhcp (это похоже и есть dhcp3-server).
Придется настраивать dhcp сервер руками, а не через web конфигуратор.

AKokarev, подумайте - правильное ли это решение. Посмотрите, есть ли нужные опции в версии 3.1.0. Если решение выглядит правильным - соберу этот dhcp сервер.



15

Re: PXE загрузка по сети

Zyxmon, dhcp3-server опции поддерживает (по крайней мере в его мануале есть инфа про pxe boot).
Я так и предлагал сделать, это самый легкий путь (только я перепутал с днс, т.к. dnsmasq выполняют эту функцию вместо dhcpd). dnsmasq получается оставляем в покое, пусть работает как работает. Отключим dhcp и далее как говорилось выше.
Одно но, в вики предлагают установить openbsd-inetd. Я не совсем понял зачем он нужен, и вероятно он уже установлен?!
Собирите пакет пожалуйста, да будет эксперимент  smile



16

Re: PXE загрузка по сети

AKokarev, а Вы проверили, что версия 3.1.0 нужные опции поддерживает? Версия достаточно старая.
PS inetd - это способ запуска сервисов. Не обязателен. В репозитории есть альтернатива под названием xinetd. Но и xinetd по большому счету не обязателен.



17

Re: PXE загрузка по сети

Zyxmon пишет:

Скорее всего нужно будет придушить и udhcpd. Заводские скрипты кинетика будут перезапускать заводской dnsmasq при переконнектах и других событиях. Нужно разбираться в логике работы и скриптами в /bin.

udhcpd в кинетике полный или аплетом из busybox'а? Вот здесь чел указывает для udhcpd опцию для pxe-загрузки. Интересно, поддерживается ли эта опция в кинетике? Если да, то может и пересобирать ничего не надо.

Zyxmon пишет:

В заводской прошивке dnsmasq собирается с флагами "COPTS=-DNO_DHCP -DNO_TFTP -DNO_SCRIPT".

NO_DHCP? Значит, зря потратили время, беседуя о нём.

Со всеми вытекающими...


18

Re: PXE загрузка по сети

ryzhov_al пишет:

udhcpd в кинетике полный или аплетом из busybox'а?

Аплетом  sad



19

Re: PXE загрузка по сети

AKokarev, попробуйте dhcp серевер от ics
http://keenetic.zyxmon.org/files/dhcp-s … enetic.ipk

Конфиг должен искать в /media/DISK_A1/system/etc/dhcpd.conf
Интерфейс для сервера у кинетика br0.
Полной уверенности, что пакет рабочий, немного меньше, чем обычно.



20

Re: PXE загрузка по сети

пакет рабочий, достиг нужного результата - грузится по сети. Дхцп3-сервер использует еще один файл для настройки /var/lib/misc/dhcpd.leases Его приходится каждый раз по новой создавать перед запуском сервера, иначе ошиб
ка на отсутствующий файл. Лучше бы он читал его с флешки.



21

Re: PXE загрузка по сети

AKokarev пишет:

Лучше бы он читал его с флешки.

Это сделать просто. Сам он этот файл не создает? С Вас скрипт  запуска и пример конфигурации.



22

Re: PXE загрузка по сети

Поменял место для файла dhcpd.leases. Теперь он в папке /media/DISK_A1/system/var/lib/misc/
Перезалил пакет на старое место. Следует удалить старый и поставить заново новый.

По окончании проверок, хотелось бы иметь краткую инструкцию по настройке tftpd-hpa (запускается ли через xinetd, скрипт запуска), сервера dhcp и конфигурации для загрузки по сети.



23

Re: PXE загрузка по сети

ИНСТРУКЦИЯ

1)Установить opkg, если он еще не установлен
(см. http://forum.zyxmon.org/topic136-polnot … ya-2.html)

2)Настроить сетевое подключение с ручным IP
Для WinXP так:
"Пуск" - "Панель управления" - "Сетевые подключения"
правой кнопкой мыши на "Подключение по локальной сети" - Свойства
пролистываем список вниз, нажимаем дважды левой кнопкой мыши на "Протокол Интернета (TCP/IP)"
Выбираем точкой "Использовать следующий IP-адрес", заполняем:
IP: 192.168.1.10
Маска: 255.255.255.0
Шлюз: 192.168.1.1
DNS: 192.168.1.1
Второй DNS оставить пустым. Нажимаем два раза "Ok".
http://www.avazun.ru/storage1/share/12_54_21/U8ndrWobVMtugAYW3QZ_3.jpg

3)Отключить встроенный DHCP-сервер
Открываем в браузере страничку с настройками роутера. По-умолчанию так http://192.168.1.1/ логин admin, пароль пустой, либо admin.
На открывшейся странице переходим в меню "Домашняя сеть" - "Организация сети"
Меняем опцию "DHCP" на "Отключен".
http://www.avazun.ru/storage1/share/12_54_22/HqH9UD5pjl23CjF94Jk8_3.jpg

Подключаемся к роутеру по SSH (через программу Putty, см. п.1).
После авторизации вводим следующую комманду:

killall dhcpd

После этой комманды IP автоматически выдаваться не будут.

4)Установить и настроить dhcp3-server
Для установки выполняем команду:

opkg install http://keenetic.zyxmon.org/files/dhcp-server_3.1.0-3_keenetic.ipk

Лог установки:

/media/DISK_A1/system/root # opkg install http://keenetic.zyxmon.org/files/dhcp-server_3.1.0-3_keenetic.ipk
Downloading http://keenetic.zyxmon.org/files/dhcp-server_3.1.0-3_keenetic.ipk.
Installing dhcp-server (3.1.0-3) to root...
Configuring dhcp-server.
/media/DISK_A1/system/root #

Для настройки необходимо создать и отредактировать 3 файла:
/media/DISK_A1/system/etc/dhcpd.conf             - конфиг сервера dhcp
/media/DISK_A1/system/var/lib/misc/dhcpd.leases  - база выданных IP
/media/DISK_A1/system/etc/init.d/S97dhcpd        - скрипт автозапуска

Конфиг dhcpd.conf:

default-lease-time 86400;
max-lease-time 86400;
ddns-update-style ad-hoc;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1, 213.180.193.1, 8.8.8.8;

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;
filename "pxelinux.0";
}

Файл dhcpd.leases достаточно просто создать и оставить пустым.

Скрипт автозапуска S97dhcpd

#!/bin/sh
/media/DISK_A1/system/usr/sbin/dhcpd

P.S.:Если написать dhcpd без полного пути - тоже будет работать, но лучше ведь задать путь наверняка!

5)Установить и настроить tftp-сервер
Установим пакет:

opkg install http://keenetic.zyxmon.org/files/tftpd-hpa_0.48-3_keenetic.ipk

Лог установки:

/media/DISK_A1/system/root # opkg install http://keenetic.zyxmon.org/files/tftpd-hpa_0.48-3_keenetic.ipk
Downloading http://keenetic.zyxmon.org/files/tftpd-hpa_0.48-3_keenetic.ipk.
Installing tftpd-hpa (0.48-3) to root...
Configuring tftpd-hpa.
/media/DISK_A1/system/root #

Для настройки необходимо создать папку, для загрузочных файлов /media/DISK_A1/tftpboot
и скрипт автозапуска /media/DISK_A1/system/etc/init.d/S98tftpd-hpa
Создадим папку:

mkdir /media/DISK_A1/tftpboot

Скрипт автозапуска:

#!/bin/sh
tftpd-hpa -l -s /media/DISK_A1/tftpboot

Теперь можно перезагрузить роутер:

halt

После перезагрузки должны автоматически запуститься dhcp и tftp сервера. Если что-то пошло не так и dhcp не запустился, используйте статический IP, как указано в п.2.

6)Подготовить образ системы для загрузки
В папку tftpboot необходимо положить файл pxelinux.0 из пакета syslinux и прочие файлы необходимые для загрузки.
Пока толком не разбирался в этом, вот архив с рабочим образом dos.

Отредактировано AKokarev (2012-02-25 03:17:10)



24

Re: PXE загрузка по сети

AKokarev, скрипты запуска должны включать и остановку сервисов. Иначе usb носитель не извлечь, могут быть сложности с перепрошивкой. Поскольку tftpd-hpa нужен редко, то имеет смысл его запускать по-требованию, через xinetd. Инструкция по использованию xinetd есть в теме по Sane. Это сэкономит память.
Я могу выложить все в репу и без скриптов, но лучше бы с нормальными. В установщик добавлю тогда только создание файла /media/DISK_A1/system/var/lib/misc/dhcpd.leases, если его нет и файл конфигурации dhcpd.



25

Re: PXE загрузка по сети

Добавил dhcp-server от ics и tftd-hpa в репозиторий. Без скриптов запуска, если они будут - добавлю в пакеты.
При установке dhcp-server создается пустой файл /media/DISK_A1/system/var/lib/misc/dhcpd.leases, и устанавливается указанный выше файл /media/DISK_A1/system/etc/dhcpd.conf