Pxe server linux debian

Загрузочный сервер — как загрузочная флешка, только сервер и по сети

Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

Вот такое меню встречает нашу команду инженеров при загрузке с PXE

Под катом вас ждет описание всех настроек, а так же небольшой сюрприз.

Начало

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

  1. TFTP сервер
  2. Samba
  3. Syslinux
  4. DHCP сервер
  5. HTTP сервер
  6. NFS сервер

приведем конфиг /etc/default/tftpd-hpa к виду

и поместим в /etc/tftpd.remap вот такую строку

UPD, дополнение от читателя Aleksey Shipilev

Повыдирал себе волос, пока отдебажил tftp.
Что на ThinkPad X201i, что в VirtualBox загрузка отваливалась с:
PXE-E32: TFTP Open timeout

Судя по всему, PXE агенты умудрились быть не полностью совместимыми, полечилось добавлением «-r blksize»:
TFTP_OPTIONS=»—secure -l -v -r blksize»

В конец файла /etc/samba/smb.conf добавим информацию о папке, где будут лежать инсталляционные файлы Windows.

Cоздаем папку, даем права и рестартим самбу

3. Syslinux
Скачиваем и заливаем в корень TFTP сервера все необходимое

Перейдем к настройке

Создадим конфиг основного меню и внесем начальные настройки

дефолтный конфиг переместим, создадим вместо него свой и перезапустим DHCP демон

5. HTTP
Пока просто установим, а зачем он нам понадобился будет понятно далее по тексту.

6. NFS
Ровно так же как и предыдущий пункт.

Если все сделано правильно, то при загрузке какой-либо машины с этого DHCP/PXE/TFTP сервера мы увидим следующее:

Научим сервер устанавливать различные ОС

Для установки нам будут доступны:

  1. Windows 2008R2/20012R2
  2. Debian 6/7
  3. Centos 6/7
  4. Ubuntu 12.04/12.10/14.04/14.10
  5. FreeBSD 9.2/10.1
  6. VMware ESXi 5.0/5.5

Структура меню, а следовательно и файл /srv/tftp/pxelinux.cfg/default притерпели изменения.

Листинг директории /srv/tftp/pxelinux.cfg/

Пути к папкам, где лежат установочные файлы для каждой из ОС, описаны относительно корня TFTP сервера, т.е. /srv/tftp .
Например для FreeBSD указано

следовательно в корне TFTP нужно создать папки freebsd/10/ , при этом обратите внимание на права

У всех должно быть право на чтение — это правило справедливо для всех файлов отдаваемых по TFTP.
И еще пара слов о установке FreeBSD.
Логин / пароль для входа в загружаемый iso: root / mfsroot(либо root без пароля).
Плюс пара примеров скриптов инсталяции FreeBSD на ZFS:
1. RAID6 из 4-х дисков.
2. RAID1 из 2-х дисков.

О том как подготовить Windows к установке с PXE мы писали ранее.
Различие с данной инсталляцией составляет лишь то, что здесь мы можем установить и Windows 2008R2 и Windows 2012R2(впрочем и Windows 7/8 тоже, нужно только подготовить файлы дистрибутива и winpe соответствующим образом). После загрузки winpe мы монтируем папку /srv/tftp/images/ , где содержаться файлы для установки ОС от Microsoft:

и запускаем нужный инсталятор.
Для автоматизации, через startnet.cmd, я набросал вот такое меню:

Теперь осталось разобраться с VMware.
Как вы заметили, конфиг для установки гипервизоров несколько отличается от остальных — именно тут нам и понадобится HTTP сервер.
В /var/www создадим папки vmw5.5, vmw5.0, а в папках сделаем симлинки на конфиг

О том как подготовить, например, Debian к установке с PXE написано здесь, но я на этом останавливаться не стану.

Добавим способность загружать различные дисковые утилиты и тест памяти

А я расскажу зачем мы ставили еще и NFS сервер.
Как видно из конфига загрузки SystemRescueCD, необходимые этому LiveCD файлы он подтягивает монтируя каталог по протоколу NFS. Сервер уже установлен, остается только отредактировать /etc/exports и перезапустить серверный демон.

Предполагаю у вас возник резонный вопрос — «Что тут делает LiveCD, если для них есть отдельный пункт?»
SystemRescueCD содержит массу полезных программ для работы с диском(например таких как GParted и testdisk) и поэтому он доступен и здесь и в LiveCD.

Читайте также:  Переменная среды linux python

LiveCD

в конец default добавилось

Для загрузки Trinity Rescue Kit CD и Plop Live в /etc/exports нужно добавить строки:

и отправить команду рестарта NFS демону.

Несколько слов о выбраных LiveCD.
Debian 7 LiveCD
Этот CD — сборка одного из наших инженеров, включающая в себя следующее:

Логин / пароль: root / ServerClub

HirensBootCD
Едва ли нуждается в представлении, содержит множество полезных утилит.
Подробнее можно ознакомиться здесь.
Грузится достаточно долго, не работает MiniXP и Linux. Остальные утилиты доступны для использования.

Trinity Rescue Kit CD
Со слов разработчиков, создан для восстановления ОС Windows.
Содержит утилиты для сброса паролей, антивирусы, программу для клонирования «компьютера» по сети(при чем на несколько компьютеров одновременно), а так же многое другое.
Подробнее здесь.

SystemRescueCD
Основан на Gentoo, предназначен для восстановления Linux систем.
Включает в себя большое количество всевозможных программ для администрирования, со списком можно ознакомится по ссылке.

Plop Live
LiveCD с тремя полноценными DE на выбор, а так же необходимым админским софтом.

Антивирусы

    Kaspersky Rescue Disk 10

  • AVG Rescue CD
  • В отдельном представлении оба антивируса не нуждаются.
    О Kaspersky Rescue disk подробнее можно прочесть здесь.
    С описанием AVG Recsue CD вас ознакомит данный url.

    Заключение, оно же и сюрприз

    На протяжении статьи я сознательно не давал объяснений где взять и как подготовить контент, потому как действия эти весьма тривиальны и только перегрузили бы текст.

    В качестве сюрприза предлагаю вам два варианта нашей сборки, доступные по ссылкам ниже:

    1. Архив со всем контентом /srv/tftp (ссылка на торрент файл, прямая ссылка)
    2. Архив всей ОС (ссылка на торрент файл, прямая ссылка)

    В первом случае необходимо самостоятельно подготовить сервер(в этом поможет глава «Начало» данного эпоса), разархивировать содержимое архива и внести корректировки сообразно реалиям вашей среды.

    Второй случай подразумевает установку на голое железо или виртуальную машину.
    Вкратце шаги по развертыванию сборки из полного архива ОС будут такими:
    1. Загрузиться с Linux LiveCD.
    2. Разметить диск и отформатировать разделы.
    3. Примонтировать «/» раздел.
    4. Распаковать архив.
    5. Установить загрузчик.
    6. Перезагрузиться.
    7. Настроить ОС в соответствии вашей сети и начать пользоваться.
    Логин / пароль: root / ServerClub.
    ВАЖНО: Если в вашей сети есть работающий dhcp сервер, то перед запуском нашей сборки отключите в ней автостарт dhcp.

    Источник

    Установка Debian удалённо: PXE + SSH

    Установить Debian Lenny на сервер, который находится на удалённой площадке.
    На площадке уже есть один Linux-based сервер, и есть инженер, который может подключить новый сервер к сети и включить.

    Загрузить образ netinstall по PXE и воспользоваться пакетом network-console для установки, используя ssh.

    В Интернете как обычно много обломков документации, я попытался собрать всё это воедино.

    На существующем сервере (для примера там будет установлен тот же Debian Lenny) нам потребуются dhcp3-server, tftpd-hpa и любой http-сервер.

    Опция next-server передаст PXE-загрузчику сетевой карты IP-адрес TFTP-сервера, а filename — имя файла с загрузчиком linux.

    TFTP в особой настройке не нуждается, поэтому дальше нам нужно настроить конфиги загрузчика pxelinux, они находятся в файле /var/lib/tftpboot/pxelinux.cfg/default. Он должен быть такого вида:

    Внимание, в этом конфиге важны отступы!
    При возникновении проблем, можно включить debug, добавив опцию DEBCONF_DEBUG=5

    Файлы pxelinux.0, linux и initrd.gz берутся из репозитория, там же можно найти pxelinux.0.

    Файл preseed.cfg должен быть таким:

    Во всех манах в него включают опции, связанные с настройками локали и сети, у меня это не заработало, возможно из-за того, что файл preseed.cfg подключается уже после настройки этих параметров, поэтому их нужно передать как опции initrd.

    Собственно дальше включаем новую железку, смотрим в логах dhcp IP-адрес, который получил хост, и подключаемся к нему по ssh с логином installer и паролем r00tme

    Источник

    Установка Debian 9 (Stretch) через PXE сервер сетевой загрузки

    В этом руководстве я расскажу как установить последнюю версию сервера Debian 9 через PXE-сервер с удаленных зеркал.

    Для настройки среды PXE мы будем использовать DHCP-сервер ISC-DHCP, а файлы Netboot Debian будут обслуживаться в локальной сети сервером TFTPD-HPA. Установка системы через PXE может увеличить скорость установки как в случае развертывания нескольких установок Debian в течение короткого периода времени так и в тех случаях, когда машины не оснащены устройством CD/DVD ROM.

    Требования

    • Debian 9 установленный на выделенной или на виртуальной машине.
    • Сетевой интерфейс с настроенным статичным IP адресом в том сегменте сети, который будет использоваться для динамического выделения IP-адреса и других связанных с ним настроек DHCP и PXE.
    • Локальный или удаленный аккаунт на сервере Debian с привилегиями root или прямой доступ к root аккаунту через консоль или SSH.
    • Интернет подключение необходимое для установки Debian по сети.
    Читайте также:  Error in windows sockets api

    Начальная конфигурация

    На первом этапе вам необходимо убедиться, что система Debian, которую мы будем использовать для установки новых серверов, имеет сетевой интерфейс, который будет использоваться для привязки к нему DHCP-сервера, настроенному со статическим IP-адресом.

    Чтобы вручную настроить карту сетевого интерфейса, откройте файл сетевых интерфейсов и отредактируйте его, используя ваш любимый текстовый редактор, например nano. Замените строки настроек IP, описанные ниже, в соответствии с вашими сетевыми настройками.

    Примерное содержимое файла:

    После правки файла сетевых настроек сохраните его, закройте и опустите сетевой интерфейс, затем снова его поднимите для применения настроек так как показано ниже. В результате, ваша сетевая карта названная (к примеру) ens33, получит настройки которые вы указали в файле.

    Для проверки того что новый IP адрес был применен для сетевого интерфейса можно выполнить следующую команду:

    Иногда настройки IP не применяются при простом перезапуске сети или отключении и включении сетевого интерфейса. В этом случае придётся перезапустить систему.

    Так же перед продолжением советую выполнить полное обновление системы, если вы по каким-либо причинам его ещё не сделали:

    Следующим шагом будет установка некоторых необходимых утилит, которые будут использоваться для дальнейшего управления вашей системой из командной строки.

    Установка и настройка сервера ISC-DHCP

    Следующий шаг — установка сервера DHCPи настройка PXE, для этого войдите в систему под root или под аккаунтом с привилегиями root и установите пакет isc-dhcp-server из репозитория Debian 9.

    Теперь сохраните резервную копию основного файла настроек сервера ISC-DHCP и измените содержимое конфигурационного файла на следующие настройки:

    Содержимое dhcpcd.conf:

    В приведенном выше файле конфигурации замените следующие строки соответственно.

    Для определения диапазона сети в котором DHCP будет выделять IP адресадля вашего сегмента сети

    option routers = IP вашего шлюза

    option broadcast-address = широковещательный адрес

    option subnet-mask = маска подсети

    option time-servers = IP адрес вашего сетевого сервера времени NTP

    option domain-name = доменное имя вашей сети

    option domain-name-servers = IP адреса ваших DNS серверов

    if option arch = 00:07 or option arch = 00:09 = если конечное устройство это машина с UEFI, загрузка пойдет с помощью файла bootnetx64.efi все другие не UEFI машины будут грузиться используя файла pxelinux.0. Обычно это машины со старым BIOS.

    next-server 192.168.1.102 = это IP адрес TFTP сервера где файлы pxelinux.0 или bootnetx64.efi в вашей сети. В нашем случае TFTP сервер расположен на той же самой машине.

    default-lease-time = время по умолчанию для выделенного IP адреса, перед тем как истечет срок его аренды.

    max-lease-time = максимальное время до срока истечения аренды IP адреса.

    Тут показано как статичный IP адрес объявляется DHCP сервером. Устройство с MAC адресом указанным в hardware ethernet всегда будет получать один и тот же IP адрес. Имя хоста указанное как nas — не имеет ззначения. вы можете указать любую произвольную строку.

    Теперь откройте файл isc-dhcp-server в директории /etc/default/ для правки, переместитесь в конец файла и добавьте вашу сетевую карту настроенную на статичный IP адрес в строку INTERFACESv4 так как показано в примере ниже. Убедитесь что вы добавили соответствующее имя вашего сетевого интерфейса. Используйте команды ip или ifconfig для вывода списка существующих сетевых интерфейсов и поиска правильного имени.

    Вывод файла isc-dhcp-server

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

    так же, выполните команду ss или netstat для вывода списка открытых сокетов и проверки что DHCP сервер работает.

    Если утилита netstat не установлена в системе вы можете установить её этой командой:

    Установка TFTP сервера

    Чтобы обслуживать файлы netboot, нужные клиентам для загрузки Debian удаленно через PXE и TFTP, вам также необходимо установить TFTP-сервер в вашей системе. Одним из наиболее распространенных и защищенных TFTP-серверов, доступных для локальных сетей, является сервер tftpd-hpa. Пакеты TFTP-HPA можно установить из официальных репозиториев, предлагаемых Debian 9. Выполните следующую команду, чтобы установить сервер tftpd-hpa в Debian 9.

    После того как пакет будет установлен, откройте файл конфигурации TFTPD-HPA и убедитесь что он имеет следующее содержимое.

    Вывод файла tftpd-hpa:

    Если строка TFTP_OPTIONS имеет содержимое как показано ниже, убедитесь, что вы удалили флаг —create, для защиты TFTP-сервера.

    Флаг create позволяет удалённым клиентам загружать файлы на tftp сервер. Этот параметр опасен, поскольку произвольные пользователи могут загружать или удалять файлы из корневого пути сервера TFTP.

    Читайте также:  Устанавливаем windows server update services

    Наконец, включите службу в вашей системе и запустите TFTP-сервер. проверьте статус демона tftp, выполнив следующую серию команд:

    Вы так же можете использовать команду netstat или ss для получения списка всех открытых сетевых сокетов которые слушает ваша система. 67 и 69 порты UDP должны быть открытыми в вашей сети для корректной работы DHCP и TFTP сервера. Вы можете открыть эти порты в вашем фаерволле следующей командой:

    Если вы используете правила iptables для управления политикой брандмауэра на своем сервере Debian, добавьте следующие правила, чтобы разрешить входящий трафик на портах 67 и 69 UDP, чтобы клиенты могли обращаться к серверам DHCP и TFTP.

    На следующем шаге мы установим утилиты загрузчика Syslinux, выполнив следующую команду.

    Развертывание файлов сетевой загрузки Debian 9

    Далее, идем на страницу Debian с файлами сетевой установки по адресу https://www.debian.org/distrib/netinst и качаем последнюю версию архива Debian netboot используя утилиту wget.

    После загрузки архива Debian netinstall распакуйте его содержимое напрямую в корень TFTP следующей командой.

    Так же скопируйте файл memdisk поставляемый пакетом Syslinux в корень TFTP и осмотрите содержимое директории TFTP. Директория /srv/tftp должна иметь содержимое как показано на скриншоте.

    Теперь, создайте символьную ссылку для загрузочного файла UEFI предоставляемого пакетом Debian netinstall в корень TFTP. И выполните длинный вывод списка файлов директории TFTP чтобы проверить что символьная ссылка правильно указывает на файл сетевой загрузки UEFI.

    Сервер PXE читает и запускает конфигурационные файлы расположенные в директории pxelinux.cfg из корня TFTPв таком порядке: GUID файлы, MAC файлы и файл по умолчанию. Директория pxelinux.cfg уже была нами создана и размещена с конфигурационным по умолчанию файлом PXE потому как ранее мы извлекли требуемые файлы из архива Debian netinstall в директорию/srv/tftp. Нет необходимости дополнительно изменять конфигурационный файл PXE по умолчанию из каталога pxelinux.cfg. Однако, который контролирует актуальное загрузочное меню для Debian называется txt.cfg и расположен в директории /srv/tftp/debian-installer/amd64/boot-screens/ . Дефолтный конфигурационный файл pxe из директории pxelinux.cfg это по сути символьная ссылка на файл txt.cfg. Чтобы изменить или добавить другие параметры, которые нужно передать ядру в процессе сетевой загрузки или добавить другие записи или загрузить другие дистрибутивы Linux через PXE-сервер, вы должны открыть файл конфигурации txt.cfg PXE по умолчанию с помощью следующей команды и сделать соответствующие изменения.

    txt.cfg:

    Стандартная установка:

    Если вы хотите использовать режим восстановления Debian через PXE, добавьте запись в этот файл с приведенными ниже настройками.

    Режим восстановления:

    Чтобы добавить записи, необходимые для загрузки Debian по сети в экспертном режиме или использовать режим автоматической установки, добавьте дополнительные настройки в файл txt.cfg, как показано в приведенных ниже примерах.

    Установка в режиме Expert:

    Установка в автоматическом режиме:

    Так же, как вы можете увидеть по содержимому, файлы образов ядра и initrd.gz, загружаемые в оперативную память клиента через сетевой протокол TFTP, после начального меню PXE, расположены в директории /srv/tftp/debian-installer/amd64/. Для дальнейшего обновления ядра и образа init вам достаточно будет заменить эти два файла на новые файлы поставляем Debian.

    Вот и всё! Теперь вы можете загружать клиентские машины по сети, используя все те же самые записи в меню, какие отображаются при загрузке Debian с DVD и запускать установку Debian 9 через PXE сервер.

    Для просмотра сообщений записываемых в журнал DHCP, которыми обмениваются клиенты и сервер в режиме реального времени, используйте команду tail для файла системного лога syslog.

    Записи журнала TFTP-сервера можно посмотреть в файле daemon.log. Нижеприведенные скриншоты иллюстрируют выдержку записей журнала, выданных серверами DHCP и TFTP.

    Можете так же выполнить следующую команду, чтобы посмотреть журнал генерируемый сервером TFTP.

    Чтобы посмотреть расширенную информацию об аренде, предоставленной сервером DHCP своим клиентам, отобразите содержимое файла dhcpd.leases с помощью команды cat, как показано в приведенном ниже примере.

    В итоге: у вас теперь есть в вашей сети PXE сервер. Вы можете запускать установку Debian по сети настроив ваши клиентские машины на загрузку по PXE. Вы можете запускать сетевую загрузку клиентских машин по нажатию специальных клавиш во время прохождения инициализации POST. Какие это клавиши, вам потребуется узнавать из документации производителя вашей материнской платы.

    Сам процесс установки Debian по сети очень простой и (за несколькими незначительными отличиями) в принципе такой же как установка с DVD или загрузочной USB flash.

    Источник

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