我一直在研究 Andrew Lowther 在Automated 20.04 Server Installation using PXE and live server image中发布的示例。例如,使用类似于以下内容的 linux cmdline:
linux /vmlinuz ip=dhcp url=http://${pxe_default_server}/tftp/ubuntu-20.04-live-server-amd64.iso autoinstall ds=nocloud-net\;s=http://${pxe_default_server}/tftp/
....并让事情正常进行(感谢安德鲁!)
处理完这个问题后我有另一个问题。如您所见,安装程序将从http://${pxe_default_server}/tftp/ubuntu-20.04-live-server-amd64.iso
该示例中下载 ISO。在我的 httpd 日志中,我可以看到 ISO 在进行一次自动安装时通过网络下载了 3 次。有没有办法让它不这样做?
192.168.1.225 - - [06/Apr/2021:22:09:47 +0000] "GET /ubuntu-20.04.1-live-server-amd64.iso HTTP/1.1" 200 958398464 "-" "Wget"
192.168.1.225 - - [06/Apr/2021:22:13:24 +0000] "GET /ubuntu-20.04.1-live-server-amd64.iso HTTP/1.1" 200 958398464 "-" "Cloud-Init/20.2-45-g5f7825e2-0ubuntu1~20.04.1"
192.68.1.225 - - [06/Apr/2021:22:16:50 +0000] "GET /ubuntu-20.04.1-live-server-amd64.iso HTTP/1.1" 200 958398464 "-" "Cloud-Init/20.2-45-g5f7825e2-0ubuntu1~20.04.1"
谢谢!
我在 Discourse 上看到了这个答案,但我想我会分享我的发现。
添加
cloud-config-url=/dev/null
到内核参数确实会阻止cloud-init
下载 ISO,并且 ISO 只下载一次。完整的 grub 行现在是为什么会这样
使用 PXE 时,
url=
必须将参数添加到内核参数中以指定 ISO 文件的位置。我相信casper
处理这个问题,论点必须是形式url=*.iso
cloud-init
还将解析url
内核参数并尝试使用它(显然是两次)。来自https://github.com/canonical/cloud-init/blob/fc5d541529d9f4a076998b7b4a3c90bb4be0000d/doc/sources/kernel-cmdline.txt正如 Discourse 帖子所指出的,首先检查
cloud-config-url
的是,所以你可以使用 kludge 来避免额外的下载。