Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
— |
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// |