Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

setups:lanboot [2016/02/26 17:42] (текущий)
Строка 1: Строка 1:
 +====== Загрузка системы из сети   ======
 + 
 +====== Начало. ======
  
 +===== Предисловие. =====
 +
 +
 +Это придумано давным давно. Во всяком случае [[http://www.linuxfocus.org/Russian/September1998/article63.html|в статье]], написанной в конце прошлого века (1998 год), идею сетевой загрузки автор называет старой. И это не удивительно, загрузка операционной системы по сети - мечта любого администратора. Ведь операционная система загруженная с сервера всегда будет "белой и пушистой", а изменения и обновления достаточно будет внести в загрузочный образ на сервере, вместо того, чтобы бегать с флешкой по всему парку компьютеров.
 +
 +Почему же такая хорошая идея не получила широкого распространения? Из-за сложности? Нет! Серверы для сетевой загрузки настраиваются довольно просто, как правило одним конфигурационным текстовым файлом, и, забегая вперёд, скажу, что в lanboot_server создание файлов конфигурации производится автоматически. На практике это сводится к "включил, и готово".
 +===== Что потребуется?. =====
 +
 +  *Для PuppyRus2 Snow Dog потребуется скачать [[http://mirror.yandex.ru/puppyrus/puppyrus-2/sfs/lanboot_server-v6-4.sfs|lanboot_server-v*-4.sfs]] и подключить его. 
 +  *Если локальная сеть не настроена - настройте её. После этого смело командуйте lanboot start и клиенты могут загружаться. 
 +  *Для остановки соответственно lanboot stop. В ALTLinux и Ubuntu придётся поработать руками, доустановить необходимое и настроить. 
 +
 +Впрочем, не всё так страшно. Скрипт запуска lanboot (/usr/sbin/lanboot) должен работать и в других линуксах, например в Simply Linux (ALT) скрипт создал правильные файлы конфигурации и сервер запустился, только загружаемых файлов в "TFTP directory" (/var/lib/tftpboot) не оказалось, и это не удивительно, ведь откуда взяться файлам PuppyRus в ALTLinux.
 +====== Продолжим. ======
 +
 +===== Из чего собрано. =====
 +
 +
 +Для загрузки Linux по сети нам потребуется tftp-сервер (используется tftp-hpa-5.0), bootp или dhcp (я выбрал dhcp-4.1.1, хотя сначала использовал bootp) и inetd или xinetd (я выбрал inetd, он проще).
 +===== Как настраивается. =====
 +
 +==== 1. Bootp ====
 +
 +
 +  *Самый простой. 
 +  *Выдаёт IP привязанный к MAC-адресу клиента. 
 +  *Поэтому может применяться только в сетях с постоянным парком машин.
 +=== Пример /etc/bootptab ===
 +
 +
 +Используемые параметры:
 +<code>
 +- td -- TFTP directory (отсюда будут загружаться файлы)
 +- rp -- root path (путь к корню сервера)
 +- bf -- bootfile (загружаемый файл)
 +- sa -- boot server address (IP TFTP-сервера)
 +- sm -- subnet mask (маска подсети)
 +- gw -- gateways (шлюз)
 +- to -- time offset (seconds)
 +- ha -- hardware address (аппаратный, он же MAC адрес)
 +</code>
 +<code>
 +# Можно писать либо в столбик, либо в одну строку.
 +
 +# Настройки, общие для всех клиентов:
 +
 +.default:td=/var/lib/tftpboot:rp=/var/lib/tftpboot:bf=pxelinux.0:sa=192.168.1.2:sm=255.255.255.0:gw=192.168.1.1:to=auto:
 +
 +#или так
 +.default:\
 +td=/var/lib/tftpboot:\
 +rp=/var/lib/tftpboot:\
 +bf=pxelinux.0:\
 +sa=192.168.1.2:\
 +sm=255.255.255.0:\
 +gw=192.168.1.1:\
 +to=auto:
 +
 +# Настройки для клиентов в других подсетях:
 +#.subnet1 :sm=255.255.255.0:gw=192.168.0.1 :tc=.default:
 +
 +# Индивидуальные настройкм каждого клиента (примеры):
 +
 +#notick:tc=.default:ha=00140B016592:ip=192.168.1.4:
 +#sharick:tc=.default:ha=0123456789ab:ip=192.168.1.2
 +#bobick:tc=.default:ha=ba9876543210:ip=192.168.1.5
 +# и т.д.
 +</code>
 +==== 2. Dhcpd ====
 +
 +
 +Полноценный dhcp-сервер.
 +=== Пример /etc/dhcpd.conf ===
 +
 +<code>
 +# dhcpd.conf
 +#
 +# Use this to enble / disable dynamic dns updates globally.
 +ddns-update-style none;
 +
 +subnet 192.168.1.0 netmask 255.255.255.0 {
 +option routers 192.168.1.1;
 +option subnet-mask 255.255.255.0;
 +option broadcast-address 192.168.1.255;
 +range dynamic-bootp 192.168.1.10 192.168.1.200;
 +default-lease-time 21600;
 +max-lease-time 43200;
 +filename "pxelinux.0";
 +}
 +</code>
 +==== 3. Tftp ====
 +
 +
 +Файловый сервер с упрощённым протоколом.
 +=== Пример /etc/exports ===
 +
 +<code>
 +#Каталоги, разрешённые для tftp-загрузки и nfs-монтирования (no_root_squash - разрешён пользователь root)
 +
 +/var/lib/tftpboot 192.168.1.0/255.255.255.0(ro,no_root_squash,sync)
 +</code>
 +==== 4. Inetd ====
 +
 +
 +У нас служит для запуска tftp-сервера и bootp-сервера. Но может запускать и другие службы. Файл конфигурации /etc/inetd.conf. Файл длинный, "на все случаи жизни". Поэтому привожк только нужные строки.
 +=== Пример /etc/inetd.conf. ===
 +
 +<code>
 +# Эта строка запускает tftp-сервер
 +
 +tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftpboot
 +
 +# Эта строка запускает bootp-сервер
 +
 +bootps dgram udp wait root /usr/sbin/bootpd bootpd -i
 +</code>
 +==== 5. Xinetd ====
 +
 +
 +Функции те же, что и у inetd, но настройки сложнее. Установлен в Альтлинуксе.
 +=== Пример /etc/xinetd.conf ===
 +
 +<code>
 +#
 +# Simple configuration file for xinetd
 +#
 +# Some defaults, and include /etc/xinetd.d/
 +
 +defaults
 +{
 +log_type = SYSLOG authpriv info;
 +log_on_success = PID HOST DURATION;
 +log_on_failure = HOST;
 +instances = 100;
 +per_source = 5;
 +only_from = 127.0.0.1;
 +}
 +
 +includedir /etc/xinetd.d
 +
 +Для каждой запускаемой программы отдельный файл конфигурации кладётся в /etc/xinetd.d
 +Пример /etc/xinetd.d/tftp
 +
 +# default: off
 +# description: The tftp server serves files using the trivial file transfer \
 +# protocol. The tftp protocol is often used to boot diskless \
 +# workstations, download configuration files to network-aware printers, \
 +# and to start the installation process for some operating systems.
 +service tftp
 +{
 +disable = no;
 +socket_type = dgram;
 +protocol = udp;
 +wait = yes;
 +user = root;
 +server = /usr/sbin/in.tftpd;
 +server_args = -u tftp -s /var/lib/tftpboot;
 +per_source = 11
 +cps = 100 2
 +flags = IPv4
 +only_from = 192.168.1.0;
 +}
 +</code>
 +====== Автоматическая настройка. ======
 +
 +
 +Для автоматической настройки переменные берутся из вывода стандартных linux-команд ifconfig и route. Поэтому их можно получить в любом Linux.
 +<code>
 +serv=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -f 2 -d ':' | cut -f 1 -d ' ')
 +mask=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -f 4 -d ':')
 +gate=$(route | grep UG | cut -f 10 -d ' ')
 +subnet=$(route | grep " U " | cut -f1 -d ' ')
 +</code>
 +Эти переменные вписаны в соответствующие места шаблонов конфигурационных файлов содержащихся в скрипте lanboot. При выполнении скрипта значения переменных подставляются в шаблон и сгенерированный таким образом файл конфигурации отправляется "по месту назначения". Это избавляет вас от рутинной работы и человеческих ошибок тоже. Единственное непременное условие: сеть должна быть настроена, иначе откуда брать значения переменных.
 +
 +Скрипт lanboot так же копирует в TFTP directory файлы PuppyRus: vmlinuz, initrd.gz и pup*-200.sfs, необходимые для запуска. Файлы берутся из операционной системы, на которой запущен сервер, и, если эта система не PuppyRus, то их взять неоткуда. Поэтому на других Linux вышеперечисленные файлы необходимо поместить в /var/lib/tftpboot вручную (копированием).
 +
 +//Автор: DdShurick// 
Печать/экспорт