Как можно установить текущие версии Ubuntu с помощью сетевой загрузки PXE и ​​автоматической установки?

Начиная с Ubuntu 20.10 (Groovy Gorilla), Canonical не предоставляет пакет netboot.tar.gz и ] mini.iso изображения больше нет. Раньше их можно было использовать для загрузки системы через PXE и ​​автоматического запуска установщика Debian через предварительную конфигурацию.

Как можно автоматически установить версии Ubuntu, начиная с 20.10, через загрузку PXE?

6
задан 13 November 2020 в 18:20

2 ответа

Введение

Вместо небольшого пакета, предназначенного для конкретной задачи, теперь необходимо использовать обычный полный образ ISO. Только установщик сервера Subiquity может быть автоматизирован, поэтому он должен использовать образ сервера даже для настольной установки.

Следующие шаги относятся к текущей версии 20.10 (Groovy Gorilla). Для будущих версий замените все вхождения 20.10 номером версии, которую вы хотите установить.

Предварительные требования

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

  • Рабочий TFTP-сервер и соответствующая конфигурация DHCP
  • Рабочий веб-сервер
  • Имеет пакеты pxelinux , syslinux-efi , syslinux-common установлен

Обслуживание образа ISO и конфигурация автоматической установки

  1. Загрузите полный образ живого сервера: wget https://releases.ubuntu.com/20.10/ubuntu-20.10-live-server-amd64.iso
  2. Скопируйте ISO-образ на свой веб-сервер.
  3. Создайте каталог на веб-сервере для хранения конфигурации автоустановки. Создайте в каталоге файлы метаданных и пользовательских данных .
  4. Запишите свою конфигурацию автоустановки в файл пользовательских данных , используя https://ubuntu.com/server/docs/install/autoinstall-reference в качестве справочного материала

Подготовка и обслуживание среды PXE

  1. Перейдите в каталог, который обслуживает ваш TFTP-сервер, по умолчанию / srv / tftp

  2. Скопируйте ISO-образ, загруженный в предыдущем разделе, в текущий каталог

  3. Создайте несколько каталогов, которые мы собираемся использовать в следующих шагах: mkdir -p iso_mount init boot / uefi boot / bios pxelinux.cfg

  4. Смонтируйте образ и извлеките ядро ​​и initrd:

      mount -o loop ubuntu-20.10-live-server-amd64.iso iso_mount /
      cp -p iso_mount / casper / vmlinuz init /
      cp -p iso_mount / casper / initrd init /
      umount iso_mount
     
  5. Подготовьте файлы PXELINUX для загрузки через UEFI, а также через BIOS:

      # UEFI
      cp -p /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi boot / uefi
      cp -p /usr/lib/syslinux/modules/efi64/ldlinux.e64 загрузка / uefi
      cp -p /usr/lib/syslinux/modules/efi64/libcom32.c32 загрузка / uefi
      cp -p /usr/lib/syslinux/modules/efi64/libutil.c32 загрузка / uefi
      cp -p /usr/lib/syslinux/modules/efi64/vesamenu.c32 загрузка / uefi
    
      # BIOS
      cp -p /usr/lib/PXELINUX/pxelinux.0 загрузка / биос
      cp -p /usr/lib/syslinux/modules/bios/ldlinux.c32 загрузка / биос
      cp -p /usr/lib/syslinux/modules/bios/libcom32.c32 загрузка / биос
      cp -p /usr/lib/syslinux/modules/bios/libutil.c32 загрузка / биос
      cp -p /usr/lib/syslinux/modules/bios/vesamenu.c32 загрузка / биос
     
  6. Настройте DHCP-сервер так, чтобы в качестве имени файла загрузки было указано boot / uefi / syslinux.efi для клиентов UEFI и boot / bios / pxelinux.0 для клиентов BIOS

  7. Создать конфигурация PXELINUX в ​​ pxelinux.cfg / default , аналогичная следующей. Замените URL-адреса в угловых скобках на URL-адреса вашего веб-сервера: Замените URL-адресом образа ISO и URL-адресом каталога, содержащего конфигурацию автоустановки (включая косую черту в конце!).

      ПО УМОЛЧАНИЮ vesamenu.c32
      ПОДСКАЗАТЬ 0
      NOESCAPE 1
    
      НАЗВАНИЕ МЕНЮ Установка системы PXE
    
      ЭТИКЕТКА Ubuntu 20.10
      ЭТИКЕТКА МЕНЮ ubuntu_20.10
      ЯДРО ../../init/vmlinuz
      INITRD ../../init/initrd
      ДОБАВИТЬ root = / dev / ram0 ramdisk_size = 1500000 ip = dhcp url =  autoinstall ds = nocloud-net; s = 
     
  8. Свяжите конфигурацию PXELINUX с каталогами boot для UEFI и BIOS:

      ln -s ../../pxelinux.cfg boot / uefi / pxelinux.cfg
      ln -s ../../pxelinux.cfg boot / bios / pxelinux.cfg
     

