46 votes

Comment créer une ISO personnalisée pour Ubuntu Server ?

J'aimerais créer une ISO personnalisée pour Ubuntu Server 12.04 mais je n'ai pas trouvé d'approche claire sur la façon de le faire. Je vois qu'Ubuntu-builder est une très bonne application pour créer un bureau Ubuntu personnalisé, mais qu'en est-il d'Ubuntu Server ?

67voto

Rinzwind Points 270388

Télécharger

Téléchargez l'ISO du serveur Ubuntu à partir de ce lieu . Vous avez le choix entre 32 et 64 bits. Le nom du fichier pour l'édition serveur ressemblera à ceci :

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-amd64.iso 

Dans les instructions qui suivent, je prendrai pour base la version 13.10 64 bits, donc adaptez les commandes au téléchargement que vous avez effectué. Gardez une copie de votre téléchargement afin de pouvoir créer plusieurs nouvelles versions à partir du téléchargement original au cas où vous auriez besoin d'améliorer votre projet. Je supposerai également que nous utilisons ~/Downloads/ pour faire tout notre travail.

Configuration initiale

Cela créera deux répertoires "iso" et "isoNew" dans votre répertoire Downloads, montez l'ISO et copiez le contenu de "iso" vers "isoNew" pour démarrer un nouveau projet.

