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

33

Objectif

Je souhaite installer Ubuntu Desktop 16.04.1 LTS sans surveillance. Placez le CD ISO et éloignez-vous.

Problèmes

  • Paramètres de démarrage incorrects
  • Questions toujours posées et nécessitant des clics de souris
  • Réponses compliquées en utilisant kickstart / preseed
  • Les exemples de documentation ne fonctionnent pas comme indiqué, en particulier de partman et ubunutu

Je suis tombé sur cet article ici et il était proche de ce dont j'avais besoin, mais n’a pas tout à fait accompli ce dont j’avais besoin depuis Ubuntu Server. Le post suggère d'utiliser une installation Ubuntu "non graphique", mais je n'ai pas pu 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 de présélection
  • Ubiquity Installer Documentation
  • Documentation et exemples Partman
  • Recette de partition Explication des 3 nombres et de leur pondération
  • Un exemple de Preseed plus complexe

Solution actuelle

J'ai actuellement créé une installation sans surveillance, mais je ne suis pas sûr que ce soit correct - ce qui signifie que j'aurais dû éditer le fichier isolinux / isolinux.cfg

Il y avait beaucoup de différences entre la publication liée et l’image du bureau Ubuntu. Voici ma solution:

Étape 1

ISO Ubuntu montée pour que je puisse copier le contenu dans un autre répertoire, puis éditer 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 modifier.

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

Étape 3

J'ai édité le fichier isolinux/isolinux.cfg et remplacé tous les éléments par les éléments suivants:

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 donc, 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 trouvé que tous ces paramètres de démarrage étaient nécessaires pour obtenir une installation complètement automatique. Pour Ubuntu Server, il peut être différent.

Étape 4

J'ai essayé d'utiliser et de créer de nombreux fichiers préconçus, mais j'ai trouvé le plus complexe, le plus de risques d'erreur. 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 préconfiguré, veuillez les remplacer par un mot de passe crypté. Ici se trouve 3 façons de créer un 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 il a créé une installation complètement sans surveillance.

Questions

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

Dans l’autre article, il semble qu’ils soient capables d’éditer le fichier isolinux/txt.cfg et de pouvoir faire ce travail. 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 partman plus complexe qui spécifie directement les partitions? Ou une configuration LVM fonctionnelle? J'ai essayé d'utiliser une configuration LVM simple, mais après le redémarrage, il ne démarrerait pas et se contenterait d'un écran noir. En outre, aucun des exemples de préconfiguration que j'ai répertoriés dans la documentation n'a fonctionné non plus.

Merci pour toute aide.

    
posée Brandon Authier 04.08.2016 - 01:16
la source

5 réponses

11

Répondre

Je lui ai donné le temps de poser ma question pour voir s’il y avait d’autres solutions, mais la solution que j’avais trouvée en attendant est la seule solution viable que j’ai vue jusqu’à présent.

Idée fausse

Comme il s’agit d’une source 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 lorsque j'essayais de créer une installation d'image de bureau Ubuntu 16 sans surveillance. Le problème se pose en raison des différences d'implémentation de d-i (installateur Debian) et de l'ubiquité. Étant donné que l'image du serveur fera attention et utilisera toutes les commandes d-i dans le 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'omniprésence en tant qu'installateur de l'image de bureau, beaucoup de commandes d-i sont ignorées et vous êtes très limité et beaucoup de documentation manque.

Liens de documentation trouvés

  • Ici est le lien pour Ubiquity ignorant la commande preseed / late_command (Je crois que cela ignore aussi le preseed / early_command)
  • Ici se trouve la documentation Ubiquity sur les composants de l'installateur qui ne seront pas utilisés dans Ubiquity, mais comme vous le remarquerez dans cette documentation dit le preseed / early_command mais je le testerais soigneusement pour vérifier car cela ne semblait pas fonctionner pour moi (j'avoue que je n'ai pas testé rigoureusement la commande early_command pour que je puisse me tromper).

Processus réussi

Voici mon processus pour créer avec succès un bureau Ubuntu 16.04 LTS sans surveillance .

Mount 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 dans l’ISO monté dans un répertoire différent pour pouvoir les éditer. N'hésitez pas à utiliser n'importe quel répertoire, j'ai choisi le répertoire / opt en raison d'une autre méthode, mais / tmp pourrait aussi bien être utilisé.

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

Modifier 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 sans assistance qui inclura 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 et y compris "default live-install" en bas
  • J'ai nommé le fichier preseed "ks.preseed" et celui-ci se trouvera dans le répertoire principal de l'ISO (/ opt / ubuntuiso)

Utiliser ou créer un fichier de présélection

Utilisez un fichier de préconfiguration déjà existant avec prudence! Je n'ai trouvé aucun travail qui fonctionne. Cela ne veut pas dire qu'ils n'existent pas, je n'en ai trouvé aucun avec pas mal de recherches. Il existe de nombreuses manières de configurer un fichier de préconfiguration, mais j'ai trouvé de nombreuses options à ignorer, décrites dans la documentation Ubiquity que j'ai liée ci-dessus et dans le lien preseed / late_command vs ubiquity / success_command. J'inclus mon simple fichier de travail de travail qui fonctionne avec le fichier txt.cfg ci-dessus.

