
私は、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の読み込み
永遠に待つクラウド初期化
そして最終的にメニューを起動します
どうやら、デフォルトの 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 データソースに追加されます。