Machine Virtuelle

Utilisation d’une image ubuntu VirtualBox

Importer une image virtualbox

Une image ubuntu 24.04 a été construire pour vous. L’image est disponible en suivant les liens ci-dessous :

Pour l’utiliser, il vous faut disposer de Virtualbox.

Pour la suite, on utilise VirtualBox v7.1.10. Une fois virtualbox installé et exécuté, il suffit d’aller dans le menu “Import appliance”, puis “Finish”:

Import de l’image ova depuis virtualbox Import de l’image ova depuis virtualbox

L’image est alors chargée par VirtualBox et une fois terminé, vous pouvez lancer l’image en double cliquant sur “ubuntu-24.04-desktop”.

L’image est maintenant chargée par Virtualbox L’image est maintenant chargée par Virtualbox

Et vous voila avec une ubuntu démarrée. Le login est csstudent et le mot de passe csstudent.

C’est parti, ubuntu est démarré C’est parti, ubuntu est démarré

Important En général, lors du premier démarrage, la résolution ne se pas terrible, l’écran du système invité ne se redimensionnant pas avec la fenêtre. Pour un meilleur support du graphisme et quelques autres bonus, il faut installer les extensions comme indiqué dans la section suivante.

Sur l’image ARM64, les extensions sont déjà installées. Pour cette architecutre, le passage en plein écran ne semble pas augmenter la résolution du bureau Ubuntu. Par contre, si vous augmentez progressivement la taille de la fenêtre, la résolution de l’image Ubuntu augmente progressivement, curieux ..

Installer les extensions

Un certain nombre de fonctionnalités additionnelles sont offertes grâces aux “Guest additions”.

Avant de démarrer la machine, il faut d’abord ajouter un contrôleur IDE optique. Pour cela, allez dans les propriétés de l’image “ubuntu-24.04-desktop”, puis dans “Storage” et cliquez sur le petit CD avec le plus à côté de “Controller: IDE Controller” :

Ajout d’un lecteur CD Ajout d’un lecteur CD

Ce qui va vous permettre d’ajouter l’ISO des “Guest additions” comme sur l’image ci-dessous :

Insertion des guest additions Insertion des guest additions

Il faut sélectionner l’ISO et cliquez sur “Choose”.

Vous pouvez maintenant démarrer l’image en double cliquant sur “ubuntu-24.04-desktop”. Une fois démarrée et que vous êtes loggés, allez dans le menu “Devices / Insert Guest Additions CD image”. Puis, ouvrez un terminal, naviguez jusqu’au répertoire contenant le CD monté et exécutez la commande

sudo ./VBoxLinuxAdditions.run

Exécution de l’installeur des GuestAdditions Exécution de l’installeur des GuestAdditions

Si tout se passe bien, vous obtenez l’image ci-dessous indiquant que l’installation s’est bien déroulée.

Fin de l’installation des guest additions Fin de l’installation des guest additions

Dans le cas de l’illustration, on voit immédiatement les effets de l’installation réussie : la résolution de la machine est bien meilleure !

Création automatique d’une image ubuntu Virtualbox avec Packer

Dans cette partie, on détaille comment l’image a été construite. Pour scripter la création d’une image virtual box ubuntu, on utilise :

  • Packer de HashiCorp qui permet de gérer la création de l’image, le provisionning, le chargement de l’iso, le boot
  • autoinstall de canonical qui permet de lancer une installation automatique à partir d’un iso ubuntu desktop

Warning

Attention, le processus est un peu chatouilleux. D’expérience, il arrive parfois :

  • que la construction plante, en général dans l’installeur ubuntu. Sans vraiment savoir pourquoi (ram pleine ? pas de réseau ? installeur subsiquity qui crash ?)
  • les fichiers d’auto-install cd-files/user-data et cd-files/meta-data sont sensibles aux espaces ! Dans ces fichiers, ce sont des espaces, ne pas les remplacer par des tab !! Sinon l’installeur ubuntu bootera comme si ces fichiers n’existent pas et ne lancera pas l’installation automatique
  • dans user-data, l’utilisateur est créé dans la section identity et le mot de passe est redéfinit (c’est le même !!!) dans les late-commands, c’est volontaire. Pour une raison que j’ignore, si je ne refait pas un chpasswd, le mot de passe n’est pas reconnu, on ne peut pas se logger

Installation de packer

Pour disposer de packer, il suffit de suivre la doc.

Fichiers nécessaires

Pour la construction de l’image, on met en place la structure de répertoire ci-dessous :

dir
├── cd-files
   ├── meta-data
   ├── user-data
└── ubuntu-24.04.pkr.hcl

Ce qu’on peut obtenir par les quelques commandes shell :

mkdir cd-files
wget https://spe-info.metz.centralesupelec.fr/install-party/virtual-machine/Virtualbox/ubuntu-24.04.pkr.hcl
wget https://spe-info.metz.centralesupelec.fr/install-party/virtual-machine/Virtualbox/cd-files/meta-data -O cd-files/meta-data
wget https://spe-info.metz.centralesupelec.fr/install-party/virtual-machine/Virtualbox/cd-files/user-data -O cd-files/user-data

Récupération de l’iso ubuntu desktop

On récupère l’image de base, ici une 24.04 sur http://releases.ubuntu.com/noble/.

wget http://releases.ubuntu.com/noble/ubuntu-24.04.2-desktop-amd64.iso

Si l’ISO n’existe plus (par exemple à cause d’une montée de version), on récupère la nouvelle et on met à jour le fichier ubuntu-24.04.pkr.hcl qui contient deux variables :

Construction de l’image

packer init
packer build ubuntu-24.04.pkr.hcl

Le packer init va en particulier récupérer les plugins nécessaires. Si le packer build râle de l’absence du plugin virtualbox, on peut l’installer à la main :

packer plugins install github.com/hashicorp/virtualbox

En sortie, packer aura produit le fichier output-ubuntu-24.04-desktop/ubuntu-24.04-desktop.ova.

On peut l’importer dans VirtualBox (File/Import appliance) et au boot, on a un bureau gnome avec l’utilisateur csstudent/csstudent .

La construction de l’image met 15 minutes environ. Le principe c’est :

  • packer construit la virtualbox, boot le système et injecte la commande de boot définit dans boot_command. Packer rends aussi disponibles les fichiers user-data et meta-data sur un serveur web,
  • ubuntu prends le relais et accès aux fichiers d’autoinstall. Il installe et configure le système
  • packer reprends la main une fois que le serveur ssh tourne sur l’ubuntu (au reboot du late-commands) et lance ses directives de provionning
  • packer exporte l’image ova

Customization

On peut ajouter des étapes de provisionning avec deux possibilités :

  • soit on customize l’autoinstall avec les clés comme packages, snaps, etc…; On peut aussi ajouter des late-commands

  • soit on ajoute des appels dans le fichier packer. A la fin du fichier .pkr.hcl, on trouve des diretives provisionner

Si on veut changer le mot de passe de l’utilisateur csstudent, ça se passe dans le fichier user-data. Il faut :

  • modifier la section identity, password en mettant le hash du nouveau mot de passe : mkpasswd --method=SHA-512 --rounds=4096 monnouveaumotdepasse
  • modifier la ligne echo "csstudent:csstudent" | chroot /target /usr/sbin/chpasswd. Le début est echo "login:password"

C’est débile à priori d’avoir à le changer à 2 endroits mais, de mes expériences, si on le définit uniquement dans Identity, l’utilisateur existe sûrement mais le mot de passe n’est pas reconnu au boot. C’est une solution empirique que de définir l’utilisateur à 2 endroits.