[Comm] LTSP-4 ALTMaster2.4

LVU =?iso-8859-1?q?lvu_=CE=C1_smap=2Egov=2Eua?=
Чт Окт 26 12:06:34 MSD 2006


Здравствуйте!

Aleksander N. Gorohovski wrote:

>>> А просто загрузкой с дискеты (или с Lilo / com-файла) нельзя обойтись.
>> В данном случае да. Либо загрузчиком с дискеты надо
>> указывать ядру, откуда ему брать nfsroot. Правда, bootrom
> 
> А как обычно можно это сделать?
> Вроде DHCP уже передаёт эту информацию.

Передает, но см. ниже.

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

> 1.
> Не важно с какого устройста произошла загрузка терминала-клиента
> (дискета, hdd, BOOT-ROM сетевой), он обращается на сервер к DHCP
> чтобы получить свой IP (и пр. сетевые настройки), а также адрес
> ядра и своей будущей корневой файловой системы.
> 2.
> Дальше, с этим адресом (корневой файловой системы) обращается
> к TFTP чтобы загрузить ядро и корневой файловой системы
> (или основную её часть) к себе в ОЗУ (или HDD, если есть)
> 3.
> Передать управление загруженному ядру.

Наверное, как-то можно сделать и так (насчет дискеты и hdd),
 но в случае с бутромом есть отличия:

1. Код бутрома, который сидит в бутром-микросхемке на
сетевой или в биосе, посылает широковещательный запрос: "а
нет ли тут кого-нибудь, кто сможет меня загрузить?"

2. DHCP-сервер, который знает, что он умеет кого-то грузить
(allow-booting, вроде, отвечает за это в dhcpd), отвечает:
да, грузись. Вот тебе твой IP-адрес, вот тебе адрес файла,
который надо грузить (вообще говоря, может лежать на другом
хосте). Этот файл в моей конфигурации - загрузчик pxelinux
(вроде может даже grub быть? не пробовал).

3. Бутром вытягивает загрузчик (по tftp), и передает
управление на _него_. Тот лезет (опять по tftp!) на сервер,
и пытается найти нужные настройки в pxelinux.cfg/... Порядок
посика - в мануале на pxelinux. Если нашел, то в настройках
указано ядро и параметры, которые надо ему передать.

4. Загрузчик вытягивает (и снова tftp!) ядро, и _возможно_
(не обязательно!) initrd (тоже указывается в конфиге
pxelinux). После чего передает управление на ядро, указав
ему соотв. параметры. В принципе, этого может быть
достаточно, если всю корневую FS упихнуть в initrd, но так
ее очень неудобно модифицировать. Поэтому

6. Ядру, среди прочего, могут быть переданы настройки
nfsroot'а в виде
root=/dev/nfs
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
, причем последнее автоматом прописывается, если pxelinux'у
дана опция IPAPPEND 1.

7. Ядро у меня монолитное, так что initrd ему не нужен. Оно
спокойненько вытягивает по NFS корневую систему по мере
надобности, запускает /sbin/init и живет долго и счастливо.

> Странно, но получается, что это можно решить только
> через PXE-загрузку.

Вообще, хороший источник информации -
http://syslinux.zytor.com/pxe.php. Там описано также, как
обойтись без PXE-загрузки :)

With best regards, LVU.



Подробная информация о списке рассылки community