LINUX.ORG.RU
решено ФорумAdmin

Как получить все PXE параметры в Linux?


0

0

Здравствуйте, уважаемые администраторы! Прошу откликнуться сетевых гуру, а особенно гуру сетевой загрузки.

Как и с помощью каких программ в GNU/Linux возможно получить _все_ параметры, которые получает PXE-клиент во время загрузки (тот который вшит в ROM сетевухи или BIOS ROM)?

Сложность в том, что в моём случае в сети находятся 2 сервера: один - простой DHCP, который ничего не знает о сетевой загрузке; второй - PXE-сервер, который ничего не знает про раздачу IP-адресов, а отдаёт только имя файла загрузки и адрес сервера загрузки. Такие серверы в спецификации Intel про PXE зовутся DHCP server и proxy DHCP server, соответственно.

«Правильные» PXE-клиенты, «знающие» про proxy DHCP (gPXE, PXE ROM от Realtek или PXE ROM от Intel и т.д.) нормально загружаются в такой сети, получая все необходимые им параметры от обоих серверов. Мне же нужно получить эти же самые параметры, но в загруженном ядре Linux.

Дополнительная сложность: конфиг DHCP менять нельзя, а вот PXE-сервер в моей полной власти.

Спасибо за внимание!

2 сервера: один - простой DHCP, который ничего не знает о сетевой загрузке; второй - PXE-сервер, который ничего не знает про раздачу IP-адресов, а отдаёт только имя файла загрузки и адрес сервера загрузки.

Они должны знать друг о друге.
DHCP-сервер выдает адрес tftp-сервера и имя файла.
Этот файл загружает и PXE-клиент.
Дальше происходит загрузка и запуск терминального дистрибутива(грубо говоря).
Теперь вопрос - параметры чего тебе надо получить?
А еще лучше, что ты хочешь сделать.
Может оказаться что ты выбрал не тот путь и усложняешь себе жизнь :)

power ()

помню для старых прошивок pxe была бага, невозможно было загрузиться когда сервисы tftp и dhcp разделены

anonymous2 ★★★★★ ()

такое?

dmesg |grep Kernel
Kernel command line: rw root=/dev/ram0 initrd=initramfs.gz MOPTS=nolock,ro,wsize=2048,rsize=2048 BOOT_IMAGE=bzimage-2.6.17.3-ltsp-1 auto

madcore ★★★★★ ()

>Они должны знать друг о друге.

Нет, DHCP-сервер ничего не знает о proxy DHCP (PXE-сервере), и наоборот. Такая ситуация оговорена в спеках и работает на практике. Если интересно - рекомендую мою небольшую статью с картинками: http://kasatkin.org/files/mayor.pdf

Мне нужно допилить систему Clonezilla под локальную сеть университета. Менять конфиг DHCP-сервера я не могу, поэтому устраиваю всю сетевую загрузку на своём отдельном сервере. Во время сетевой загрузки Clonezilla пытается примонтировать корневую ФС с того сервера, который выдал ей IP-адрес, а мне надо, чтобы Clonezilla монтировала корень с моего сервера. В качестве DHCP-клиента в Clonezilla используется udhcpc из busybox, который не умеет получать параметры от двух серверов.

А в /proc/cmdline они не все?

Там оказываются те параметры, которые были указаны в меню загрузки pxelinux (например в /tftboot/pxelinux.cfg/default), но этот файл создаётся автоматически скриптами Clonezilla перед началом клонирования... Похоже единственный правильный способ передавать ядру нужные мне параметры - это допилить эти самые клонзилловские скрипты.

Спасибо! Буду рад ещё идеям!

kasatkin ()
Ответ на: комментарий от kasatkin

Re: Как получить все PXE параметры в Linux?

DHCP-сервер ничего не знает о proxy DHCP (PXE-сервере)

Хорошо. Давай так :)
Проблема сводится к отсутствию возможности изменить параметр root-path на dhcp-сервере.
К тому же, ты не можешь передавать ядру свои параметры :-/
Советую поступить следующим образом: забудь о всяких Clonezilla, udhcpc из busybox и прочих неканонiчных решениях.
Возьми любую детальную инструкцию по установке LTSP, например.
Описанную тобой задачу можно решить гораздо проще - использовать pxelinux menu + nfs + dd
Можешь оставить свой жабер - пообщаемся на тему загрузки по сети.

power ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.