У меня проблемы с preseed / late_command при установке сервера ubuntu 15.04 amd64 (установка строки cmd)
d-i preseed/late_command string in-target wget http://url
возвращается с кодом выхода 1, а файл отсутствует в файловой системе. Следующая команда также не выполняется (создайте сценарий для загрузки этого файла позже):
d-i preseed/late_command string echo "wget http://url"> /target/home/username/getscript.sh
И эта (только что сделанная в качестве теста) также не работает:
d-i preseed/late_command string apt-get install -y htop
Любая идеи?
Спасибо заранее!
Тим
Мое предположение было бы то, что URL, который Вы пытаетесь получить, становится перенаправленным к https://, и по крайней мере одному из сертификатов в цепочке не доверяют среде установки. Среда установки отличается от целевой среды; среда установки является временным ядром и initrd, на который Вы указываете во время начальной загрузки, и целевая среда - то, что ядро и файловые системы, которые на самом деле установлены.
В точке, в которой preseed/late_command, работал, целевая среда смонтирована в/mnt/target и к командам выполнения там, Вам будет нужно к chroot в него через chroot /mnt/target
. После того как Вы сделали это, все команды, которые Вы выполняете, произведут целевую среду, не среду установки. Теперь строка над заголовком - то, что debconf предоставляет Вам эти in-target
команда, какой chroots к цели, выполняет данную команду, затем выходит назад к среде установки. Таким образом:
d-i preseed/late_command string apt-get install -y htop
попытки установить htop в среде установки (не "Законченная" целевая среда), в то время как:
d-i preseed/late_command string in-target apt-get install -y htop
попытки установить htop в законченной целевой среде.
Поэтому теперь, когда мы устанавливаем на правильном месте, могло бы также случиться так, что сертификату все еще не доверяют, в этом случае еще можно или устранить доверительную проблему приблизительно с in-target
команды, затем сделать wget
или бросить осторожность в конец и отключить доверительное сверение wget с чем-то вроде этого:
d-i preseed/late_command string in-target wget -O /tmp/post-install.sh "https://foo.bar/postinstall.sh" --no-check-certificate; in-target chmod +x /tmp/post-install.sh; in-target /bin/bash /tmp/post-install.sh;
В Ubuntu 16.04 я имел подобную проблему и узнал после расследования, что wget не был установлен, таким образом, я добавил его к шаблону перед семенем
d-i pkgsel/include string ... wget