Pour la chaîne netcfg / get_hostname et la chaîne netcfg / get_domain , vous pouvez mettre ce que vous voulez. J'ai utilisé un nom d'hôte non attribué et un domaine non attribué car je le changerai plus tard par un processus de script.

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

ubiquity ubiquity/success_command string

Suivi de toute commande à exécuter. Faites attention à continuer les chaînes avec "; \" et en utilisant "/ target" pour modifier 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 choses comme je les ai laissées dans un but d'illustration et elles seront probablement différentes dans votre commande de préconfiguration.

  • 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 une crypte 3 mot de passe.
  • Vous souhaiterez peut-être modifier les groupes auxquels votre utilisateur est affecté.
  • Vous voudrez certainement modifier la commande 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 tester votre fichier de préconfiguration. Si vous en utilisez un ou en créez vous-même, vous devrez le tester, car cela risque d’être le lieu où votre processus échouera. J'ai écrit un script pour un test rapide, mais vous pouviez simplement pointer le fichier préconfiguré sur un fichier preseed hébergé http: // et le tester très rapidement.

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 à modifier le nom de la sortie et le répertoire dans lequel vous allez l'enregistrer.

Graver ISO

Je suggère de tester sur virtualbox ou similaire et une fois que vous l'avez, gravez-le sur un DVD. Vous devriez maintenant avoir un DVD d'installation de Ubuntu Desktop 16.04 LTS sans surveillance.

Feedback, Corrections, Erreurs

J'ai tout écrit en une seule fois et il peut y avoir des erreurs, des fautes de frappe ou des erreurs. Si quelqu'un essaie cela, faites-le moi savoir 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 automatique est interrompue et inopérante car l'ubiquité aime ignorer et ne pas faire certaines choses dans le fichier préconfiguré. J'espère que cela aidera quelqu'un.

    
réponse donnée Brandon Authier 13.10.2016 - 23:19
la source
1

Je suis désolé d’apprendre que mon ancienne méthode ne fonctionnait pas. Heureusement, j'ai trouvé un script conçu par Rinck Sonnenberg ( netson ) qui créerait des ISO sans surveillance AMD64 du serveur Ubuntu sur GitHub, et je l'ai monté en fourche. J'ai ensuite amélioré le script en ajoutant la possibilité de créer des ISO I386. J'ai également changé le système d'exploitation d'Ubuntu Server pour Ubuntu Desktop. Vous n'avez pas besoin de visiter le dépôt 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 none 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 vous poserait si vous faisiez une installation manuelle. Le script télécharge alors l'ISO Ubuntu, puis applique les modifications qui lui sont demandées. Vous avez maintenant un ISO qui est tout prêt pour une installation sans assistance!

Cela devrait répondre à votre question, car cela fonctionnait très bien 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.

    
réponse donnée iplustech.net 06.09.2016 - 04:15
la source
1

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

J'ai vu la réponse à tout cela. Je vais vous dire la solution la plus commune. Je ne l'ai jamais essayé avant moi, alors il est peut-être dépassé. Je ne comprends vraiment pas le point, car faire une installation manuelle serait plus facile, mais de toute façon ...

Connectez-vous en tant que root ou exécutez $ sudo su -

Téléchargez et montez l’ISO. Ne le faites pas manuellement à partir du 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 de la langue de l'interface graphique d'apparaître

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

Ajoutez 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 recherchez-le simplement dans vos fichiers et modifiez-le directement. Ajoutez la section %packages et placez vos paquets en dessous.

%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, donc si vous aviez une configuration comme celle ci-dessus, elle n’installe peut-être pas la pile LAMP 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 en recherchant:

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 , de sorte qu'il ressemble à ceci:

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à!

    
réponse donnée iplustech.net 20.08.2016 - 16:23
la source
1

Consultez: lien

Ce projet fournit tout ce dont vous avez besoin pour créer une installation sans assistance d’une configuration minimale de Linux, alors que minimal s’applique à la configuration la plus légère - comprenant un service OpenSSH et Python - que vous pouvez dériver du programme d’installation standard d’une distribution Linux. L'idée est que vous ferez tout le déploiement de vos configurations et services à l'aide d'Ansible ou d'outils similaires une fois la configuration minimale terminée.

    
réponse donnée Niklas 28.08.2017 - 01:56
la source
0

Grand travail Brandon Authier pour ton post et tes instructions, tu m'as beaucoup aidé.

J'ai eu un problème avec votre méthode si: J'ai découvert qu'après l'installation et que le PC redémarre, le GRUB se bloque.

J'ai donc ajouté au 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 l’installation de grub si vous ne retirez pas la clé USB. Je l'ai eu de lien

    
réponse donnée RomanuX 07.11.2017 - 08:16
la source

Lire d'autres questions sur les étiquettes