Установщик Ubuntu 20.04 загружает ISO более одного раза

Я работал над примером, опубликованным Эндрю Лоутером в разделе « Автоматическая установка сервера 20.04» с использованием PXE и ​​живого образа сервера . Например, используя командную строку Linux, похожую на:

      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/

.... и все заработало (спасибо, Эндрю!)

Еще один вопрос, который у меня возник после того, как я немного поработал с этим. Как видите, установщик скачает ISO-образ с http://${pxe_default_server}/tftp/ubuntu-20.04-live-server-amd64.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"

Спасибо!

1 ответ

Я видел, что это получило ответ на Discourse, но я подумал, что поделюсь тем, что нашел.

Добавление cloud-config-url=/dev/nullк аргументам ядра не позволяет загружать ISO, а ISO загружается только один раз. Полная линия grub теперь

      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/ cloud-config-url=/dev/null

почему это происходит

При использовании PXE url=Параметр должен быть добавлен к аргументам ядра, чтобы указать расположение файла ISO. Полагаю casperобрабатывает это, и аргумент должен быть в форме url=*.iso

cloud-initтакже будет анализировать urlаргумент ядра и попытаться его использовать (по-видимому, дважды). Из https://github.com/canonical/cloud-init/blob/fc5d541529d9f4a076998b7b4a3c90bb4be0000d/doc/sources/kernel-cmdline.txt

когда запускается «cloud-init start», он проверяет, появляется ли один из «cloud-config-url» или «url» в виде ключ/значение в командной строке ядра... Затем Cloud-init прочитает содержимое указанного URL.

Как отмечается в посте Discourse, cloud-config-urlпроверяется в первую очередь , поэтому вы можете использовать кладж, чтобы избежать дополнительных загрузок.

Другие вопросы по тегам