Syslinux を使用した PXEBoot による Ubuntu 22.04 の導入

Syslinux を使用した PXEBoot による Ubuntu 22.04 の導入

私は、PXEboot で構成されたマシンがネットワークから問題なく syslinux をロードできる tftpboot ディレクトリを備えた機能的な DHCP、ftp、および tftp サーバーを持っています。

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 は正しくロードされ、インストール メニューまでインストール プロセスが開始されますが、自動インストールを開始するために cloud-config (user-data) ファイルをロードする必要があるときに問題が発生します。デフォルト ファイルで指定したにもかかわらず、ファイルが見つかりません。以下の画像で何が起こっているかを示します。

ISOの読み込み

ISOの読み込み

永遠に待つクラウド初期化

永遠に待つクラウド初期化

そして最終的にメニューを起動します

そして最終的にメニューを起動します

どうやら、デフォルトの syslinux ファイルからロードすると、ユーザー データ ファイルは無視されるようです。これはなぜでしょうか? デフォルト ファイル以外の場所からロードする必要がありますか? 変更した ISO からロードすることをすでに考えていました。これは良い代替案でしょうか? ありがとうございます

答え1

永遠に待つクラウド初期化

チェックしましたかcloud-init のログファイル? あなたは何を見たの?

cloud-initが永遠に待機している理由は、有効なNoCloudNet文字列を指定していません. Cloud-initのNoCloudデータソースはサポートされていませんftpドキュメント:

ds=nocloud の場合、seedfrom 値は / または file:// で始まる必要があります。ds=nocloud-net の場合、seedfrom 値は http:// または https:// で始まり、末尾に / が付く必要があります。

cloud-initのログを確認すると、これがわかると思います警告

アップデート:24.2 リリースでは、FTP が cloud-init の NoCloud データソースに追加されます。

関連情報