
我有一個功能齊全的 DHCP、ftp 和 tftp 伺服器,帶有一個 tftpboot 目錄,其中在 PXEboot 中配置的機器可以從網路毫無問題地載入 syslinux。
我正在嘗試透過 SYSLINUX 在 PXE 中安裝 ubuntu 22.04。
我已經關注了這個郵政為了達成這個。
在這篇文章中,它說,您必須提取 ubuntu 22.04 伺服器安裝程式 ISO 中的 vmlinuz 和 initrd 內核文件,並將其放入 tftpboot 目錄中。然後從 pxelinux.cfg 目錄中名為 default 的設定檔載入 ISO。以下是與 jammy 相關的 tftpboot 目錄的非詳盡示意圖(省略了 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
最後,要在 ftp 中新增使用者資料(雲端配置)和元資料文件,預設檔案將能夠使用該文件下載其配置以開始自動安裝,使用者資料具有我們所執行的所有步驟之前會手動選擇,以便在無需手動介入的情況下進行安裝(語言、格式等)
核心和 ISO 已正確載入並開始安裝程序直至安裝選單,但當需要載入雲端配置(使用者資料)檔案以開始自動安裝時,問題就出現了。即使我在預設檔案中指定了它,它也找不到它。下圖中發生的情況如下。
載入 ISO
永遠等待cloud-init
然後最終啟動選單
顯然,如果我從預設的 syslinux 文件加載用戶資料文件,它會被忽略。這怎麼可能?我是否必須從預設文件以外的其他地方加載它?我已經考慮過嘗試從修改後的 ISO 加載它。這是一個好的選擇嗎?謝謝
答案1
永遠等待cloud-init
你檢查了嗎cloud-init 的日誌文件?你看見什麼了?
我懷疑cloud-init永遠等待的原因是因為您沒有提供有效的 NoCloudNet 字串。 Cloud-init 的 NoCloud 資料來源不支援 support ftp
。從文件:
對於 ds=nocloud,seedfrom 值必須以 / 或 file:// 開頭。對於 ds=nocloud-net,seedfrom 值必須以 http:// 或 https:// 開頭,並以尾隨 / 結尾。
如果你檢查你的 cloud-init 日誌,我敢打賭你會看到這個警告。
更新:在 24.2 版本中,FTP 將會被加入到 cloud-init 的 NoCloud 資料來源中。