Настройка домашней лаборатории, с помощью которой вы можете загружать новые дистрибутивы Linux, не создавая снова и снова действующие USBB.
Если вы похожи на нас, у вас, вероятно, есть куча компьютеров. Все эти компьютеры, вероятно, работают под управлением Linux (верно?)
Если это так, то вы, вероятно, устали создавать флэш-накопители каждый раз, когда хотите установить операционную систему, подходить с ними к компьютеру, вставлять флэш-накопитель, пытаться найти ключ, который открывает меню загрузки для этой модели … и т.д. и т.п. вы знаете, как это происходит.
Либо это, либо вы просто гик вроде меня и хотите делать это ради удовольствия. Сейчас мы покажем вам способ загрузки любого дистрибутива Linux по сети с центрального сервера, чтобы вы могли установить его на любой компьютер в вашей сети.
Мы собираемся показать вам метод с использованием DNS-сервера PiHole, но есть много других маршрутизаторов, которые также поддерживают это.
Что вам понадобится для этого:
- Либо виртуальную машину, либо отдельную машину, которая будет действовать как фактический сервер Netboot. В нашем случае мы просто использовали виртуальную машину Proxmox (большой сюрприз, да?) но здесь будет достаточно всего, что работает под управлением Ubuntu, с объемом памяти не менее 4 гигабайт.
- Сетевой DNS-сервер, который обрабатывает DHCP для вашей сети. Вам нужно будет создать резервирование DHCP для сервера netboot и сделать его статичным каждый раз, когда клиентский компьютер ищет его. Вы также можете выбрать свой маршрутизатор, поддерживающий netboot, но поскольку наш не поддерживает, мы сделаем это с помощью Pi-hole.
- Хорошее знание систем 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
Перейдите на 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 должен перехватить его и вывести вас в меню загрузки:
В этом меню вам нужно перейти в раздел “Сетевые установки Linux” и выбрать дистрибутив, который вы хотите установить. Netboot.xyz возьмет это оттуда, загрузив необходимые файлы, и в конечном итоге приведет вас к установщику выбранной вами операционной системы. Если вы используете Bare metal, возможно, вам придется нажать клавишу меню загрузки и выбрать iPXE для вашего загрузочного устройства.
И просто так, больше никаких флэш-накопителей (в основном). Надеюсь, это вам поможет. Пожалуйста, дайте нам знать в комментариях, если вы попробуете это, и как у вас это получилось.