Guide des détails sur la personnalisation du programme d'installation d'Ubuntu

9

J'ai essayé de lire les guides de préconfiguration et de personnalisation , mais je n'ai pas compris comment et où modifier les options. Je ne peux que confortablement apprendre à travers des exemples pratiques, pour lesquels je pose cette question.

Je recherche des solutions de préconfiguration et de personnalisation pour effectuer quelques tâches spécifiques:

  • Réécrivez complètement les packages installés par défaut, un peu comme les installations minimales et avec le --no-install-recommendsdrapeau de apt-get.
  • Ajouter quelques applications propriétaires à la liste d'installation par défaut
  • Installer et monter automatiquement des pilotes propriétaires lors de l'installation et de la session en direct
  • Modifier les fichiers de configuration par défaut pour les applications installées par défaut
  • Spécifiez les partitions avec l'autorisation
  • Modifiez le pool de packages dans le support d'installation (CD / DVD / USB), de préférence à l'aide d'outils de ligne de commande similaires à apt-getet aptitude.

Quelqu'un peut-il me dire comment configurer l'option préconfigurée pour faire uniquement ce qui précède?

NB Je ne comprends pas la partie GPG après avoir ajouté / supprimé des packages dans le pool.

PS Le troisième point est particulièrement important.

Oxwivi
la source
Pour être clair, "Ubuntu Installer" fait-il référence à l'installateur graphique (unicité) ou alternatif (installateur Debian)?
komputes
@komputes, l'un ou l'autre fera l'affaire.
Oxwivi

Réponses:

6

Pour une préconfiguration de référence, vous pouvez vous référer au guide d'installation-i386 qui contient l'exemple de préconfiguration suivant:

  /usr/share/doc/installation-guide-i386/example-preseed.txt.gz
  • Réécrivez complètement les packages installés par défaut, un peu comme les installations minimales
  • Ajouter quelques applications propriétaires à la liste d'installation par défaut

Pour fournir la liste des packages que vous souhaitez installer, vous pouvez rechercher la ligne suivante:

  tasksel tasksel/first   multiselect ubuntu-desktop

Où "ubuntu-desktop" peut être modifié pour un nombre arbitraire de packages ou de meta packages.

  • Installer et monter automatiquement des pilotes propriétaires lors de l'installation et de la session en direct

Autre que la spécification des packages nécessaires (pour les pilotes propriétaires), je ne sais pas comment cela serait accompli. En remarque, vous "montez" une partition, vous "chargez" un module / pilote du noyau.

  • Modifier les fichiers de configuration par défaut pour les applications installées par défaut

Pour effectuer ce genre de changements scriptés, vous voudrez probablement examiner:

  d-i preseed/late_command string ...

Où le "..." peut être remplacé par des commandes arbitraires comme sed -i par exemple.

  • Spécifiez les partitions avec l'autorisation

Il y a une section de partition dans l'exemple prédéfini mentionné ci-dessus.

Ubiquité avec preseed

Casper prend en charge la préconfiguration et l'ubiquité peut avoir de nombreuses valeurs préconfigurées. Voici quelques-unes des variables qui peuvent être préconfigurées et pertinentes pour l'ubiquité:

ubiquity countrychooser/shortlist select US
ubiquity languagechooser/language-name select English
ubiquity localechooser/supported-locales multiselect en_US.UTF-8
ubiquity ubiquity/summary note
ubiquity ubiquity/reboot boolean true
ubiquity ubiquity/poweroff boolean true
ubiquity ubiquity/success_command string ...

Où "..." contiendrait la même chose que la commande tardive mentionnée ci-dessus, success_command est lue par ubiquity et late_command par di.

komputes
la source
N'y a-t-il aucun moyen de modifier les fichiers de configuration au préalable? Comment empêcher l'installation des packages recommandés? Comment ajouter des packages propriétaires pour une installation hors ligne?
Oxwivi
On dirait que vous souhaitez créer une image personnalisée, comme décrit ici: help.ubuntu.com/community/LiveCDCustomization L'image peut également contenir un fichier prédéfini dans lequel vous pouvez modifier les fichiers de configuration comme décrit précédemment. Une autre approche est que vous pouvez également créer vos propres packages pour certaines personnalisations.
komputes
D'accord, oubliez de changer la configuration, ai-je besoin d'instructions de CD personnalisées pour inclure les packages non présents sur le disque par défaut?
Oxwivi
J'ai monté une image, copié le contenu dans un répertoire, modifié les paramètres Ubiquity. Comment le finaliser?
Oxwivi
Pour finaliser / construire l'image ISO, suivez le bavardage intitulé "Produire l'image CD" ici: help.ubuntu.com/community/LiveCDCustomization
komputes
3

