Compare commits

..

No commits in common. "master" and "v1.0.0" have entirely different histories.

622 changed files with 82 additions and 98 deletions

View file

@ -3,51 +3,37 @@
## Utiliser
1. installer VirtualBox https://www.virtualbox.org/wiki/Downloads
2. télécharger la vm au format .ova ici : https://git.barnulf.net/epita/epitls_vm/releases/download/latest/epitls.ova
2. télécharger la vm au format .ova
3. importer la vm dans virtualbox (double cliquer le fichier)
## Contribuer
Vous pouvez améliorer cette machine virtuelle en contribuant à ce dépot.
- Pour ajouter des logiciels, les rajouter dans la liste `packages` dans `src/iso_root/user_configuration.json`.
- Pour ajouter des fichiers à l'installation par défaut :
- Les intégrer dans `src/iso_root/content`.
- Modifier `src/iso_root/post_install.sh` pour installer les fichiers au bon endroit.
Pour publier vos changements, ouvrez une PR.
Si je ne réagis pas, me contacter par discord (@majorbarnulf) ou mail (matthieu@imagevo.fr).
### Dépendances
Les logiciels suivants sont nécessaires pour générer la VM à partir de ce dépot.
- pacman
- wget
- net-tools
- archiso
- virtualbox
Archlinux est recommandé comme OS host pour générer la VM.
### Fabrication
La fabrication de la machine virtuelle est assez farfelue mais ça marche assez bien.
Les étapes de la fabrication sont les suivantes :
- création d'un ISO d'installation archlinux
- généré à partir du profil dans `./src/profile`
- contient un script d'installation automatisé qui est exécuté au boot `./src/profile/airootfs/root/.zlogin`
- généré à partir du profil dans `./profile`
- contient un script d'installation automatisé qui est exécuté au boot `./profile/airootfs/root/.zlogin`
- création d'une VM vide avec VirtualBox
- bloc de commandes dans `./src/build.sh`
- bloc de commandes dans `./build.sh`
- Boot de la VM sur l'ISO
- aussi dans `./src/build.sh`
- aussi dans `./build.sh`
- l'ISO installe la distribution
- installe arch `archinstall` avec la configuration `./src/profile/airootfs/root/user_*.json`
- quelques ajustements avec `./src/profile/airootfs/root/post_install.sh`
- installe arch `archinstall` avec la configuration `./profile/airootfs/root/user_*.json`
- quelques ajustements avec `./profile/airootfs/root/post_install.sh`
- stop une fois la machine virtuelle configurée
- exporte la VM au format OVA dans `./output/epitls.ova`

73
build.sh Executable file
View file

@ -0,0 +1,73 @@
#!/bin/sh
set -e
cd "$(dirname "$(realpath "$0")")"
alias log='echo [build.sh]'
VBOX_VERSION=$(VBoxManage --version | cut -d 'r' -f 1)
ETH_DEV=$(route | grep '^default' | grep -o '[^ ]*$')
VM_NAME="epitls_build"
log "updating environment"
sudo rm -fr tmp
mkdir -p tmp output
if ! [ -f output/guest_add.iso ]
then wget -O output/guest_add.iso "https://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso"
fi
AURS="zerofree"
log "creating package db"
rm -fr /tmp/custom-db
mkdir /tmp/custom-db
for aur in $AURS
do
git clone "https://aur.archlinux.org/$aur.git" "/tmp/custom-db/$aur"
( cd "/tmp/custom-db/$aur" && makepkg; )
mv /tmp/custom-db/$aur/$aur-* /tmp/custom-db/
repo-add /tmp/custom-db/custom.db.tar.gz /tmp/custom-db/$aur-*.pkg.tar.zst
done
log "creating iso"
sudo mkarchiso -v -w $PWD/tmp/wdir -r -o $PWD/output $PWD/profile
rm -f output/install.iso
mv output/archlinux-*.iso output/install.iso
if VBoxManage showvminfo $VM_NAME 2> /dev/null
then log "disposing old VM"
VBoxManage unregistervm $VM_NAME --delete-all
fi
log "creating VM"
VBoxManage createvm --name=$VM_NAME --ostype=ArchLinux_64 --register
VBoxManage modifyvm $VM_NAME --cpus=4 --memory=4096 --vram=12 --firmware=efi
VBoxManage modifyvm $VM_NAME --nic1=bridged --bridgeadapter1=$ETH_DEV
VBoxManage createhd --filename=$PWD/tmp/drive.vdi --size=$((1024 * 20)) --variant=Standard
VBoxManage storagectl $VM_NAME --name=SATA --add sata --bootable on
VBoxManage storageattach $VM_NAME --storagectl=SATA --port=0 --device=0 --type=hdd --medium=$PWD/tmp/drive.vdi
VBoxManage storagectl $VM_NAME --name=IDE --add ide
VBoxManage storageattach $VM_NAME --storagectl=IDE --port=0 --device=0 --type=dvddrive --medium=$PWD/output/install.iso
VBoxManage storageattach $VM_NAME --storagectl=IDE --port=1 --device=1 --type=dvddrive --medium=$PWD/output/guest_add.iso
log "running VM with iso"
virtualboxvm --startvm $VM_NAME --dvd $PWD/output/install.iso
log "exporting VM"
VBoxManage storageattach $VM_NAME --storagectl=IDE --port=0 --device=0 --medium=none # removes iso after run
VBoxManage storageattach $VM_NAME --storagectl=IDE --port=1 --device=1 --medium=none # removes iso after run
VBoxManage modifyhd $PWD/tmp/drive.vdi -compact
rm -f $PWD/output/epitls.ova
VBoxManage export $VM_NAME --output=$PWD/output/epitls.ova --vsys=0 --vmname=epitls --description="VM pour le développement à EPITA Toulouse."
log "disposing VM"
VBoxManage unregistervm $VM_NAME --delete-all

Some files were not shown because too many files have changed in this diff Show more