Linux для сетевой загрузки

Установка Linux по сети.

Большинство современных компьютеров умеют загружаться по сети — BIOS компьютера находит загрузочный PXE (Preboot Execution Environment) сервер и загружает с него операционной систему. Установка по сети используется в двух случаях:

  • При установке Linux на ПК, на котором нет доступа к USB портам или приводам дисков. А может это старенький ноутбук, на котором есть только CD-привод.
  • При установке на целый парк компьютеров. Тут все просто: компьютеров много, а установщик один, поэтому установка по сети может значительно сократить время.

В этой статье рассмотрим настройку и использование PXE-сервера, предназначенного для загрузки программы установки Linux.

Подготовка загрузочного сервера.

Настройку загрузочного сервера рассматривать будем на примере Ubuntu. Поскольку установка по сети — довольно специфическая операция, и она нужна далеко не всем пользователям, то рассматривать установку на разных дистрибутивах пока не буду — ведь в другом дистрибутиве все можно сделать по аналогии.

Установка DHCP-сервера.

Первым делом надо установить DHCP-сервер — в Ubuntu это можно сделать следующей командой:

Первым делом отредактируем файл /etc/default/isc-dhcp-server , и добавим в него следующую строку, заменив имя интерфейса на ваше:

Затем открываем файл /etc/dhcp/dhcpd.conf и добавляем следующее

Об инструкции hardware следует сказать особо. По большому счету — она не нужна. Но если вы запускаете DHCP-сервер в реальной сети, где уже наверняка есть другой DHCP-сервер, а вам надо установить Linux всего на один компьютер, тогда замените символы xx в инструкции hardware MAC-адресом сетевого адаптера, установленного на компьютере, на который нужно поставить Linux.

С другой стороны, указать MAC-адреса потенциальных клиентов — это хорошая идея с точки зрения безопасности. Но если вы разворачивайте свой PXE-сервер только для установки операционной системы, нет никакой необходимости тратить время на определение MAC-адресов всех компьютеров сети. Вот, когда надо настроить полноценный PXE-сервер, может и нужно указать адреса клиентов, чтобы никто другой не смог использовать ваш сервер для загрузки. Тут уже решать вам…

Сохраните файл конфигурации DHCP-сервера и перезапустите сервер:

Настройка TFTP-сервера

Следующий шаг — настройка TFTP-сервера (Trivial File Transfer Protocol), на котором будет размещен образ операционной системы. В нашем случае — это установочный образ Ubuntu.

Читайте также:  Raid configuration on linux

Установить TFTP-сервер можно командой:

После установки сервера отредактируйте ваш файл /etc/inetd.conf . Убедитесь, что в нем есть следующая строка ( и что она раскомментирована).

Поскольку TFTP-сервер работает не автономно, а через сервер inetd, то для запуска TFTP-сервера нужно перезапустить сервер inetd.

В современных дистрибутивах вместо сервера inetd может использоваться суперсервер xinetd. Установить его можно следующей командой.

Потом надо будет отредактировать его конфигурационный файл /etc/xinetd.conf . Добавьте в него следующие строки.

service tftp < socket_type = dgram protocol = udp wait = yes user = tftp
server = /usr/sbin/in.tftpd server_args = -l /var/lib/tftpboot only_from = client.test.net >

Загрузка установочного образа.

Теперь нам нужно загрузить специальный установочный образ, рассчитанный на установку по сети. Для этого воспользуемся следующими командами

$ mkdir netboot
$ sudo lftp -c «open http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-i386/current/images/; mirror netboot/»

Первая команда создаст каталог netboot, а вторая — загрузит в нее установочный образ Ubuntu.

Почти все готово, и в каталог netboot загружены файлы, необходимые для установки Linux по сети. Но давайте вспомним наш файл /etc/inetd.conf (или xinetd.conf). Конфигурация TFTP предполагает, что все файлы, доступные по протоколу TFTP, должны быть расположены в каталоге /var/lib/tftpboot . Поэтому нам нужно скопировать туда файлы из каталога netboot.