Ce qui suit crée une image de démarrage modifiée. Gravez-le sur un CD ou insérez l'ISO dans une machine virtuelle pour le tester. Vous aurez besoin de cpioet genisoimage(c'est le nom des packages et des exécutables).

Ce qui suit se présente sous la forme d'un Makefile, mais peut être saisi de manière interactive. ${IN_ISO}fait référence à l'image ISO d'origine (j'ai utilisé la -alternativeversion, et je vous suggère de faire de même), ${OUT_ISO}au nom ISO souhaité.

# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
    mkdir -p mount
    sudo mount -o loop ${IN_ISO} mount
    mkdir cdroot
    cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
    sudo umount mount && rm -r mount
    chmod -R a+rw cdroot

# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
    cp isolinux.cfg cdroot/isolinux/isolinux.cfg
    test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
    mkdir -p initrd
    cd initrd && gunzip <../initrd.orig.gz | sudo cpio -i && cd ..
    cp preseed.cfg initrd/preseed.cfg
    cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
    sudo rm -rf initrd

# Create the ISO image. Make sure to use extensions for lower-case filenames    
iso: cdroot prepare
    genisoimage -o ${OUT_ISO} \
        -force-rr -J \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        cdroot

Vous avez besoin de fichiers supplémentaires:

isolinux.cfgconfigure le chargeur de démarrage. Vous voulez qu'il démarre simplement et passe automatiquement par le processus d'installation. Ça devrait ressembler à ça:

default install
label install
  menu label ^Install my custom Ubuntu
  kernel /install/vmlinuz
  append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
prompt 1
timeout 20

C'est tout ce dont nous avons besoin avant de configurer l'installation. Téléchargez l'exemple preseed et nommez-le preseed.cfg. Parcourez-le et modifiez ce que vous voulez. Les options importantes sont:

# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern

# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/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

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true

# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard

#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.

Mais je vous suggère de ne pas utiliser l'exemple ci-dessus, mais de télécharger l'exemple d'Ubuntu et de le configurer selon vos besoins late_command, vous pouvez faire n'importe quoi à partir du shell, y compris télécharger et exécuter un script qui installe et configure votre logiciel personnalisé. Par exemple, utilisez ceci comme late_command:

d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'

Alternativement, vous pouvez placer install.shdans l'initrd ci-dessus et l'exécuter directement. Son contenu pourrait ressembler à ceci:

#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh

Cela dépend vraiment du fonctionnement de votre routine d'installation de pilote propriétaire.

phihag
la source
Comme je l'ai dit dans la question, je veux des conseils sur la façon exacte d'effectuer les tâches que j'ai énumérées; comment réécrire les packages qui vont être installés? Qu'en est-il de l'installation automatique des pilotes propriétaires?
Oxwivi
@Oxwivi Écrivez un script qui installe tout ce que vous voulez, puis téléchargez-le et exécutez-le late_command. Package selectionest la partie que vous pouvez utiliser pour installer vos propres packages, mais vous pouvez également le faire dans le script.
phihag
1
@Oxwivi Vous pouvez installer jockey et le supprimer ultérieurement avec aptitude purge jockeydans un script. Je ne suis pas sûr de ce que vous entendez par "une manière générique d'installer tout type de pilotes propriétaires". C'est une façon générique d'installer tous les pilotes restreints, il suffit de mettre le package du pilote que vous installez dans tasksel ou après aptitude install -ydans le script, et cela fonctionnera. Si vous souhaitez que votre image fonctionne sur plusieurs machines, vous devrez probablement trouver un moyen de demander à jockey tous les pilotes propriétaires applicables. ...
phihag
1
@Ocwivi ... Cependant, l'installation de tous les pilotes propriétaires disponibles est généralement une mauvaise idée: les pilotes propriétaires sont généralement anciens, non pris en charge et nécessitent une configuration non standard supplémentaire. De plus, vous devez vous assurer que vous êtes légalement autorisé à distribuer des pilotes non libres.
phihag
1
@Oxwivi Cette confiance n'est pas fondée, étant donné que n'importe qui peut mettre n'importe quoi dans les référentiels non libres. Cependant, cette discussion est bien en dehors de la portée de cette question (à propos de la préconfiguration). Vous devriez demander comment obtenir une liste des pilotes propriétaires applicables pour le système actuel.
phihag