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 ?
Réponse
Trop de publicités?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 :
Résultat :
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
adefault myownoption
.
Exemple :
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".
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 :
Après cela ksconfig
a fonctionné et il lancera un éditeur de configuration qui vous permettra de manipuler un grand nombre d'options.
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.
Et l'enregistrer dans le projet :
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 :
Et ajout de lamp-server à installer avec tasksel :
-
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
. -
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 :
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 :
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).