Вот и все — ваш PXE-сервер готов к работе.

Настройка клиента.

Настраивать клиент, т.е. компьютер, на который вы будете устанавливать Linux, очень просто, достаточно зайти в его BIOS и установить загрузку по сети. Но загружаться по сети умеют не все компьютеры…

Что делать, если у вас старый компьютер, который не умеет загружаться по сети? Можно попытаться перепрошить BIOS — новая версия наверняка будет поддерживать загрузку по сети. Если перепрошивать BIOS нежелательно, или вы не можете найти подходящую версию BIOS именно для вашего компьютера, тогда вам будет проще изготовить специальную загрузочную флэшку, загрузиться с нее, а загрузчик уже сам найдет PXE-сервер и запустит процесс установки.

Заключение.

В этой статье немного рассмотрели, как организовать установку системы по сети. В большинстве крупных IT — компаний установка новых серверов осуществляется именно с помощью PXE-сервера. Это значительно упрощает работу. Не надо бегать от сервера к серверу с установщиком.

Источник

Начало.

Это придумано давным давно. Во всяком случае в статье, написанной в конце прошлого века (1998 год), идею сетевой загрузки автор называет старой. И это не удивительно, загрузка операционной системы по сети — мечта любого администратора. Ведь операционная система загруженная с сервера всегда будет «белой и пушистой», а изменения и обновления достаточно будет внести в загрузочный образ на сервере, вместо того, чтобы бегать с флешкой по всему парку компьютеров.

Читайте также:  Linux code on windows

Почему же такая хорошая идея не получила широкого распространения? Из-за сложности? Нет! Серверы для сетевой загрузки настраиваются довольно просто, как правило одним конфигурационным текстовым файлом, и, забегая вперёд, скажу, что в lanboot_server создание файлов конфигурации производится автоматически. На практике это сводится к «включил, и готово».

Что потребуется?.

Если локальная сеть не настроена — настройте её. После этого смело командуйте 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

Пример /etc/bootptab

- 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 адрес)
# Можно писать либо в столбик, либо в одну строку. # Настройки, общие для всех клиентов: .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 # и т.д.

2. Dhcpd

Пример /etc/dhcpd.conf

# 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

3. Tftp

Файловый сервер с упрощённым протоколом.

Пример /etc/exports

#Каталоги, разрешённые для tftp-загрузки и nfs-монтирования (no_root_squash - разрешён пользователь root) /var/lib/tftpboot 192.168.1.0/255.255.255.0(ro,no_root_squash,sync)

4. Inetd

У нас служит для запуска tftp-сервера и bootp-сервера. Но может запускать и другие службы. Файл конфигурации /etc/inetd.conf. Файл длинный, «на все случаи жизни». Поэтому привожк только нужные строки.

Читайте также:  Публичный ip адрес linux

Пример /etc/inetd.conf.

# Эта строка запускает 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

5. Xinetd

Функции те же, что и у inetd, но настройки сложнее. Установлен в Альтлинуксе.

Пример /etc/xinetd.conf

# # 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; >

Автоматическая настройка.

Для автоматической настройки переменные берутся из вывода стандартных linux-команд ifconfig и route. Поэтому их можно получить в любом Linux.

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 ' ')

Эти переменные вписаны в соответствующие места шаблонов конфигурационных файлов содержащихся в скрипте lanboot. При выполнении скрипта значения переменных подставляются в шаблон и сгенерированный таким образом файл конфигурации отправляется «по месту назначения». Это избавляет вас от рутинной работы и человеческих ошибок тоже. Единственное непременное условие: сеть должна быть настроена, иначе откуда брать значения переменных.

Скрипт lanboot так же копирует в TFTP directory файлы PuppyRus: vmlinuz, initrd.gz и pup*-200.sfs, необходимые для запуска. Файлы берутся из операционной системы, на которой запущен сервер, и, если эта система не PuppyRus, то их взять неоткуда. Поэтому на других Linux вышеперечисленные файлы необходимо поместить в /var/lib/tftpboot вручную (копированием).

Источник

Оцените статью
Adblock
detector