Centaurus: Бездисковый клиент
Класс бездисковых клиентов обеспечивает следующий порядок работы:
- Сервер предоставляет образ LiveCD в качестве загрузочного образа.
- Клиенты загружают ОС по сети.
- Работа на клиентах не отличается от работы на LiveCD:
- можно использовать рабочие места с различным аппаратным профилем;
- ВНИМАНИЕ: суперпользователь (
root
) и пользователь по умолчанию (altlinux
) не имеют паролей.
Класс бездисковых клиентов в составе домена дополнительно предоставляет возможность работы пользователя домена с произвольного клиентского компьютера с подключением его домашнего каталога.
См. также статью «Сетевая загрузка и бездисковые клиенты в ALT Linux».
Порядок настройки
Сначала необходимо удостовериться, что на сервере определены внутренний и внешний сетевые интерфейсы, и включён режим трансляции внутренних адресов (NAT). Класс будет функционировать и без NAT, и вовсе без внешнего сетевого интерфейса, но доступ в Интернет, а во втором случае — и DNS придётся настраивать отдельно.
Для работы сервера сетевых загрузок на внутреннем интерфейсе должна быть поднята служба сетевых настроек DHCP. Обратите внимание, что параметры «домен поиска» и «DNS-сервер» на этом шаге вводятся временно, впоследствии их будет предоставлять Kerberos/LDAP домен.
Домен задаётся стандартным способом. Стоит иметь в виду, что для корректной работы класса DHCP необходимо настроить до задания домена. Обратите также внимание на успешную диагностику работы всех необходимых служб. При использовании систем, не подразумевающих включение в домен, рекомендуется останавливать эту службу. Включение LDAP «с нуля» сопровождается созданием множества файлов и перезапуском зависимых служб, поэтому этот шаг может потребовать времени.
Функциональность бездискового клиента обеспечивается загрузкой ALT Linux Centaurus 6.0 LiveCD в качестве «установочного» образа подсистемы сетевой установки. В случае использования дисков со множественной загрузкой (например, ALT Linux Centaurus 6.0 Install DVD), выбирается первая конфигурация. Другую конфигурацию можно временно указать во время загрузки клиента или в файле `/var/lib/tftpboot/pxelinux.cfg/default` на сервере (этот файл генерируется при каждом выборе загружаемого образа).
Образ на диске создаётся довольно долго.
Обратите внимание, что создания образа недостаточно, его необходимо явно отметить.
Запуск клиента
Для запуска клиента достаточно включить в BIOS на постоянной основе сетевую загрузку (по протоколу PXE). Для того, чтобы сетевая загрузка работала, необходимо наличие на сетевой карте BootROM (это касается также и встроенных сетевых карт; кроме того, на них BootROM иногда включается отдельно настройкой BIOS). В некоторых случаях сетевую загрузку можно произвести с внешнего носителя (см. проект http://etherboot.org/ и конкретно http://www.rom-o-matic.net/ ).
Модернизация загружаемого образа
Стандартный загруженный образ LiveCD обладает некоторыми свойствами, которые нужны для LiveCD, но плохо применимы при массовой загрузке, например, учебного компьютерного класса. Пересборка образа — дело непростое, поэтому Live-дистрибутивы Шестой платформы имеют дополнительный механизм модернизации системы, загружаемой на клиенте. Опишем этот механизм подробнее.
Изначально загрузка системы по сети устроена так:
- Загрузка по протоколу PXE (DHCP+tftp) вторичного загрузчика
pxelinux
. - Загрузка вторичным загрузчиком по протоколу tftp автоматически изготовленного конфигурационного файла
/var/lib/tftpboot/pxelinux.cfg/default
, после чего — указанных в этом файле ядра и стартового виртуального диска. - Стартовый виртуальный диск Live-версии содержит подсистему
propagator
, которая, анализируя параметры, переданные ядру, определяет тип дальнейшей загрузки. - В частности, при загрузке Live-версии происходит следующее:
- монтируется по NFS каталог
/srv/public/netinst/
; - из этого каталога монтируется как loop-device файл
current
(это символьная ссылка на выбранный ISO-образ); - из смонтированного таким образом каталога (
/image
), в свою очередь, монтируется как loop-device Squashfs-образ, определяемый параметром ядраstagename
; - полученный каталог (
/.ro
) содержит всю файловую систему клиента, доступную, разумеется, только для чтения. Для обеспечения возможности записи этот каталог монтируется «внахлёст» при помощи AUFS с пустым каталогом/.rw
. Результат становится корневым каталогом клиента.
- монтируется по NFS каталог
Однако в AUFS между «нижним» каталогом /.ro
и «верхним» /.rw
можно вставить произвольное число дополнительных readonly-каталогов, перекрывающих содержимое /.ro
. Для этого при загрузке проверяется наличие ISO-образов в каталоге /srv/public/netinst/overlays-live
на сервере, и каждый такой образ в алфавитно-цифровом порядке монтируется в виде каталога и включается в AUFS поверх /.ro
.
Начиная с P7 поддерживается профилирование заплаток. Если задать параметр загрузки ядра profile=что-то
, то монтироваться будут только образы из подкаталога /srv/public/netinst/overlays-live/что-то/
.
Создание образа-«заплатки»
Например, для эксплуатации компьютерного класса необходимо модифицировать следующее:
- Пароль root и altlinux. Пароль root по умолчанию пустой, это нехорошо, если на машине есть ещё какая-то операционка. Достаточно в терминале сказать
su -
(пароль пустой), а затем выполнить командуpasswd
. Если беспарольный пользовательaltlinux
не нужен, его можно удалить командойuserdel -r altlinux
. - Установка и удаление пакетов. Можно поставить какое угодно количество пакетов, если файловая система
/.rw
, располагающаяся в памяти, предоставляет достаточно места. Если нет, можно попробовать сделать это в несколько этапов (создать последовательно несколько заплаток). - Настройки по месту. Всяческие другие системные настройки (включение swap, если найден раздел с особой меткой, включение и предварительная настройка служб, например, ssh, и т. п.) производятся обычным порядком, в терминале от root. Например, для установки пакетов необходимо отредактировать настройку APT (скажем, раскомментировать две строки в
/etc/apt/sources.list.d/alt.list
и запуститьapt-get update
). - Настройка рабочего стола и домашнего каталога пользователя по умолчанию. Пользователь
altlinux
по умолчанию не имеет пароля, а если домен не используется, происходит автоматический вход в систему. Настройки, сделанные для этого пользователя, также можно сохранить в «заплатке» (предварительно следует завершить сеанс работы пользователя: некоторые настройки записываются на диск только после этого).
Все изменения аккумулируются в каталоге /.rw
. Для создания заплатки достаточно изготовить из этого каталога ISO-образ и положить его на сервер в каталог /srv/public/netinst/overlays-live
:
[root@localhost ~]# sync; mkisofs -q -R -o- /.rw | ssh user@ldap 'cat > patch0.iso'
Обратите внимание, что файл-«заплатка» получается довольно большим, и его небезопасно хранить в файловой системе клиента (может закончиться память), поэтому на сервере заводится пользователь (в примере «user»), в домашний каталог которого временно помещается файл. При включённом домене можно использовать имя сервера ldap
, в противном случае — его IP-адрес.
Размер заплатки получается большим из-за dist-upgrade
: перестраиваются базы пакетов RPM и APT. Поскольку при следующей модификации, скорее всего, придётся заново делать dist-upgrade, можно исключить из ISO каталоги с кешами и списками файлов, а также файлами, которые создаются в процессе работы системы.
[root@localhost ~]# sync; mkisofs -q -R -m /.rw/var/lib/rpm -m /.rw/var/lib/apt -m /.rw/var/cache/apt -m /.rw/var/run -m /.rw/var/log -o- /.rw | ssh user@ldap 'cat > patch0.iso'
На сервере «заплатка» перемещается в каталог/srv/public/netinst/overlays-live
:
[root@server ~]# mv ~user/patch0.iso /srv/public/netinst/overlays-live/
TODO
Автоматизация кастомизации
Имеется четыре вида доработки:
- /etc — настройка системы (/etc/apt/sources.list.d, passwd root и т. п.)
- /usr/local и /opt — файлы, скопированные вручную
- /home — пользовательские настройки (в первую очередь /home/altlinux)
- установка и удаление пакетов
Ещё есть /var/lib (в котором хранятся настройки чрутованных служб), /var/cache (содержимое которого, вопреки FHS не всегда можно удалять) и ещё что-то, но это всё для LiveCD несущественно.
Предлагается следующий workflow:
- Подготовка "стартовой" заплатки на /etc
- Настройка apt, задание пароля рута и т. п.
- Подготовка "системной" заплатки на /
- Установка и удаление пакетов
- Сохранение списка всех пакетов
- Подготовка "настроечной" заплатки на /etc
- Ручная настройка дополнительных пакетов
- Подготовка "пользовательской" заплатки
- Настройка рабочего стола, приложений и т. п.
- Раскладывание мусора в /usr/local и /opt
Процесс отладки кастомной прошивки с большим числом накопившихся заплаток:
- Пользовательские заплатки не зависят от системных. Более того, их имеет смысл делать не кумулятивными (из /.rw), а абсолютными (складывать в ISO-образ непосредственно /home, /usr/local и /opt
- Системные заплатки можно слить в одну, загрузившись с одной только стартовой заплаткой и установив/удалив соответствующие пакеты (сравнив со списком, добытым из последней системной заплатки). Внимание! Если сразу ставить слишком много пакетов, они могут не влезть в TMPFS.
- Настроечные заплатки придётся рассматривать на предмет того, что было изменено, и тоже объединять в одну.
Другие задачи и направления модернизации класса бездисковых клиентов
- Кастомизация initrd (выполнение в /sbin/init-bottom сценария из только что смонтированного каталога)
- Монтирование заплаток в формате, отличном от ISO (в первую очередь удобных для ручной правки, добавления и удаления файлов)
- Многосистемная загрузка с помощью vesamenu из syslinux
- Использование под swap разделов или файлов на локальных дисках
- Кеширование NFS с помощью cachefilesd
[Category:LiveCD]]