使用 Syslinux 透過 PXEBoot 部署 Ubuntu 22.04

使用 Syslinux 透過 PXEBoot 部署 Ubuntu 22.04

我有一個功能齊全的 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

載入 ISO

永遠等待cloud-init

永遠等待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 資料來源中。

相關內容