Comment créer une ISO de serveur Ubuntu personnalisée?

41

Je voudrais créer une version personnalisée d’ISO Ubuntu Server 12.04, mais je n’ai pas trouvé de méthode claire pour 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?

    
posée Shadin 23.01.2014 - 12:37
la source

1 réponse

60

Télécharger

Téléchargez l'ISO du serveur Ubuntu à partir de cet emplacement . Vous avez la possibilité d'aller 32 bits ou 64 bits. Le nom du 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, donc ajustez les commandes au téléchargement que vous avez fait. Conservez une copie de votre téléchargement pour 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 suppose également que nous utilisons ~/Downloads/ pour faire tout notre travail.

Configuration initiale

Cela va créer 2 répertoires "iso" et "isoNew" dans votre répertoire Downloads, monter l'ISO et copier le contenu de "iso" sur "isoNew" pour démarrer un nouveau projet.

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

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: https://ubuntuplace.info/questions/1940/comment-creer-une-iso-de-serveur-ubuntu-personnalisee"https://i.stack.imgur.com/1gfOH.png"> 

Résultat:

Ajout d’une option du menu de démarrage

Les options de menu du programme d'installation sont stockées dans isolinux/txt.cfg et vous pouvez créer de nouvelles options entre default install et label install .

Cela créera une nouvelle option appelée "Installer le 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 le serveur Ubuntu personnalisé" est le texte qui apparaîtra dans le menu de démarrage.
  • Si vous souhaitez que votre option de menu soit définie par défaut, il vous suffit de remplacer default install par default 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é "lamperver" comme étiquette et ma graine portera également le nom "lampserver".

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 exécuter automatiquement l'installation et la configuration du système d'exploitation sans surveillance.

Documentation sur la préconfiguration / kickstart pour Ubuntu . Ubuntu a un support limité pour kickstart (et préconfiguration); L'une des choses manquantes est une interface graphique pour la préconfiguration. Kickstart a des options pour cela (voir les images) mais celles-ci ne semblent pas fonctionner sur Ubuntu. Vous pouvez le faire manuellement (voir la section Présélection ci-dessous).

Installation et démarrage de kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** AVERTISSEMENT **

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

Après cela, ksconfig a fonctionné et il va lancer un éditeur de configuration qui vous permettra de manipuler beaucoup d'options.

Voir la Red Hat Linux 7.2: la personnalisation officielle Red Hat Linux Guide pour une description de toutes les options que vous pouvez définir.

Après avoir terminé, enregistrez les modifications dans un fichier ks.cfg et copiez-le dans le fichier ISO que nous modifions:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Si vous modifiez quelque chose, l'installateur demandera cette information si elle est considérée comme valide. Si vous n'avez pas modifié une option, l'installateur vous demandera toujours de répondre.
  • Vous pouvez également télécharger les fichiers kickstart et les enregistrer sous la forme ks-custom.cfg in ~/Downloads/newIso/preseed/ .

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

Et en l'enregistrant dans le projet:

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

Présélection permet de définir les réponses aux questions posées lors de l’installation, sans avoir à saisir manuellement les réponses l'installation est en cours d'exécution. Cela permet d’automatiser entièrement la plupart des types d’installation et offre même certaines fonctionnalités qui ne sont pas 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
  • remplacez le myownoption par ce que vous avez utilisé.

Maintenant, pour modifier les paramètres. En utilisant debconf-get-selections du debconf-utils , vous pouvez déterminer quels paramètres vous pouvez utiliser avec des logiciels spécifiques.

Exemple de configuration:

Et l’ajout de lamp-server à installer avec tasksel:

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

    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 debconf .
  • Un exemple de fichier de préconfiguration
  • Exemples concernant: Localisation, configuration réseau, console réseau, horloge et temps, partitionnement
  • A la fin du fichier de préconfiguration, 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 depuis le référentiel. Si vous ne disposez pas d'une connexion Internet active, cela posera problème. Vous devrez donc ajouter tous ces packages (et dépendances) à votre projet et les graver sur un DVD. Heureusement, le serveur normal ISO a beaucoup de place mais méfiez-vous: les CD et / ou les DVD ont une taille limitée.

Téléchargez tous les paquets DEB dont vous avez besoin et stockez-les dans ~/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 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 2ème ligne crée une nouvelle somme de contrôle et n’est nécessaire que lors de l’ajout de paquets.
  • le 3ème fait un ISO de votre projet que vous pouvez graver sur un DVD.

Résultat:

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

Et après avoir installé VirtualBox, je reçois le menu suivant:

Chasse aux insectes

Ran en 1 problèmes lors de l'installation: la valeur par défaut n'a pas été sélectionnée.

Shadin. À partir de votre fichier source dans un 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 ressembler à ceci:

### 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 que vous ne voulez pas d’un serveur LAMP (par exemple, Apache, Mysql, Php)

    
réponse donnée Rinzwind 23.01.2014 - 15:12
la source

Lire d'autres questions sur les étiquettes