Страница 1 из 1

Сетевая загрузка / установка

Добавлено: 06 мар 2024, 09:03
ya
Сетевая загрузка программы установки живого сервера

Процесс сетевой загрузки программы установки живого сервера - по крайней мере
на системах, поддерживающих сетевую загрузку PXE, происходит следующим образом:

Устанавливаемая машина загружается и переходит к сетевой загрузке.
Сервер DHCP/bootp сообщает машине, где получить pxelinux.0.
Прошивка машины загружает pxelinux.0 по tftp и запускает его.
pxelinux.0 загружает конфигурацию, также по tftp, указывая ей
где загрузить ядро, ramdisk и командную строку ядра использовать.

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


Настройка DHCP/bootp и tftp

Существует несколько реализаций протоколов DHCP/bootp и tftp
доступных. В этом документе будет кратко описано, как настроить
dnsmasq для выполнения обеих этих ролей.

Установите dnsmasq с помощью "sudo apt install dnsmasq".

Запишите что-то вроде этого в /etc/dnsmasq.conf.d/pxe.conf:

Код: Выделить всё

interface=<ваш интерфейс>,lo
bind-interfaces
dhcp-range=<your interface>,192.168.0.100,192.168.0.200
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/srv/tftp
(Это предполагает несколько вещей о вашей сети; прочитайте man dnsmasq
или стандартный файл /etc/dnsmasq.conf для получения дополнительной информации).

перезапустите dnsmasq с помощью sudo systemctl restart dnsmasq.service.


Обслуживание PXELINUX и его настройка

Скачайте pxelinux.0 и установите его на место:

Код: Выделить всё

# wget http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/pxelinux.0
# mkdir -p /srv/tftp
# mv pxelinux.0 /srv/tftp/
Загрузите последнюю версию ISO живого сервера для того релиза, который вы хотите установить:

Код: Выделить всё

# wget http://releases.ubuntu.com/focal/ubuntu-20.04.1-live-server-amd64.iso
Смонтируйте его.

Код: Выделить всё

# mount ubuntu-20.04.1-live-server-amd64.iso /mnt
Скопируйте ядро и initrd из него в то место, откуда dnsmasq обслуживает tftp:

Код: Выделить всё

 # cp /mnt/casper/{vmlinuz,initrd} /srv/tftp/
Убедитесь, что установлен пакет syslinux-common, а затем:

Код: Выделить всё

 # cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/
Создайте файл /srv/tftp/pxelinux.cfg/default, содержащий:

Код: Выделить всё

DEFAULT install
LABEL install
  KERNEL vmlinuz
  INITRD initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://releases.ubuntu.com/focal/ubuntu-20.04.1-live-server-amd64.iso
Как вы можете видеть, это загружает ISO с серверов Ubuntu. Вы
возможно, захотите разместить его где-нибудь в своей инфраструктуре и
измените url на соответствующий.

Для релизов новее Ubuntu 22.10 вы можете указать URL с iso-url= вместо url=, что позволит избежать многократной загрузки ISO (так как cloud-init ищет url= и в командной строке ядра).

Эта конфигурация, очевидно, очень проста. У PXELINUX есть много, много
опций, и вы можете обратиться к его документации по адресу
https://wiki.syslinux.org/wiki/index.php?title=PXELINUX 6.2k для получения дополнительной информации.

https://discourse.ubuntu.com/t/netbooting-the-live-server-installer/14510