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
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 !
Que faire si ma VirtualBox mouline ?
Pour la création de l’image, il a fallu choisir 4 CPUs et 4Go de RAM. Parfois, votre machine n’a pas autant de ressources à consacrer à virtualbox. Vous pouvez modifier les ressources utilisées par l’image virtualbox depuis VirtualBox, dans les paramètres de l’image pour réduire le nombre de CPUs ou la quantité de RAM utilisée au besoin.
Que faire en cas d’espace disque maximal atteint ?
A la création de l’image, nous avons spécifié 20 Go d’espace disque. VirtualBox va à priori réserver d’abord 10 Go et ne pas tout de suite s’autoriser à utiliser les 20 Go. Il y a une petite manipulation à réaliser pour étendre le volume logique pour qu’il occupe plus de place sur le volume physique comme indiqué sur ce lien https://askubuntu.com/a/1259917.
Essentiellement, la manipulation se résume à exécuter, depuis l’image :
Vous pourrez vérifier que l’espace disponible est plus important avec :
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-dataetcd-files/meta-datasont 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 sectionidentityet 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 :
Ce qu’on peut obtenir par les quelques commandes shell :
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/.
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
SHA256SUMSen bas de la page http://releases.ubuntu.com/noble/
Construction de l’image
Attention la commande précédente peut échouer si les modules kvm sont chargés. Vous pouvez supprimer l’erreur, le temps de construire l’image avec :
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 :
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-dataetmeta-datasur 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.






