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 :
- image pour architecture x86 ubuntu-24.04-desktop.ova,
- image pour arm64 (en général les Mac) ubuntu2404-arm64.ova
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”:
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”.
Et vous voila avec une ubuntu démarrée. Le login est csstudent
et le mot de
passe csstudent
.
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” :
Ce qui va vous permettre d’ajouter l’ISO des “Guest additions” comme sur l’image ci-dessous :
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
Si tout se passe bien, vous obtenez l’image ci-dessous indiquant que l’installation s’est bien déroulée.
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
etcd-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 sectionidentity
et le mot de passe est redéfinit (c’est le même !!!) dans leslate-commands
, c’est volontaire. Pour une raison que j’ignore, si je ne refait pas unchpasswd
, 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 :
- iso_url : nom du fichier iso
- iso_checksum : checksum de l’iso qu’on retrouve dans le fichier
SHA256SUMS
en bas de la page http://releases.ubuntu.com/noble/
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 fichiersuser-data
etmeta-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 diretivesprovisionner
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 estecho "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.