Mettez-le dans un fichier texte, enregistrez-le, rendez-le exécutable et exécutez-le :

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso    
sudo cp -r ./iso/* ./newIso/
sudo cp -r ./iso/.disk/ ./newIso/    
sudo umount ./iso/
cd ~/Downloads/newIso/
  • Un message d'erreur sera envoyé : mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Exemples d'images de ce que cela donnera :

Exécution :

Executing

Résultat :

Result

Ajout d'une option au menu de démarrage

Les options de menu de l'installateur sont stockées dans isolinux/txt.cfg et vous pouvez créer de nouvelles options entre les deux default install y label install .

Cela créera une nouvelle option appelée "Installer un serveur Ubuntu personnalisé" et ajoutera un fichier kickstart (le fichier kickstart est utilisé pour modifier les options ; expliqué ci-dessous) :

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoption n'est qu'une étiquette que vous pouvez utiliser pour identifier votre option.
  • "Installer un serveur Ubuntu personnalisé" est le texte qui s'affichera dans le menu de démarrage.
  • Si vous souhaitez que votre option de menu devienne l'option par défaut, il vous suffit de modifier le paramètre default install a default myownoption .

Exemple :

enter image description here

et éditer le fichier (j'ai utilisé nano mais si disponible utilisez gedit, vim ou un autre éditeur). Voici mon ajout à ce fichier où j'ai utilisé "lampserver" comme étiquette et ma graine sera également nommée "lampserver".

enter image description here

Kickstart (mise en place graphique d'un fichier de configuration)

La méthode d'installation Red Hat Kickstart est utilisée principalement (mais pas exclusivement) par le système d'exploitation Red Hat Enterprise Linux pour effectuer automatiquement l'installation et la configuration du système d'exploitation sans surveillance.

Documentation sur le preseeding/kickstart pour Ubuntu . Ubuntu a un support limité pour kickstart (et preseeding) ; l'une des choses manquantes est une interface graphique pour le preseeding. Kickstart fait ont des options pour cela (voir les images) mais elles ne semblent pas fonctionner sur Ubuntu. Vous pouvez cependant le faire manuellement (voir Présemis ci-dessous).

Installation et démarrage du kickstart :

sudo apt-get install system-config-kickstart
ksconfig

** AVERTISSEMENT **

kickstart est bogué dans Ubuntu 13.10 et lors de son démarrage, il se bloque. Voici une solution . Mettez le correctif dans le commentaire dans un fichier texte, sauvegardez-le (je l'ai nommé "patch") et commit :

enter image description here

Après cela ksconfig a fonctionné et il lancera un éditeur de configuration qui vous permettra de manipuler un grand nombre d'options.

enter image description here

enter image description here

Voir le Red Hat Linux 7.2 : Le guide officiel de personnalisation de Red Hat Linux pour obtenir une description de toutes les options que vous pouvez définir.

Une fois que vous avez terminé, enregistrez les modifications dans un fichier ks.cfg et le copier dans l'ISO que nous modifions :

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Si vous modifiez quoi que ce soit ici, le programme d'installation ne vous demandera pas ces informations si elles sont considérées comme valides. Si vous n'avez pas modifié une option, le programme d'installation vous demandera quand même de répondre.
  • Vous pouvez également télécharger kickstart dossiers et les enregistrer en tant que ks-custom.cfg en ~/Downloads/newIso/preseed/ .

Exemple où j'ai inséré mes données d'identification. J'ai commencé par sudo ksconfig à partir de la ligne de commande.

enter image description here

Et l'enregistrer dans le projet :

enter image description here

Pré-ensemencement (mise en place manuelle d'un fichier de configuration)

Pré-ensemencement permet de définir les réponses aux questions posées pendant le processus d'installation, sans avoir à saisir manuellement les réponses pendant que l'installation est en cours. Cela permet d'automatiser entièrement la plupart des types d'installation et offre même des fonctionnalités qui ne sont pas disponibles lors d'installations normales.

Copiez les semences de l'installation normale sur votre propre étiquette :

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • modifier les myownoption à ce que vous avez utilisé.

Maintenant, il s'agit de modifier les paramètres. L'utilisation de debconf-get-selections de la debconf-utils vous pouvez rechercher les paramètres que vous pouvez utiliser avec un logiciel spécifique.

Exemple de mise en place :

enter image description here

Et ajout de lamp-server à installer avec tasksel :

enter image description here

  • Si vous souhaitez ajouter les paquets "openssh" et "build-essential", vous pouvez l'inclure dans le fichier de semences :

    d-i pkgsel/include string openssh-server build-essential
  • Un exemple pour openssh :

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
  • Vous pouvez ajouter ces options à custom-iso/preseed/ubuntu-myownoption.seed .

  • Explication/exemples d'utilisation des paramètres debconf .

  • Un exemple de fichier de semences

  • Exemples concernant : Localisation, Configuration du réseau, Console réseau, Horloge et heure, partitionnement

  • À la fin du fichier preseed, vous pouvez ajouter des paquets (exemples aléatoires) comme suit :

    %packages openssh-server serveur mysql apache2

Installation hors ligne

Si vous ajoutez des paquets et que ceux-ci ne sont PAS dans l'ISO, l'installateur les téléchargera depuis le dépôt. Si vous ne disposez pas d'une connexion internet active, cela posera des problèmes. Vous devrez donc ajouter tous ces paquets (et leurs dépendances) à votre projet et les graver sur un DVD. Heureusement, l'ISO normal du serveur a beaucoup de place, mais attention : Les CD et/ou DVD ont une taille limitée.

Téléchargez tous les paquets DEB dont vous avez besoin et stockez-les dans le dossier ~/Downloads/ . Ces deux répertoires sont nécessaires sur le nouvel ISO :

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
sudo cp ~/Downloads/*.deb newIso/pool/extras/

Cela mettra à jour notre projet avec les nouveaux paquets :

cd ~/Downloads/newIso
sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

Créer l'ISO

cd ~/Downloads/     
sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt
sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/
  • la deuxième ligne crée une nouvelle somme de contrôle et n'est nécessaire que lors de l'ajout de paquets.
  • la troisième crée un fichier ISO à partir de votre projet, que vous pouvez graver sur un DVD.

Résultat :

enter image description here

Vous pouvez maintenant l'essayer en le gravant et en l'installant. Je vous conseille d'utiliser une machine virtuelle car elle sera plus rapide pour tester l'ISO créé initialement (sinon vous redémarrez sans cesse).

Et après avoir installé VirtualBox, j'obtiens le menu suivant :

enter image description here

Chasse aux insectes

J'ai rencontré un problème lors de l'installation : la valeur par défaut n'a pas été sélectionnée.

Shadin. De votre fichier de semences en commentaire

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

doit probablement être ainsi :

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

Oubliez la ligne tasksel si vous ne voulez pas d'un serveur LAMP (c'est-à-dire Apache, Mysql, Php).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X