web-dev-qa-db-fra.com

Comment créer une installation complètement sans surveillance d'Ubuntu Desktop 16.04.1 LTS?

Objectif

Je souhaite installer Ubuntu Desktop 16.04.1 LTS de manière totalement autonome. Mettez ISO CD dans et partir.

Problèmes

  • Paramètres de démarrage incorrects
  • Questions toujours posées et nécessitant des clics de souris
  • Réponses conjuguées à l'aide de kickstart/preseed
  • Exemples de documentation non fonctionnant comme indiqué, en particulier de partman et ubunutu

Je suis tombé sur ce message ici et c'était proche de ce dont j'avais besoin, mais je n'ai pas tout à fait accompli ce dont j'avais besoin, car c'était pour Ubuntu Server. La publication suggère d'utiliser une installation "non graphique" d'Ubuntu, mais je ne pouvais pas trouver d'installation non graphique pour Ubuntu Desktop, ce qui est logique. J'ai essayé d'adapter les étapes et de le faire fonctionner pour Ubuntu Desktop 16.04.1 LTS.

Documentation utilisée

J'ai utilisé toutes les ressources suivantes ...

Apparemment, je ne peux pas inclure toutes mes ressources car askubuntu n'autorise pas plus de 2 liens. Eh bien ce n'est pas très utile - alors voici juste une liste:

  • AskUbuntu
  • Ubuntu install.en.pdf
  • Exemples présélectionnés
  • Documentation d'installation Ubiquity
  • Partman Documentation et exemples
  • Partition Recette Explication des 3 nombres et leur pondération
  • Un exemple complexe plus complexe

Solution actuelle

J'ai actuellement créé une installation sans assistance, mais je ne suis pas sûr qu'elle soit correcte, ce qui signifie que j'aurais dû modifier le fichier isolinux/isolinux.cfg.

Il y avait beaucoup de différences entre le message que j'ai lié et l'image Ubuntu Desktop. Voici ma solution:

Étape 1

Ubuntu ISO monté afin de pouvoir copier le contenu dans un autre répertoire, puis modifier les fichiers pertinents.

mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso

Étape 2

J'ai ensuite copié les fichiers ISO dans un autre répertoire pour les éditer.

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Étape 3

J'ai édité le fichier isolinux/isolinux.cfg et j'ai tout remplacé à l'intérieur par ce qui suit:

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

La ligne d’ajout est très longue, alors pour faciliter la lecture, voici toutes les options que j’ai utilisées:

file=/cdrom/ks.preseed 
auto=true 
priority=critical 
debian-installer/locale=en_US 
keyboard-configuration/layoutcode=us 
ubiquity/reboot=true 
languagechooser/language-name=English 
countrychooser/shortlist=US 
localechooser/supported-locales=en_US.UTF-8 
boot=casper 
automatic-ubiquity 
initrd=/casper/initrd.lz 
quiet 
splash 
noprompt 
noshell

J'ai constaté que tous ces paramètres de démarrage étaient nécessaires pour obtenir une installation complètement sans surveillance. Pour Ubuntu Server, cela peut être différent.

Étape 4

J'ai essayé d'utiliser et de créer de nombreux fichiers de préconfiguration, mais j'ai trouvé que le plus complexe, le plus de chances d'erreurs. C'est actuellement mon simple fichier de préconfiguration qui fonctionne avec le fichier isolinux.cfg ci-dessus.

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-AMD64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop

# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands

Je n'ai pas inclus mes mots de passe cryptés, donc si vous essayez ce fichier de préconfiguration, veuillez les remplacer par un mot de passe crypté. Ici est 3 façons de faire le mot de passe.

Étape 5

J'ai créé la nouvelle image ISO à partir du répertoire /opt/ubuntuiso/.

mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

Étape 6

Je l'ai finalement testé avec Virtualbox et cela a créé une installation complètement sans surveillance.

Des questions

Devrais-je modifier le fichier isolinux/isolinux.cfg?

Dans l'autre article, il semble qu'ils soient capables de modifier le fichier isolinux/txt.cfg et de le faire fonctionner. J'ai essayé pendant environ une heure d'utiliser le isolinux/txt.cfg, mais cela n'a pas fonctionné.

Quelqu'un at-il une recette de partman de travail plus complexe qui spécifie directement les partitions? Ou une configuration LVM qui fonctionne? J'ai essayé d'utiliser une configuration simple de LVM, mais après le redémarrage, elle ne démarrerait pas et resterait assise sur un écran noir. En outre, pas un seul des exemples de préconfiguration que j'ai énumérés dans la documentation n'a fonctionné non plus.

