web-dev-qa-db-fra.com

preseed / late_command serveur ubuntu 15.04

J'ai des problèmes avec la commande preseed/late_command sur l'installation du serveur AMD64 sous ubuntu 15.04 (installation en ligne cmd)

d-i preseed/late_command string in-target wget http://url

retourne avec le code de sortie 1 et le fichier n'est pas présent sur le système de fichiers. La commande suivante échoue également (créez un script pour télécharger ce fichier ultérieurement):

d-i preseed/late_command string echo "wget http://url"> /target/home/username/getscript.sh

Et celui-ci (qui vient de le faire à titre de test) échoue également:

d-i preseed/late_command string apt-get install -y htop

Des idées?

Merci d'avance!

Tim

1
Tim

J'imagine que l'URL que vous essayez de récupérer est redirigé vers https: // et qu'au moins un des certificats de la chaîne n'est pas approuvé dans l'environnement d'installation. L'environnement d'installation est différent de l'environnement cible. l'environnement d'installation est le noyau temporaire et l'initrd que vous avez indiqué lors du démarrage, et l'environnement cible est constitué du système de noyau et des systèmes de fichiers réellement installés.

Au moment où la commande preseed/late_command est exécutée, l'environnement cible est monté sur/mnt/target et pour y exécuter des commandes, vous devez y accéder via chroot /mnt/target. Une fois que vous avez fait cela, toutes les commandes que vous exécuterez affecteront l'environnement cible, pas l'environnement d'installation. Maintenant, le kicker est que debconf vous fournit la commande in-target qui chroote la cible, exécute la commande donnée, puis retourne à l’environnement d’installation. Ainsi:

d-i preseed/late_command string apt-get install -y htop

tente d’installer htop dans l’environnement d’installation (pas dans l’environnement cible "Terminé"), alors que:

d-i preseed/late_command string in-target apt-get install -y htop

tente d'installer htop dans l'environnement cible fini.

Donc, maintenant que nous installons au bon endroit, il se peut également que le certificat ne soit toujours pas approuvé. Dans ce cas, vous pouvez résoudre le problème de confiance avec quelques commandes plus in-target, puis exécutez la procédure wget ou lancez la prudence à la fin et désactivez la vérification de la confiance de wget avec quelque chose comme ceci:

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;
1
ZachP

Dans Ubuntu 16.04, j'ai eu un problème similaire et, après enquête, j'ai découvert que wget n'était pas installé. Je l'ai donc ajouté au modèle de preseed.

d-i pkgsel/include string ... wget
1
LutzB