
У меня есть работающий 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
Ожидание вечности cloud-init
Затем запустите меню в конечном итоге
Видимо, файл пользовательских данных игнорируется, если я загружаю его из файла 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.