LINUX.ORG.RU
ФорумAdmin

pxe boot


0

4

всем привет. Есть вопрос:

Есть готовый дистрибутив, который работает с флешки на бездисковой станции, дистрибутив Ubuntu есть необходимость сделать этот дистрибутив загружаемым через pxe, но с корневой файловой системой не на сети, а в RAM, что-то типа ramfs или той, которая используется на livecd.

В общем есть техзадание: нужно сделать бездисковую станцию на данном дистрибутиве, при этом станцию нужно сделать автономной, чтобы можно было загрузить и отключить от сети.

Из этого несколько вопросов:

1) Я так понимаю, что нужно сделать ядро и initrd, которые смогут работать с сетевой картой. Как это можно сделать?

2) как заставить эти ядро и initrd загрузить сжатый образ файловой системы с tftp? Видимо задать параметр загрузчику

3) можно ли запихнуть в initrd целиком всю корневую файловую систему вместе с иксами и нужным программным обеспечением? тогда, если я привильно понимаю, нужно указать какую-нибудь опцию загрузчику pxe типа: root=/dev/ramfs, а этот /dev/ramfs разворачивать из initrd?

надеюсь вопросы ясны, жду ваших предложений и коментариев спасибо.

★★★

Стандартное ядро и initrd, по идее, должны уметь всё это.

Есть два варианта (в Debian они работают точно):

1. Экспорт через nfs. Экономится память, но теряется автономность. В ubuntu я так делал несколько лет назад

2. Загрузка в память через http/ftp (а не tftp). Я так неоднократно делал с Debian, но точно утверждать, что это есть в Ubuntu, не буду. Но логика мне подсказывает, что должно быть. Для этого существует ключ fetch.

То есть, схема такая, через pxe грузится ядро и initrd с опцией fetch=http://192.168.1.1/filesystem.squashfs, и оттуда собирается ядро. Live образ для ubuntu, насколько я знаю, может собираться несколькими разными утилитами, не считая тех, что уже есть в Debian.

можно ли запихнуть в initrd

Можно, но жалко. Большие файлы через tftp лучше не передавать. Лучше загружать их отдельно.

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

оттуда собирается ядро

Прощу прощения за некоторые проблемы с концентрацией внимания. Я могу и не такое ляпнуть, задумавшись. :)

оттуда загружается образ

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

оттуда загружается образ

спасибо, что расшифровали, а то я в ступор впал))))

IvanR ★★★
() автор топика

http://xgu.ru/wiki/PXE здесь вроде вменяемо написано

еще посмотри https://github.com/skolot/ladoshka/tree/master/ladoshka-initramfs , набор скриптов для дебиановского initramfs для pxe boot

пример конфигурации загрузчика для этих скриптов, tmpfs вариант https://github.com/skolot/ladoshka/blob/master/ladoshka-initramfs/tftp.pxelin...

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

Рекомендации (это много где написано) и личные наблюдения. У меня на некоторых компьютерах файлы в несколько десятков мегабайт загружались нормально, а больше 100-200 - уже не загружались с разными причинами. Да и смотреть на лог wget приятнее и понятнее, чем на точки. :) И с распаковкой проблем меньше, не тратится время (если это cpio-образ, про другие не скажу).

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

tftp сервер какой? в каком режиме поднят, как listen или через inetd?

с atftpd таких проблем вообще не наблюдалось, да и tftpd-hpa тоже

Skolotovich ★★★
()
Ответ на: комментарий от feofil

dnsmasq

мдя, кухонный комбайн просто

В любом случае, нет особых причин грузить такой initrd, поскольку всё можно сделать штатными средствами.

инитрд нет, а вот тарбол с рутом да

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

все грузится, но выкидывает в busibox. при этом сеть нормально работает, все можно скачать руками и смонтировать, только не понял, как передать ядру опции, чтобы он сам получил ip адрес (кстати для работы с dhcp видимо надо включить в initrd dhclient), скачал образ squashfs и смонтировал его в качестве /

если кто знает, напишите пожалуйста, перерыл много чего и везде надо руками редактировать скрипт init, не очень хочется этого делать.

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Либо взять Debian Live, там всё работает точно, как у вас указано, и из коробки, или посмотреть, как это сделано в Ubuntu. Я, как только доберусь до образов с Ubuntu Live, посмотрю, как там у них...

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

все грузится, но выкидывает в busibox. при этом сеть нормально работает, все можно скачать руками и смонтировать, только не понял, как передать ядру опции, чтобы он сам получил ip адрес (кстати для работы с dhcp видимо надо включить в initrd dhclient), скачал образ squashfs и смонтировал его в качестве /

ну как бы надо подготовить образ с дистрибутивом и выложить его на tftp сервер

если кто знает, напишите пожалуйста, перерыл много чего и везде надо руками редактировать скрипт init, не очень хочется этого делать.

без редактирования никак, там делов то на полчаса, да еще и при готовом решении

Skolotovich ★★★
()
Ответ на: комментарий от kerneliq

Протокол tftp довольно медленный, ускорить загрузку можно например используя http.

у тебя тоже достоверные источники?

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

в общем заработало, стянул initrd из пакета «debian live» и все как следует заработало, вот такая строка в pxelinux.cfg/default

DEFAULT LINUX
DISPLAY boot.msg
TIMEOUT 30
PROMPT 1
LABEL LINUX
KERNEL vmlinuz-2.6.32-5-686 
INITRD initrd.img-2.6.32-5-686
append  boot=live fetch=ftp://192.168.209.1/rootfs.squashfs

boot=live это названия скрипта /scripts/live в initrd, без него не монтирует, можно было и руками, но не хочется))) всем спасибо.

IvanR ★★★
() автор топика

Посмотри, как сделано в RIPLinux (1-к-1, правда, не получится, там вроде как на слаке основано). У меня оно через PXE грузится на ура.

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

там похоже вся файловая система в initrd собрана, не гожий вариант, я уже убедился, одновременно с одного tftp сервера будет грузится порядка 40 станций, чем меньше initrd, тем лучше.

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

dnsmasq

УМВР.

Debian Wheezy x86-64, Core i5 2400, 8 Gb RAM, гигабитная сеть. Акронисы разные, мелкие утилиты, Parted Magic - все без проблем загружается.

ololoid ★★★★
()

нужно уменьшить размер системы до 100 mbyte ubuntu 12.04

нужный функционал:

иксы + автологон + запуск определенной программы под иксами + работа с локальной сетью и обновление ip через dhcp

все остальное не нужно, даже вход в консоль убрать, убрать все логи, чтобы система ничего не логировала.

в общем, если кто-то сталкивался, вопрос:

1) каков минимальный набор пакетов для вышеперечисленного функционала?

2) как заставить syslog замолчать? как вообще избавиться от логов?

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Проще взять emdebian. Правда, до 100 с иксами - не знаю, но до 200 в сжатом виде - собирается несложно.

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