Загрузка INX по сети (PXE)

Преамбула

INX (расшифровывается как Is Not X), небольшой консольный, как ясно из названия, Live-дистрибутив Linux, основанный на Ubuntu. Обычно для разных целей я пользуюсь Puppy Slacko, но, как выяснилось, иметь live-дистрибутив без иксов, тоже полезно 🙂 В Слаке иксы на одной из машин безбожно заглючили. Всяческие DSL и тем более Linux For Scratch (читай самодельный дистрибутив) мне не подходили, потому что с ними может оказаться еще больше возни, или «из коробки» заглючит что-нибудь другое, или того хуже — сам чего-нибудь забудешь и недоложишь. А этот вроде выглядел вполне неплохо. В комплекте много всего, даже браузеры и консольные игры, есть mc, да и по заверениям разработчиков, требует он менее 100 Мб оперативной памяти, если загружен в обычном режиме. Поддерживается и режим to RAM, но тогда, как я понял, весь сжатый Squash FS образ системы грузится в память, и надо уже как минимум 200 Мб.
С интернетом, правда, небольшой баг. Надо вручную подправлять /etc/resolv.conf, иначе не будет DNS.

sudo mcedit /etc/resolv.conf
и меняем непонятный DNS, например на 8.8.8.8

Секунда ворчания

Вот уж некоторые, блин, линуксоиды профессиональные админы. Пишут инструкции, иногда упуская мелкие, но важные детали, которые, особенно если первый раз сталкиваешься, могут доставить неудобств. К вопросу, почему я стараюсь все подробно расписывать, во всяком случае, те грабли, на которые сам наступил.

Подготовка дистрибутива

1. Распаковываем или монтируем ISO-образ. (скачать с официального сайта)
2. Создаем каталог для дистрибутива там, где хранятся дистрибутивы PXE-сервера, в моем случае /home/pxe/tftp/distrib/linux/inx/
3. Копируем из подкаталога casper ISO-образа в созданный каталог файлы vmlinuz initrd.gz
4. Создаем в /home/pxe/tftp/distrib/linux/inx/ подкаталог casper
5. Копируем в /home/pxe/tftp/distrib/linux/inx/casper из каталога casper ISO-образа файл filesystem.squashfs
Этот файл обязательно должен лежать в подкаталоге casper каталога, который будет указан как nfsroot, иначе ядро его не найдет, и загрузка не получится.
Да, это была причина секунды ворчания. Целый час проковырялся. Об NFS ниже.

NFS-сервер

Для загрузки INX, кстати, как и других убунтовых дистрибутивов, по сети потребуется NFS-сервер. Тут я оставлю подробности, т.к. устанавливается он в разных Линуксах немного по-своему, а в Slackware, которая у меня, он шел «из коробки». Надо было только поставить права на исполнение двум скриптам /etc/rc.d/rc.nfsd и /etc/rc.d/rc.rpc.

После того, как сервер установлен, необходимо изменить файл /etc/exports чтобы открыть доступ к каталогу с дистрибутивом по NFS:

/home/pxe/tftp/distrib/linux/inx/[пробел или табуляция]*(ro,async,no_subtree_check,no_wdelay,insecure_locks,no_root_squash,insecure)

(пере)запускаем NFS-сервер.

Настройка запуска

Добавляем дистрибутив в меню PXE-сервера.

LABEL inx
menu label INX
kernel distrib/linux/inx/vmlinuz
append root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.0.120:/home/pxe/tftp/distrib/linux/inx/ username=inx hostname=inx userfullname="inx-user" initrd=distrib/linux/inx/initrd.gz vga=normal --

LABEL inxmem
menu label INX to RAM
kernel distrib/linux/inx/vmlinuz
append root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.0.120:/home/pxe/tftp/distrib/linux/inx/ username=inx hostname=inx userfullname="inx-user" initrd=distrib/linux/inx/initrd.gz vga=normal toram --

В более удобочитаемом виде на PasteBin

В качестве корневого каталога ОС (параметр root) указывается устройство /dev/nfs
boot=casper — указание использовать Live-режим и искать основную ОС в файле сжатой файловой системы.
netboot=nfs — указание произвести загрузку по сети, используя NFS
nfsroot=10.10.0.120:/home/pxe/tftp/distrib/linux/inx/ — указание адреса (замените 10.10.0.120 на свой) и каталога на сервере (указывается с корня сервера).
username, hostname и userfullname — соответственно, параметры для указания имени пользователя, имени компьютера и полного имени пользователя. Можно поставить свои, я оставил те, что были в конфиге isolinux из ISO-образа
initrd=distrib/linux/inx/initrd.gz — указание, где искать инициализационный RAM-диск (задается относительно корня TFTP-сервера, т.к. initrd грузится по TFTP).
vga=normal установка разрешения консоли (80×25 символов, ЕМНИС), или можно подсмотреть код оригинального в isolinux.cfg на диске, или, например, загрузившись с диска, почитать справку на этот счет.
toram — загружать сжатый образ файловой системы (filesystem.squashfs) целиком в память. Без этого параметра — обращаться к нему по необходимости. Не знаю точно, работает ли параметр с загрузкой по сети, но вроде с ним загрузка проходит медленнее. Значит, похоже, если параметр toram не указан, то filesystem.squashfs по необходимости подчитывается из сети, и такой режим требует меньше памяти.

Скриншоты


Меню сетевых программ


А вот и браузер

Ссылки

Netbooting Ubuntu Live CDs
Скачать готовый архив с Mega.NZ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *