ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

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

Если вы похожи на нас, у вас, вероятно, есть куча компьютеров. Все эти компьютеры, вероятно, работают под управлением Linux (верно?)

Если это так, то вы, вероятно, устали создавать флэш-накопители каждый раз, когда хотите установить операционную систему, подходить с ними к компьютеру, вставлять флэш-накопитель, пытаться найти ключ, который открывает меню загрузки для этой модели … и т.д. и т.п. вы знаете, как это происходит.

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

Мы собираемся показать вам метод с использованием DNS-сервера PiHole, но есть много других маршрутизаторов, которые также поддерживают это.

 

Что вам понадобится для этого:

  1. Либо виртуальную машину, либо отдельную машину, которая будет действовать как фактический сервер Netboot. В нашем случае мы просто использовали виртуальную машину Proxmox (большой сюрприз, да?) но здесь будет достаточно всего, что работает под управлением Ubuntu, с объемом памяти не менее 4 гигабайт.
  2. Сетевой DNS-сервер, который обрабатывает DHCP для вашей сети. Вам нужно будет создать резервирование DHCP для сервера netboot и сделать его статичным каждый раз, когда клиентский компьютер ищет его. Вы также можете выбрать свой маршрутизатор, поддерживающий netboot, но поскольку наш не поддерживает, мы сделаем это с помощью Pi-hole.
  3. Хорошее знание систем Linux и контейнеризации Docker
Эта статья для довольно продвинутых пользователей. Мы ожидаем, что вы заранее знаете команды Linux, сеть и Docker.

Шаг 1: Настройка сервера Netboot

Вы собираетесь запускать часть программного обеспечения под названием netboot.xyz в контейнере docker.

Итак, на вашей новой виртуальной машине Ubuntu или компьютере первое, что вам нужно будет сделать, это установить docker и docker compose. У нас есть замечательное руководство о том, как это сделать здесь.

За пределами вашего домашнего каталога вы захотите создать следующие каталоги в этой структуре:

mkdir netboot_xyz
cd netboot_xyz
mkdir assets 
mkdir config

 

Следующее, что вам понадобится, — это файл docker compose YAML. Ниже мы покажем вам, как выглядит наш, и вы сможете адаптировать его к вашим настройкам:

version: "2.1"
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:latest
    container_name: netbootxyz
    environment:
      - PUID=1000 #current user
      - PGID=1000 #current group
      - TZ=Etc/UTC
      # - MENU_VERSION=1.9.9 #optional, sets menus version, unset uses latest
      - PORT_RANGE=30000:30010 #optional
      - SUBFOLDER=/ #optional
    volumes:
      - /home/doc/netboot_xyz:/config
      - /home/doc/netboot_xyz:/assets #optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 8080:80 #optional
    restart: unless-stopped

 

Это показывает, что веб-сервер создается на порту 8080 для ваших ресурсов (в основном, ISO), а также сервер управления на порту 3000.

 

Обратите внимание на абсолютные пути в разделе тома. Убедитесь, что эта часть выполнена правильно, иначе она не запустится.

Теперь запустите контейнер с помощью:

docker compose up -d

 

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

docker ps

 

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

 

Перейдите на http://your.server.here:3000 и убедитесь, что у вас появилось меню netboot.xyz. Если оно загрузится, вы готовы настроить свой Pi-hole.

 

Шаг 2: Настройка Pi-hole для PXE

SSH на сервер вашего Pi-hole и выполните следующие действия:

 cd /etc/dnsmasq.d
 nano 07-pxe.conf

 

Вставьте следующее во вновь созданный файл. Ссылка на Linuxserver.io для этого, а также конфигурации для множества других маршрутизаторов.

hcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,netboot.xyz.kpxe,,192.168.1.YOURSERVER
dhcp-match=set:efi32,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi32-1,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-1,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64-1,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-1,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64-2,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-2,netboot.xyz.efi,,192.168.1.YOURSERVER

 

Сохраните и перезапустите Pi-hole.

 

Шаг 3: Тестирование установки

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

Вам также нужно убедиться, что вы выделили виртуальной машине достаточно оперативной памяти, или, если вы делаете это на Bare metal, убедитесь, что на компьютере есть не менее 4 гигабайт оперативной памяти. Мы обнаружили, что некоторые ISO-файлы отказываются загружаться, если в оперативной памяти не остается больше этого (Proxmox VE — один из них).

Это приведет к загрузке iPXE по умолчанию, где netboot.xyz должен перехватить его и вывести вас в меню загрузки:

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

 

В этом меню вам нужно перейти в раздел «Сетевые установки Linux» и выбрать дистрибутив, который вы хотите установить. Netboot.xyz возьмет это оттуда, загрузив необходимые файлы, и в конечном итоге приведет вас к установщику выбранной вами операционной системы. Если вы используете Bare metal, возможно, вам придется нажать клавишу меню загрузки и выбрать iPXE для вашего загрузочного устройства.

И просто так, больше никаких флэш-накопителей (в основном). Надеюсь, это вам поможет. Пожалуйста, дайте нам знать в комментариях, если вы попробуете это, и как у вас это получилось.

Exit mobile version