Merci pour toute aide.

38
Brandon Authier

Répondre

Je lui ai donné un peu de temps depuis l'origine pour poser ma question afin de voir s'il existait d'autres solutions, mais il semble que la solution que j'ai proposée en attendant soit la seule solution viable que j'ai vue jusqu'à présent.

Idée fausse

Comme cela a été la source de beaucoup de confusion, je vais essayer de clarifier la situation. Il semble que certaines des réponses aient essayé d'utiliser l'image Ubuntu 16 Server ] == alors que j'essayais précisément de créer une installation d'image sans surveillance Ubuntu 16 Desktop. Le problème se pose en raison des différences de mise en œuvre de d-i (installateur Debian) et de l’ubiquité. Étant donné que l'image du serveur sera attentive et utilisera toutes les commandes d-i du fichier de préconfiguration, la plupart des questions que j'ai posées ne sont pas pertinentes pour l'image du serveur. Cependant, en raison de l'implémentation de l'ubiquité en tant qu'installateur de l'image du bureau, de nombreuses commandes d-i sont ignorées. Vous êtes très limité et de nombreux documents sont manquants.

Liens de documentation trouvés

  • Ici est le lien pour Ubiquity en ignorant le preseed/late_command (je crois qu'il ignore également le preseed/early_command)
  • Ici est la documentation Ubiquity qui parle des composants de l’installateur qui ne seront pas utilisés dans Ubiquity, mais comme vous le remarquerez même dans cette documentation, il est indiqué le preseed/early_command mais je le testerais de manière approfondie ne semblait pas fonctionner pour moi (j'avoue que je n'ai pas testé la commande early_command de façon à ce que je me trompe peut-être).

Processus réussi

Voici mon processus pour créer avec succès un buntu Desktop 16.04 LTS sans surveillance iso.

Monter Ubuntu ISO

Vous devrez monter les fichiers ISO pour pouvoir modifier les fichiers pertinents.

mkdir -p /mnt/iso
mount -o loop ~/Downloads/ubuntu-16.04.1-desktop-AMD64.iso /mnt/iso

Copier les fichiers ISO

Nous devrons copier les fichiers au format ISO monté dans un répertoire différent pour pouvoir les éditer. N'hésitez pas à utiliser le répertoire de votre choix. J'ai choisi le répertoire/opt en raison d'un autre guide d'utilisation, mais/tmp peut tout aussi bien être utilisé.

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Editez le fichier txt.cfg

Ici, nous allons éditer le fichier /opt/ubuntuiso/isolinux/txt.cfg et personnaliser nos paramètres d’amorçage pour obtenir une installation complètement autonome comprenant un fichier de préconfiguration. Utilisez n'importe quel éditeur de votre choix:

#default live
#label live
#  menu label ^Try Ubuntu without installing
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
#label live-install
#  menu label ^Install Ubuntu
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
#label check
#  menu label ^Check disc for defects
#  kernel /casper/vmlinuz.efi
#  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash ---
#label memtest
#  menu label Test ^memory
#  kernel /install/mt86plus
#label hd 
#  menu label ^Boot from first hard disk
#  localboot 0x80

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

Veuillez prendre note de quelques points:

  • J'ai commenté tout le texte original du fichier.
  • J'ai ajouté tout le texte après "y compris live-install par défaut" en bas
  • J'ai nommé le fichier de préconfiguration "ks.preseed" et ce sera dans le répertoire de niveau supérieur de l'ISO (/ opt/ubuntuiso)

Utiliser ou créer un fichier prédéfini

Utilisez un fichier de préconfiguration existant avec prudence! Je n'ai trouvé aucun qui fonctionne juste. Cela ne veut pas dire qu’ils n’existent pas, je n’en ai trouvé aucun avec un peu de recherche. Il existe de nombreuses façons de configurer un fichier de préconfiguration, mais j’ai trouvé que de nombreuses options devaient être ignorées, décrites dans la documentation Ubiquity I liée ci-dessus et dans le lien correspondant à preseed/late_command et à ubiquity/success_command. J'inclus mon fichier de preseed de travail simple qui fonctionne avec le fichier txt.cfg ci-dessus.

Pour chaîne netcfg/get_hostname et chaîne netcfg/get_domain, vous pouvez indiquer ce que vous voulez. J'ai utilisé non-assign-hostname et non-assign-domain puisque je le changerai plus tard par le biais d'un processus de script.

Pour toute commande personnalisée que vous souhaitez exécuter après l'installation, vous devez utiliser:

ubiquity ubiquity/success_command string

Suivi de toute commande que vous souhaitez exécuter. Faites attention à continuer les chaînes avec "; \" et à utiliser le "/ target" pour changer tout ce qui concerne le nouveau système installé.

# Partitioning
# Old style using d-i command
#d-i partman-auto/disk string /dev/sda
#d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-auto/choose_recipe select atomic

# Newer ubiquity command
ubiquity partman-auto/disk string /dev/sda
ubiquity partman-auto/method string regular
ubiquity partman-lvm/device_remove_lvm boolean true
ubiquity partman-md/device_remove_md boolean true
ubiquity partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i mirror/country string US
d-i apt-setup/multiverse boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# Users
d-i passwd/user-fullname string User
d-i passwd/username string user
d-i passwd/user-password-crypted password yourEncryptedPasswd
d-i passwd/user-default-groups string adm audio cdrom dip lpadmin Sudo plugdev sambashare video
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password rootEncryptedPasswd
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands
ubiquity ubiquity/success_command string \
  sed -i -e 's/dns=dnsmasq/#dns=dnsmasq/' /target/etc/NetworkManager/NetworkManager.conf ;\
  cp -a /cdrom/scripts/ /target/root/ ;\
  cp -a /cdrom/salt/ /target/root/

Veuillez noter ces éléments tels que je les ai laissés à des fins d'illustration et ils seront probablement différents dans votre commande preseed.

  • Le mot de passe utilisateur/root doit être ajouté par vous. Ici est le lien qui vous montre 3 façons différentes de créer un mot de passe crypt 3.
  • Vous voudrez peut-être changer les groupes auxquels votre utilisateur est assigné.
  • Vous voudrez certainement changer la success_command. Je l'ai laissé pour montrer comment il peut être formaté et comment utiliser l'environnement / target.

Créer une nouvelle ISO

Créez l'ISO pour pouvoir tester votre fichier de préconfiguration. Si vous en utilisez un ou créez le vôtre, vous devrez le tester car ce sera PROBABLE l'endroit où votre processus échouera. J'ai écrit un script pour un test rapide, mais vous pouvez simplement pointer le fichier de préconfiguration sur un fichier de préconfiguration hébergé http: // et le tester très rapidement de cette façon.

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu16-desktop-unattended-install.iso /opt/ubuntuiso

N'hésitez pas à changer le nom de sortie et le répertoire dans lequel vous allez l'enregistrer.

Graver l'ISO

Je suggère de tester sur virtualbox ou similaire et une fois que cela fonctionne, puis gravez-le sur un DVD. Vous devriez maintenant disposer d’un DVD d’installation sans assistance d’Ubuntu Desktop 16.04 LTS.

Commentaires, corrections, erreurs

J'ai tout écrit en une seule fois et il peut y avoir des erreurs, des fautes de frappe ou des choses qui se sont égarées en cours de route. Si quelqu'un essaie, merci de me prévenir si vous rencontrez une erreur dans le processus. Et rappelez-vous que si vous créez votre propre fichier de préconfiguration, je ne serai probablement pas en mesure de vous expliquer pourquoi votre installation non surveillée est interrompue et ne fonctionne pas car l’ubiquité aime ignorer et ne pas faire certaines choses dans le fichier de préconfiguration. J'espère que cela aide à quelqu'un.

16
Brandon Authier

VEUILLEZ NE PAS ESSAYER CETTE MÉTHODE. NE FONCTIONNE PAS (SI VOUS NE ESSAYEZ PAS DE TUER DU TEMPS):

J'ai vu la réponse à tout cela. Je vais vous dire la solution la plus commune. Je n'ai jamais essayé avant moi-même, alors il est peut-être dépassé. Je ne comprends vraiment pas l'intérêt de ce document, car il serait plus simple de procéder à une installation manuelle, mais de toute façon ...

Connectez-vous en tant qu'utilisateur root ou exécutez $ Sudo su -

Téléchargez et montez l'ISO. Ne le faites PAS manuellement sur le site Web Ubuntu.

# mkdir -p /mnt/iso
# mount -o loop ubuntu.iso /mnt/iso

sauvegarder et déplacer les fichiers pertinents.

# mkdir -p /opt/ubuntuiso
# cp -rT /mnt/iso /opt/ubuntuiso

Empêcher la partie linguistique de l'interface graphique d'apparaître

# cd /opt/ubuntuiso
# echo en >isolinux/lang

Ajouter un fichier "Kickstart".

# apt install system-config-kickstart
# system-config-kickstart

[FACULTATIF] Ajoutez des packages pour votre installation

# vim /path/to/ks.cfg #[OPTIONAL]

Ou simplement le rechercher dans vos fichiers et le modifier directement. Ajoutez la section %packages et placez vos packages sous celle-ci.

%packages
# Add your packages below. Example:
@ ubuntu-server
Apache2
mysql-server
php7.0
php-pear
libapache2-mod-php7.0 
php7.0-mysql
php7.0-curl
php7.0-json
php7.0-cgi

Comme je l'ai dit, je ne l'ai jamais fait moi-même. Par conséquent, si vous avez une configuration comme celle décrite ci-dessus, la pile LAMP ne sera peut-être pas installée et vous devrez le faire manuellement plus tard.

Supprimer les questions avec un fichier "preseed".

# echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

Activer les fichiers:

# vi isolinux/txt.cfg

Puis chercher:

label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --

Vous devrez ensuite ajouter ks=cdrom:/ks.cfg et preseed/file=/cdrom/ks.preseed. Supprimez les mots quiet et vga=788, ainsi il se présente comme suit:

append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --

Maintenant, vous pouvez créer la nouvelle réponse:

# mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

Et voilà!

1
iplustech.net

Regardez: https://github.com/core-process/linux-unattended-installation

Ce projet fournit tout ce dont vous avez besoin pour créer une installation sans assistance d’une configuration minimale de Linux, tandis que celle-ci se traduit par une configuration plus légère - comprenant un service OpenSSH et Python - que vous pouvez dériver du programme d’installation standard d’une machine. Distribution Linux. L'idée est que vous effectuerez tout le déploiement ultérieur de vos configurations et services à l'aide d'outils Ansible ou d'outils similaires une fois la configuration minimale terminée.

1
Niklas

Bravo Brandon Authier pour votre message et vos instructions, vous m'avez beaucoup aidé.

Cependant, j’ai eu un problème avec votre méthode: j’ai découvert qu’après l’installation et le redémarrage de PC, le GRUB se bloque.

J'ai donc ajouté à la ks.preseed ce qui suit:

# Due notably to potential USB sticks, the location of the MBR can not be
# determined safely in general, so this needs to be specified:

d-i grub-installer/bootdev  string /dev/sda

# To install to the first device (assuming it is not a USB stick):
#d-i grub-installer/bootdev  string default

Cela évite de bloquer l'installation de grub si vous ne retirez pas la clé USB. Je l'ai eu de https://www.debian.org/releases/stable/example-preseed.txt

1
RomanuX

Je suis désolé d'apprendre que ma méthode précédente ne fonctionnait pas. Heureusement, j'ai trouvé un script conçu par Rinck Sonnenberg ( netson ) qui créerait des images ISO AMD64 sans surveillance de Ubuntu Server sur GitHub, et je l'ai créé. J'ai ensuite amélioré le script en ajoutant la possibilité de créer des images ISO I386. J'ai également changé le système d'exploitation d'Ubuntu Server à Ubuntu Desktop. Vous n'avez pas besoin de visiter le référentiel GitHub, vous pouvez simplement suivre les instructions ci-dessous.

Exécutez ces commandes:

$ wget https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh
$ chmod +x create-unattended-iso.sh
$ Sudo ./create-unattended-iso.sh

Parfois, wget n'est pas disponible. Si tel est le cas, utilisez curl:

$ curl -O https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh

Si aucun fonctionne, téléchargez-le et déplacez-le dans votre dossier personnel.

On vous demandera ensuite quelle version d'Ubuntu installer, puis les questions que Ubuntu poserait si vous effectuez une installation manuelle. Le script téléchargera ensuite l'ISO Ubuntu, puis appliquera les modifications demandées. Vous avez maintenant une image ISO qui est prête pour une installation sans assistance!

Cela devrait répondre à votre question, car cela a bien fonctionné pour moi. Il est également bon que cette méthode soit beaucoup plus facile que ma réponse précédente. J'espère que cela fonctionne pour vous comme pour nous.

1
iplustech.net