Развертывание Ubuntu 22.04 с PXEBoot с использованием Syslinux

Развертывание Ubuntu 22.04 с PXEBoot с использованием Syslinux

У меня есть работающий DHCP, ftp и tftp сервер с каталогом tftpboot, в котором машины, настроенные в PXEboot, без проблем загружают syslinux из сети.

Я пытаюсь установить Ubuntu 22.04 в PXE через SYSLINUX.

Я следил за этимпочтадля достижения этой цели.

В этом посте говорится, что вам нужно извлечь файлы ядра vmlinuz и initrd из ISO-образа установщика сервера ubuntu 22.04, поместить его в каталог tftpboot. Затем загрузить ISO из файла конфигурации default, расположенного в каталоге pxelinux.cfg. Ниже приведено неисчерпывающее схематическое изображение каталога tftpboot, связанного с jammy (опуская остальные файлы, традиционно используемые syslinux)

└── tftpboot    
    ├── pxelinux.0
    ├── jammy
    │   ├── initrd
    │   └── vmlinuz
    ├── pxelinux.cfg
    │   └── default
    └── syslinux (All the Syslinux boot files)
        └── bios
            ├── ldlinux.c32
            ├── libutil.c32
            └── menu.c32

Вот каталог ftp, который у меня есть

└── ftp   
    └── Ubuntu-22.04
        ├── ubuntu-22.04.1-live-server-amd64.iso
        └── Kickstart
            ├── user-data
            └── meta-data

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

#cloud-config
autoinstall:
  identity:
    hostname: jammy-minimal
    password: $6$gnqbMUzHhQzpDEw.$.cCNVVDsDfj5Feebh.5O4VbOmib7tyjmeI2ZsFP7VK2kWwgJFbfjvXo3chpeAqCgXWVIW9oNQ/Ag85PR0IsKD/
    username: ubuntu
  version: 1

Вот файл конфигурации по умолчанию, который я настроил.

default menu.c32
menu title Ubuntu installer

LABEL ubuntu
    MENU LABEL Install Ubuntu Jammy Server
    MENU DEFAULT
    KERNEL jammy/vmlinuz
    IPAPPEND 1
    APPEND initrd=jammy/initrd ip=dhcp url=ftp://172.16.0.4/Ubuntu-22.04/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=ftp://172.16.0.4/Ubuntu-22.04/Kickstart

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

Ядро и ISO загружаются правильно и запускают процесс установки вплоть до меню установки, но проблема возникает, когда необходимо загрузить файл cloud-config (user-data) для запуска автоматической установки. Он не может его найти, хотя я указал его в файле по умолчанию. Вот что происходит на изображении ниже.

Загрузка ISO

Loading the ISO

Ожидание вечности cloud-init

Waiting forever cloud-init

Затем запустите меню в конечном итоге

Then launch the menu ultimately

Видимо, файл пользовательских данных игнорируется, если я загружаю его из файла syslinux по умолчанию. Как это возможно? Мне нужно загрузить его откуда-то, кроме файла по умолчанию? Я уже думал о том, чтобы попробовать загрузить его из измененного ISO. Будет ли это хорошей альтернативой? Спасибо

решение1

Ожидание вечности cloud-init

Ты проверилфайлы журнала cloud-init? Что ты видел?

Я подозреваю, что причина того, что cloud-init ждет вечно, заключается в том, чтовы не предоставляете допустимую строку NoCloudNet. Источник данных NoCloud от Cloud-init не поддерживает поддержку ftp. Отдокументы:

При ds=nocloud значение seedfrom должно начинаться с / или file://. При ds=nocloud-net значение seedfrom должно начинаться с http:// или https:// и заканчиваться конечным /.

Если вы проверите логи cloud-init, я уверен, вы увидите этопредупреждение.

Обновлять:В версии 24.2 FTP будет добавлен в источник данных NoCloud в cloud-init.

Связанный контент