Заключение

Теперь у вас должна быть возможность загружать клиенты UEFI и BIOS через PXE в установщик Subiquity, который затем запустится автоматически в соответствии с вашей конфигурацией автоустановки.

Установка на рабочем столе

Если вы устанавливаете настольной системе необходимо установить пакет ubuntu-desktop .

Вам также необходимо исправить конфигурацию сети в установленной системе, поскольку Subiquity включает вместо этого systemd-networkd из NetworkManager , который обычно используется в настольных системах:

  1. Удалите сетевую конфигурацию, созданную Subiquity: rm /etc/netplan/00-installer-config.yaml[12224 sizes Создать файл / etc / netplan / 01-сеть-manager-all.yaml со следующим содержимым:

      # Разрешить NetworkManager управлять всеми устройствами в этой системе
      сеть:
      версия: 2
      рендерер: NetworkManager
     
  2. Запустите netplan apply или перезагрузите

4
ответ дан 3 January 2021 в 22:49

Что ж, я мог бы просто высказать свое мнение об этом ... так что поехали!

Введение

Ниже представлено полное руководство по PXE, от настройки сервера и всех необходимых служб до первой загрузки. Он также включает инструкции для Ubuntu 20.04.1 и 20.10 с автоматической установкой сервера Ubuntu, интерактивной установкой сервера и загрузкой рабочего стола в реальном времени (например, PXE-версия «Live CD»). Руководство было немного изменено, чтобы включить все параметры в одно загрузочное меню со всеми вариантами. Объясняются сценарии BIOS и UEFI.

Я использую компонент Syslinux под названием «lpxelinux» (первая строчная буква «L»), который также поддерживает загрузку ядра и инициализацию из HTTP. syslinux.efi уже имеет это. HTTP обеспечивает более быструю передачу, а также позволяет нам иметь немного другую организацию файлов, а также некоторые другие незначительные преимущества в будущем (для более крупных реализаций).

Это полное пошаговое руководство!

PXE Server - Ubuntu 20.04.1 LTS

Установите Ubuntu Server как обычно, начните с минимального количества установленных опций, но обычно я включаю сервер OpenSSH для удаленного администрирования. После установки обязательно обновите его полностью.

sudo su
apt-get update && apt-get upgrade -y

Инструменты и требования

Нам нужен TFTP-сервер, HTTP (S) -сервер и DHCP-сервер. Вы можете использовать другие серверы, если они у вас уже есть, но для простоты мы установим все на недавно установленный Ubuntu 20.04.1 LTS

Я выбрал самые популярные пакеты:

apt-get install tftpd-hpa apache2 isc-dhcp-server

Нам также нужно будет получить файлы syslinux. Поскольку руководство Marian уже показало, как получить их из пакетов apt, для полноты картины я пойду другим путем (вы можете комбинировать подходы по своему усмотрению). Мы получаем файлы из официального kernel.org

mkdir /root/pxe
mkdir /root/pxe/syslinux
cd /root/pxe/syslinux
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
tar -xf syslinux-6.03.tar.gz
cd syslinux-6.03/
ll

. Я использовал возможность создать для нас временный каталог в каталогах / root / pxe и syslinux под ним. Не стесняйтесь размещать эти файлы в любом месте, только не забудьте потом изменить команды.

SYSLINUX - LPXELINUX (files)

Затем мы копируем файлы, которые нам понадобятся. Не стесняйтесь копировать больше модулей, но их достаточно.

TFTPD уже имеет каталог, который мы будем использовать, в: / var / lib / tftpboot /

Скопируйте файлы туда, в отдельные каталоги (некоторые файлы имеют одинаковые имена, но предназначены для разных архитектур)

# files for 64bit uefi
mkdir /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/efi/syslinux.efi /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/menu.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/vesamenu.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/libutil/libutil.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/lib/libcom32.c32 /var/lib/tftpboot/efi64
cd /var/lib/tftpboot/efi64
ll

# files for 32bit bios
mkdir /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/core/lpxelinux.0 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/menu.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/vesamenu.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/libutil/libutil.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/lib/libcom32.c32 /var/lib/tftpboot/bios
cd /var/lib/tftpboot/bios
ll

DHCP-сервер

DHCP-сервер сам должен иметь статический IP-адрес. Итак, давайте сделаем это (если вы не сделали этого во время установки).

Отредактируйте конфигурацию сети (файл YAML):

nano /etc/netplan/00-installer-config.yaml

Содержание:

# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      addresses: [10.10.2.1/24]
      gateway4: 10.10.2.99
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
  version: 2

Примените конфигурацию:

netplan apply

Затем нам нужно ввести базовую конфигурацию для зон и пулов DHCP-сервера. Я делаю здесь дополнительную настройку, чтобы показать вам, что ваши будущие клиенты PXE могут находиться в подсетях, отличных от вашего сервера PXE. В моем случае сервер PXE (со всеми службами) находится по адресу 10.10.2.1 . У меня есть две подсети, подключенные через виртуальный маршрутизатор: 10.10.1.0/24 и 10.10.2.0/24

nano /etc/dhcp/dhcpd.conf

Содержание (просто пример):

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 10.10.1.0 netmask 255.255.255.0 {
 range 10.10.1.110 10.10.1.120;
 option routers 10.10.1.99;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

subnet 10.10.2.0 netmask 255.255.255.0 {
 range 10.10.2.110 10.10.2.120;
 option routers 10.10.2.99;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

# pxe client, uefi64
host uefi-client {
  hardware ethernet fa:fa:fa:00:0e:07;
  fixed-address 10.10.1.201;
  next-server 10.10.2.1;
  filename "efi64/syslinux.efi";
}

# pxe client, bios
host bios-client {
  hardware ethernet fa:fa:fa:00:0e:17;
  fixed-address 10.10.2.202;
  next-server 10.10.2.1;
  filename "bios/lpxelinux.0";
}

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

И вам нужно будет установить интерфейс, на котором DHCP deamon будет слушать, используйте ip a для проверки какой интерфейс вам подходит (у меня он на eth0 )

nano /etc/default/isc-dhcp-server

Содержание:

INTERFACESv4="eth0"
INTERFACESv6=""

Обязательно перезапустите службу:

systemctl restart isc-dhcp-server.service
systemctl status isc-dhcp-server.service

И включите автозапуск при перезагрузке сервера:

systemctl enable isc-dhcp-server.service

Если у вас есть опечатки или другие ошибки, такие как повторяющиеся IP-адреса или имена клиентов, deamon не сработает. Проверьте журналы, если статус красный.

tail -n 100 /var/log/syslog

ДОПОЛНИТЕЛЬНО - настройки маршрутизатора

Если у вас разные подсети, убедитесь, что вы добавили ip helper для DHCP, также часто настраивается как DHCP relay в большинстве роутеров. Просто укажите IP-адрес вашего PXE-сервера (если у вас есть службы, распределенные на нескольких серверах, укажите его на тот, который содержит службы DHCP).

TFTP-сервер

Нам нужно настроить базовые параметры для TFTP-сервера, но Только один вариант действительно требует изменения / проверки - путь к вашему корневому каталогу TFTP / var / lib / tftpboot

nano /etc/default/tftpd-hpa

Содержание:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/srv/tftp"
# /var/lib/tftpboot
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

Не забудьте также перезапустить службу.

systemctl restart tftpd-hpa

И включить ее автозапуск на перезагрузка сервера:

systemctl enable tftpd-hpa

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

Конфигурации SYSLINUX / (l) pxelinux

Нам нужны некоторые конфигурации для загрузки! Как минимум нам понадобится один файл default для каждой архитектуры. Мы помещаем их в каталог TFTP

mkdir /var/lib/tftpboot/efi64/pxelinux.cfg
mkdir /var/lib/tftpboot/bios/pxelinux.cfg
touch /var/lib/tftpboot/efi64/pxelinux.cfg/default
touch /var/lib/tftpboot/bios/pxelinux.cfg/default
nano /var/lib/tftpboot/efi64/pxelinux.cfg/default

. Содержимое файла:

DEFAULT menu.c32
 PROMPT 0
 
 MENU TITLE PXE Boot Menu
 MENU COLOR TABMSG    37;40 #80ffffff #00000000
 MENU COLOR HOTSEL    30;47 #40000000 #20ffffff
 MENU COLOR SEL       30;47 #40000000 #20ffffff
 MENU COLOR SCROLLBAR 30;47 #40000000 #20ffffff
 MENU WIDTH 80
 MENU MARGIN 22
 MENU PASSWORDMARGIN 26
 MENU ROWS 6
 MENU TABMSGROW 15
 MENU CMDLINEROW 15
 MENU ENDROW 24
 MENU PASSWORDROW 12
 MENU TIMEOUTROW 13
 MENU VSHIFT 6
 NOESCAPE 1
 ALLOWOPTIONS 0
 MENU AUTOBOOT Starting Local System in # seconds
 
 LABEL bootlocal
  MENU LABEL ^Local Boot
  MENU DEFAULT
  LOCALBOOT 0
 TIMEOUT 300
 TOTALTIMEOUT 3000
 
 LABEL UbuntuServer-20.04.1-auto
  MENU LABEL Ubuntu 20.04.1 Live Auto Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
   APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.04.1/
 
 LABEL UbuntuServer-20.04.1-interactive
  MENU LABEL Ubuntu 20.04.1 Live Interactive Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso
 
 LABEL UbuntuDesktop-20.04.1-live
  MENU LABEL Ubuntu 20.04.1 Desktop Live CD
  KERNEL http://10.10.2.1/ubuntu-desktop-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-desktop-20.04.1/initrd
  APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.04.1-desktop-amd64.iso
 
 LABEL UbuntuServer-20.10-auto
  MENU LABEL Ubuntu 20.10 Live Auto Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
   APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.10/
 
 LABEL UbuntuServer-20.10-interactive
  MENU LABEL Ubuntu 20.10 Live Interactive Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso
 
 LABEL UbuntuDesktop-20.10-live
  MENU LABEL Ubuntu 20.10 Desktop Live CD
  KERNEL http://10.10.2.1/ubuntu-desktop-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-desktop-20.10/initrd
  APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.10-desktop-amd64.iso

Обратите внимание, что я извлекаю как vmlinuz , так и initrd с HTTP-сервера. На том же сервере размещены ISO-образ и наши файлы автоустановки. Далее мы настроим этот веб-сервер, не беспокойтесь.

Поскольку по умолчанию выглядит одинаково как для BIOS, так и для UEFI, просто скопируйте его (или свяжите его, если хотите).

cp /var/lib/tftpboot/efi64/pxelinux.cfg/default /var/lib/tftpboot/bios/pxelinux.cfg/default

Если вы сохраните их отдельно вы можете изменить их параметры индивидуально. Меню также допускает связывание с помощью опции , включая . Но если вам нужны расширенные меню, прочтите документацию или еще несколько статей.

Веб-сервер - HTTP (S)

Я опишу простую настройку HTTP, но вы можете расширить ее до HTTPS позже. Рекомендуется, если ваша среда не закрыта и у вас есть пароли, установленные в файлах автоустановки. Для базовой лабораторной работы мы используем HTTP.

Нам нужно получить ISO. Поскольку я добавил в меню и сервер, и рабочий стол, я повторю это один раз для каждого ISO. Я знаю, что вопрос касается сервера, но дополнения вам не помешают. Если вам нужен только сервер или рабочий стол, просто пропустите другой.

Это для Ubuntu Server LTS 20.04.1

wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-live-server-amd64.iso -O /var/www/html/ubuntu-20.04.1-live-server-amd64.iso

Извлеките ядро ​​и initramfs (vmlinuz и initrd) в подпапку этого дистрибутива / варианта / версии. В многозагрузочном меню PXE вы можете иметь гораздо больше.

mount /var/www/html/ubuntu-20.04.1-live-server-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-server-20.04.1
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.04.1/
cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.04.1/
umount  /mnt

Это для Desktop LTS 20.04.1

wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso -O /var/www/html/ubuntu-20.04.1-desktop-amd64.iso

И снова извлеките, обратите внимание, что я добавил другое имя папки

mount /var/www/html/ubuntu-20.04.1-desktop-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-desktop-20.04.1
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.04.1/
cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.04.1/
umount  /mnt

Следующее для ] Ubuntu Server 20.10

wget https://releases.ubuntu.com/20.10/ubuntu-20.10-live-server-amd64.iso -O /var/www/html/ubuntu-20.10-live-server-amd64.iso

Извлеките файлы снова в отдельную папку

mount /var/www/html/ubuntu-20.10-live-server-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-server-20.10
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.10/
cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.10/
umount  /mnt

И, наконец, это для Ubuntu Desktop 20.10

wget https://releases.ubuntu.com/20.10/ubuntu-20.10-desktop-amd64.iso -O /var/www/html/ubuntu-20.10-desktop-amd64.iso

Извлеките файлы еще раз, в отдельную папку еще раз

mount /var/www/html/ubuntu-20.10-desktop-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-desktop-20.10
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.10/
cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.10/
umount  /mnt

Вот и все. Проверьте с помощью браузера, можете ли вы получить доступ к файлам в правильных местах. Мы использовали каталог Apache по умолчанию в Ubuntu для размещения всех файлов, поэтому никаких дополнительных действий не требуется.

Файл автоматической установки для серверов 20.04 и 20.10

В документации Ubuntu говорится, что вы можете просто установить один сервер, а затем найти образец файла с вашим выборки в файле / var / log / installer / autoinstall-user-data .

Для тестирования в лаборатории вы можете использовать этот файл в качестве шаблона, но он потребует некоторых изменений.

Чтобы иметь минимальную конфигурацию, вы можете использовать приведенный ниже код (снова код YAML, будьте осторожны при редактировании вручную):

nano /var/www/html/ubuntu-server-20.04.1/user-data

Содержание:

#cloud-config
autoinstall:
  version: 1
  apt:
    geoip: true
    preserve_sources_list: false
    primary:
    - arches: [amd64, i386]
      uri: http://hr.archive.ubuntu.com/ubuntu
    - arches: [default]
      uri: http://ports.ubuntu.com/ubuntu-ports
  identity: {hostname: pxe-client, password: $6$zN/uHJD1rEXD/ETf$q8CoBt3xXmBT37RslyWcpLT1za4RJR3QEtosggRKN5aZAAf6/mYbFEQO66AIPm965glBXB1DGd0Sf.oKi.Rfx/,
    realname: pxe, username: pxe}
  keyboard: {layout: hr, toggle: null, variant: ''}
  locale: en_US
  network:
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: no
          dhcp6: no
  ssh:
    allow-pw: true
    install-server: true

Примечание. Эта конфигурация настроит сервер с именем хоста pxe-client , а имя пользователя и пароль - pxe . На сервере не будет сети (DHCP отключен), поэтому он будет пропускать автоматическое обновление во время установки (для более быстрого тестирования). И в нем будет предустановлен сервер OpenSSH с паролем для входа. Обратите внимание на региональные особенности ( hr = Хорватия, поэтому у нас есть хорватское зеркало настройки для apt и хорватская раскладка клавиатуры), настройте их для вашей страны. См. Образец / var / log / installer / autoinstall-user-data в качестве шаблона для добавления ваших собственных настроек.

Ubuntu также требует файла метаданных . Он ДОЛЖЕН быть пустым. Поэтому просто создайте его в том же каталоге, в котором вы поместили файл пользовательских данных файл

touch /var/www/html/ubuntu-server-20.04.1/meta-data

. Чтобы увидеть больше параметров, см. Официальную документацию: https://ubuntu.com/server/docs/install/autoinstall-reference

Для Ubuntu 20.10 все то же самое, просто скопируйте код или создайте его по правильному пути:

nano /var/www/html/ubuntu-server-20.10/user-data
touch /var/www/html/ubuntu-server-20.10/meta-data

Используйте ту же выборку пользовательских данных, они взаимозаменяемы между 20.04 и 20.10. Также обратите внимание на двойную часть network: network: . В 20.04 была ошибка, требующая такой настройки, а в 20.10 ошибки нет, но поддерживается как функция обратной совместимости.

Проверьте свою files

Я бы порекомендовал вам убедиться, что у вас есть все файлы для всех вариантов:

ll /var/www/html/ubuntu-server-20.04.1/
ll /var/www/html/ubuntu-desktop-20.04.1/
ll /var/www/html/ubuntu-server-20.10/
ll /var/www/html/ubuntu-desktop-20.10/

В папках сервера должно быть 4 файла:

initrd
meta-data
user-data
vmlinuz

В папках рабочего стола должно быть 2 файла:

initrd
vmlinuz

Если у вас возникли проблемы с загрузкой, проверьте разрешения файлов, перечисленных выше. Если вы выполняете лабораторную работу, просто сделайте небезопасную вещь и chmod все это с полными разрешениями rw:

chmod -R 777 /var/www/html/*

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

Тестирование всего

В в моей лабораторной среде, а также при запуске новой производственной установки я сначала тестирую все это на виртуальных машинах. Я использую Hyper-V для тестирования (я знаю, убейте меня, тут вдруг всякие майкрософты :)). Для проверки загрузки UEFI вы создаете машину поколения 2 , а для загрузки BIOS вы должны использовать машину поколения 1 . Не забудьте добавить в виртуальную машину достаточно ОЗУ для хранения RAMDISK! Итак, если виртуальная машина тестирует сервер с 1,5 ГБ RAM-диска, тогда вам понадобится 2 ГБ RAM для виртуальной машины, а для настольного компьютера у нас есть 3 ГБ RAM-диск, поэтому лучше всего иметь 4 ГБ RAM, подключенные к виртуальной машине. Кроме того, не забудьте подключить сетевые интерфейсы к правильным сетям, как я уже упоминал ранее, у меня есть виртуальный маршрутизатор и несколько подсетей,так как мне нужно протестировать и подтвердить все это для развертывания в довольно больших и сложных средах.

В любом случае, если у вас есть виртуальная машина - просто загрузите ее! Если вы все сделали правильно, вы должны увидеть загрузку PXE, ВМ получает IP, а затем открыть меню. Через 30 секунд он загрузится с диска, но просто используйте клавиши со стрелками, чтобы выбрать параметр. В своих тестах я обнаружил, что UEFI загружается намного быстрее, поэтому я обычно тестировал с UEFI, а затем тестировал виртуальную машину BIOS, когда UEFI был там, где я хотел.

Подведение итогов

Только сейчас я признаю, что я не гуру Linux. Но за последние полтора месяца я потратил много времени на загрузку PXE и ​​настройку различных сред для него и вместе с ним. Это чистый стек Ubuntu в этом руководстве. Я планирую написать один, более ориентированный на Microsoft, но также основанный на SYSLINUX с мультизагрузочным меню и позволяющий загружать (разные) дистрибутивы Linux (в дополнение к Windows). Все это можно сделать с помощью любых инструментов DHCP / HTTP / TFTP, включая Microsoft Windows Server 2019, с парой установленных на нем ролей (DHCP, IIS, WDS). Точно так же вы можете использовать любой другой дистрибутив в качестве PXE-сервера для ваших установок Ubuntu. Вам также не нужно использовать Apache2, если вам удобнее, например. nginx в качестве вашего HTTP-сервера.

В конце я провел все свои тесты как с Ubuntu 20.04, так и с 20.10. Вся установка ТОЧНО ОДИНАКОВА для обеих версий. Просто измените имена файлов и загрузок ISO. Если вам просто нужен один из них, просто пропустите те части, которые вам не нужны.

Удачной охоты!

Редактировать: 2020-11-14 - добавлено все для Ubuntu 20.10, очищен некоторый код и добавлено еще значимые имена для папок, поскольку сейчас мы обрабатываем 4 различных загрузки ОС.

0
ответ дан 3 January 2021 в 22:49

Другие вопросы по тегам:

Похожие вопросы: