Comment créer un ISO de serveur Ubuntu personnalisé?

42

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

Shadin
la source

Réponses:

61

Télécharger

Téléchargez l'ISO du serveur Ubuntu à partir de cet emplacement . Vous avez l'option d'aller en 32 bits ou en 64 bits. Le nom de fichier pour l'édition du serveur ressemblera à ceci:

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

Je supposerai la version 13.10 64 bits dans les instructions suivantes, ajustez donc les commandes en fonction du téléchargement que vous avez effectué. Conservez une copie de votre téléchargement afin de pouvoir créer plusieurs nouvelles versions à partir du téléchargement d'origine au cas où vous auriez besoin d'améliorer votre projet. Je vais aussi supposer que nous ~/Downloads/faisons tout notre travail.

La configuration initiale

Cela créera 2 répertoires "iso" et "isoNew" dans votre répertoire de téléchargements, montera l'ISO et copiera le contenu de "iso" sur "isoNew" pour démarrer un nouveau projet.

Mettez ceci dans un fichier texte, sauvegardez-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/
  • Il va lancer 1 message d'erreur: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Exemple d'images sur la façon dont cela va ressembler:

En cours d'exécution:

L'exécution

Résultat:

Résultat

Ajout d'une option du menu de démarrage

Les options de menu du programme d’installation sont stockées isolinux/txt.cfget vous pouvez créer de nouvelles options entre default installet 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 est juste une étiquette que vous pouvez utiliser pour identifier votre option.
  • "Installer un serveur Ubuntu personnalisé" est le texte qui apparaîtra dans le menu de démarrage.
  • Si vous voulez que votre option de menu devienne l'option par défaut, il vous suffit de changer le default installen default myownoption.

Exemple:

entrez la description de l'image ici

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é "lamperver" comme étiquette et ma graine sera également nommée "lamperver".

entrez la description de l'image ici

Kickstart (configuration graphique d'un fichier de configuration)

La méthode d'installation de 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 la préconfiguration / le démarrage pour Ubuntu . Ubuntu a un support limité pour kickstart (et préconfiguration); une des choses manquantes est une interface graphique pour la préconfiguration. Kickstart n'ont des options pour cela (voir les images) , mais ceux - ci ne semblent pas fonctionner sur Ubuntu. Vous pouvez cependant le faire manuellement (voir Présélection ci-dessous).

Installation et démarrage de kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** ATTENTION **

Kickstart est buggé dans Ubuntu 13.10 et lors du démarrage, il est erroné. Voici un correctif . Mettez le patch dans le commentaire dans un fichier texte, sauvegardez-le (je l'ai nommé "patch") et validez-le:

entrez la description de l'image ici

Après cela a ksconfigfonctionné et il va démarrer un éditeur de configuration qui vous permet de manipuler beaucoup d'options.

entrez la description de l'image ici

entrez la description de l'image ici

Reportez-vous au Red Hat Linux 7.2: Guide de personnalisation officiel 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 ks.cfgfichier et copiez-le dans l'ISO que nous modifions:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Si vous changez quelque chose ici, l'installateur demandera cette information si elle est considérée comme valide. Si vous n'avez pas changé une option, l'installateur vous demandera toujours de répondre.
  • Vous pouvez également télécharger Kickstart fichiers et enregistrer ceux comme ks-custom.cfgdans ~/Downloads/newIso/preseed/.

Exemple où j'ai inséré mes informations d'identification. Je l'ai commencé avec sudo ksconfigde ligne de commande.

entrez la description de l'image ici

Et en l'enregistrant dans le projet:

entrez la description de l'image ici

Présélection (configuration manuelle d'un fichier de configuration)

La présélection permet de définir les réponses aux questions posées pendant le processus d'installation, sans avoir à saisir manuellement les réponses pendant l'exécution de l'installation. Cela permet d'automatiser complètement la plupart des types d'installation et offre même certaines fonctionnalités non disponibles lors d'installations normales.

Copiez la préconfiguration pour l’installation normale sur votre propre étiquette:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • changez le myownoptionen ce que vous avez utilisé.

Maintenant, pour changer les paramètres. À debconf-get-selectionspartir de, debconf-utilsvous pouvez rechercher quels paramètres vous pouvez utiliser avec un logiciel spécifique.

Exemple de mise en place:

entrez la description de l'image ici

Et en ajoutant lamp-server à installer avec tasksel:

entrez la description de l'image ici

  • Si vous souhaitez ajouter les packages "openssh" et "build-essential", vous pouvez l'inclure dans le fichier de départ:

    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 utilisant les paramètres de debconf .
  • Un exemple de fichier preseed
  • Exemples concernant: localisation, configuration réseau, console réseau, horloge et heure, partitionnement
  • À la fin du fichier preseed, vous pouvez ajouter des packages (exemples aléatoires) comme ceci:

    % packages openssh-server mysql-server apache2

Installation hors ligne

Si vous ajoutez des packages et que ceux-ci NE sont PAS dans l'ISO, le programme d'installation les téléchargera à partir du référentiel. Si vous ne disposez pas d'une connexion Internet active, cela posera un problème. Vous devrez donc ajouter tous ces packages (et dépendances) à votre projet et les graver sur un DVD. Heureusement, le serveur ISO standard a beaucoup de place, mais méfiez-vous: les CD et / ou les DVD ont une taille limitée.

Téléchargez tous les packages DEB dont vous avez besoin et stockez-les ~/Downloads/. Ces 2 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/

Et cela mettra à jour notre projet avec les nouveaux packages:

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 2ème ligne crée une nouvelle somme de contrôle et n'est nécessaire que lors de l'ajout de packages.
  • le 3ème crée une image ISO de votre projet que vous pouvez graver sur un DVD.

Résultat:

entrez la description de l'image ici

Et maintenant, vous pouvez l'essayer en le gravant et en l'installant. Je conseillerais d'utiliser comme machine virtuelle car ce sera plus rapide pour tester l'ISO créé initialement (sinon vous continuez à redémarrer).

Et après l'installation de VirtualBox, je reçois le menu suivant:

entrez la description de l'image ici

Chasse aux insectes

Couru dans 1 problèmes 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

a probablement besoin d'être comme ça:

### 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

Ditch la ligne tasksel de vous ne voulez pas un serveur LAMP (ie. Apache, Mysql, Php)

Rinzwind
la source
Cela peut-il être utilisé pour les versions de bureau?
Braiam
MERCI BEAUCOUP!! Je ne peux vraiment pas vous remercier assez pour rendre ce processus facile et sans heurt! Je viens d'avoir un problème, après avoir installé VirtualBox et choisi d'installer mon serveur personnalisé, j'ai reçu ce message d'erreur! XHTML valide .
Shadin
Oui je l'ai fait. en fait, je préfère si vous jetez un oeil à mon fichier de départ [ megafileupload.com/fr/fichier/493602/…. Je ne suis pas sûr de la façon dont j'ai ajouté les paquets à la fin du fichier
Shadin
Oh! Merci! Je vais essayer ça et je reviendrai vers vous. J'aimerais également savoir s'il existe un moyen de supprimer des serveurs supplémentaires de l'image, tels que le serveur de messagerie, le serveur Web, JBOSS, etc. au cours de ce processus. Je souhaite l'inclure uniquement dans postgresql et ses packages.
Shadin
2
@shadin ça va regarder comment Lucio fait ça ;-) Commentaires nettoyés. Braiam: oui ça peut. Bien qu'il y ait beaucoup plus de choses à modifier sur le bureau, ceci est un début (kickstart fonctionne aussi si vous corrigez le problème, mais il est toujours limité par Ubuntu).
Rinzwind