create_vm: main implementation done
This commit is contained in:
@@ -9,11 +9,23 @@ export VM_CPU=2
|
|||||||
# Taille de la RAM en Mo
|
# Taille de la RAM en Mo
|
||||||
export VM_MEM=4096
|
export VM_MEM=4096
|
||||||
|
|
||||||
|
# Taille de la mémoire vidéo en Mo
|
||||||
|
export VM_VID_MEM=128
|
||||||
|
|
||||||
# Taille di disque en Go
|
# Taille di disque en Go
|
||||||
export VM_DISK_SIZE=42
|
export VM_DISK_SIZE=42
|
||||||
|
|
||||||
# Nom de l'interface de l'hôte à bridger
|
# Périférique de démarrage (3 maximum), none si aucun
|
||||||
export VM_IF_BRIDGE=eth1
|
export VM_BOOT1=disk
|
||||||
|
export VM_BOOT2=none
|
||||||
|
export VM_BOOT3=none
|
||||||
|
|
||||||
# Liste des répertoire de l'hote à partager avec la VM (séparé par des virgules)
|
# Nom de l'interface de l'hôte à bridger
|
||||||
export VM_SHARES="/home,/media,/calcul/$HOSTNAME"
|
export VM_IF_BRIDGE=¨eth0
|
||||||
|
|
||||||
|
# OS cible de la future VM ("vboxmanage list ostypes" pour la liste)
|
||||||
|
export VM_OS=Windows10_64
|
||||||
|
|
||||||
|
# Liste des répertoire de l'hote à partager avec la VM (séparé par des espaces)
|
||||||
|
export VM_SHARES_NAME="home media calcul"
|
||||||
|
export VM_SHARES_PATH="/home /media /calcul/$HOSTNAME"
|
||||||
|
|||||||
@@ -40,14 +40,6 @@ LOCAL_USERS="$MAINUSER"
|
|||||||
# * lubuntu : bureau LXQT très léger
|
# * lubuntu : bureau LXQT très léger
|
||||||
UBUNTU_FLAVOR=xubuntu
|
UBUNTU_FLAVOR=xubuntu
|
||||||
|
|
||||||
# Booléen indiquant une ou plusieurs futures VM
|
|
||||||
# Les lignes suivantes devraient être commentés si à false
|
|
||||||
#WITH_VM=yes
|
|
||||||
#. $MYPATH/conf/includes/legos_vm_win7.conf.sh
|
|
||||||
|
|
||||||
# Nom de la VM
|
|
||||||
#VM_NAME=vm-levasseur
|
|
||||||
|
|
||||||
# Logiciels optionnels non packagé Debian
|
# Logiciels optionnels non packagé Debian
|
||||||
# export WITH_MATLAB="true"
|
# export WITH_MATLAB="true"
|
||||||
# export WITH_IDL="true"
|
# export WITH_IDL="true"
|
||||||
@@ -73,6 +65,18 @@ CALCLEVEL=""
|
|||||||
# Doit on forcer l'effacement du disque ?
|
# Doit on forcer l'effacement du disque ?
|
||||||
FORCEBLANK=false
|
FORCEBLANK=false
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# ------------------------- Section machine virtuelle --------------------------
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Booléen indiquant une ou plusieurs futures VM
|
||||||
|
# Les lignes suivantes devraient être commentés si à false
|
||||||
|
WITH_VM=yes
|
||||||
|
. $MYPATH/conf/includes/legos_vm_win7.conf.sh
|
||||||
|
|
||||||
|
# Nom de la VM
|
||||||
|
VM_NAME=vm-levasseur
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# -------------------------- Section modules d'init ----------------------------
|
# -------------------------- Section modules d'init ----------------------------
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -16,19 +16,110 @@ export DEP_create_vm="upgrade_dist install_pkg"
|
|||||||
|
|
||||||
create_vm()
|
create_vm()
|
||||||
{
|
{
|
||||||
if [[ WITH_VM != "yes" ]]; then
|
if [[ $WITH_VM != "yes" ]]; then
|
||||||
prnt I "Cette machine n'est pas configurée pour la virtualisation, rien à faire."
|
prnt I "Cette machine n'est pas configurée pour la virtualisation, rien à faire."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pkginst virtualbox
|
pkginst virtualbox
|
||||||
# to be continued
|
|
||||||
|
# Create welcoming dirs
|
||||||
|
mkdir -pv $VM_ROOT/{.config/VirtualBox,vms/$VM_NAME}
|
||||||
|
|
||||||
|
# Create symbolic links (because of rights only main user can start it)
|
||||||
|
ln -sv $VM_ROOT/.config/VirtualBox /root/.config/VirtualBox
|
||||||
|
ln -sv $VM_ROOT/.config/VirtualBox /home/$MAINUSER/.config/VirtualBox
|
||||||
|
|
||||||
|
local accel_2d=off
|
||||||
|
case $VM_OS in
|
||||||
|
Windows*)
|
||||||
|
accel_2d=on
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Create emty VM
|
||||||
|
local targetdir=$VM_ROOT/vms/$VM_NAME
|
||||||
|
vboxmanage createvm --ostype $VM_OS --basefolder $targetdir \
|
||||||
|
--name $VM_NAME --register
|
||||||
|
|
||||||
|
# Give main caracteristics
|
||||||
|
vboxmanage modifyvm $VM_NAME \
|
||||||
|
--cpus $VM_CPU --memory $VM_MEM --vram $VM_VID_MEM \
|
||||||
|
--boot1 $VM_BOOT1 --VM_BOOT2 $VM_BOOT2 --boot3 $VM_BOOT3 \
|
||||||
|
--nic1 bridged --bridgeadapter1 $VM_IF_BRIDGE \
|
||||||
|
--accelerate2dvideo $accel_2d \
|
||||||
|
--clipboard bidirectional --draganddrop disabled
|
||||||
|
|
||||||
|
# Add a SATA controler
|
||||||
|
vboxmanage storagectl $VM_NAME \
|
||||||
|
--name sata0 --add sata --controller IntelAHCI --bootable on \
|
||||||
|
--hostiocache on --portcount 6
|
||||||
|
|
||||||
|
# Create a virtual HDD
|
||||||
|
vboxmanage createmedium \
|
||||||
|
--size $VM_DISK_SIZE --variant Fixed --filename $targetdir/$VM_NAME.vdi
|
||||||
|
|
||||||
|
# Connect the created HDD to the VM
|
||||||
|
vboxmanage storageattach $VM_NAME \
|
||||||
|
--storagectl sata0 --port 1 --device 0 --type hdd \
|
||||||
|
--medium $targetdir/$VM_NAME.vdi
|
||||||
|
|
||||||
|
unset targetdir accel_2d
|
||||||
|
|
||||||
|
# Add empty DVD
|
||||||
|
vboxmanage storageattach $VM_NAME --storagectl sata0 --port 2 --device 0 \
|
||||||
|
--medium emptydrive
|
||||||
|
|
||||||
|
# Add shares
|
||||||
|
local share= i=0
|
||||||
|
for share in $VM_SHARES_NAME; do
|
||||||
|
(( i+=1 ))
|
||||||
|
|
||||||
|
local j=0 hostpath=""
|
||||||
|
for path in $VM_SHARES_PATH; do
|
||||||
|
(( j+=1 ))
|
||||||
|
if [[ $i -eq $j ]]; then
|
||||||
|
hostpath=$path
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset j
|
||||||
|
|
||||||
|
vboxmanage sharedfolder add $VM_NAME \
|
||||||
|
--name ${VM_SHARES_NAME,,} --hostpath $hostpath
|
||||||
|
done
|
||||||
|
unset share i
|
||||||
}
|
}
|
||||||
|
|
||||||
precheck_create_vm()
|
precheck_create_vm()
|
||||||
{
|
{
|
||||||
if [[ $WITH_VM == "true" ]]; then
|
if [[ $WITH_VM == "yes" ]]; then
|
||||||
: #todo
|
if [[ -z $VM_NAME ]]; then
|
||||||
|
prnt E "La machine virtuelle à créer doit avoir un nom."
|
||||||
|
die 181
|
||||||
|
fi
|
||||||
|
if [[ -z VM_CPU || -z VM_MEM || -z VM_OS || -z VM_ROOT || \
|
||||||
|
-z VM_BOOT1 || -z VM_BOOT2 || -z VM_BOOT3 || -z VM_VID_MEM ||
|
||||||
|
-z VM_IF_BRIDGE || -z VM_DISK_SIZE ]]; then
|
||||||
|
prnt E "Une variable de description de la machine virtuelle n'est pas déclarée !"
|
||||||
|
die 181
|
||||||
|
else
|
||||||
|
prnt I "La machine virtuelle \"$VM_NAME\" sera crée dans $VM_ROOT..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
local share= i=0 j=0
|
||||||
|
for share in $VM_SHARES_NAME; do
|
||||||
|
(( i+=1 ))
|
||||||
|
done
|
||||||
|
for share in $VM_SHARES_PATH; do
|
||||||
|
(( j+=1 ))
|
||||||
|
done
|
||||||
|
unset share
|
||||||
|
if [[ $i -eq $j ]]; then
|
||||||
|
prnt I "La machine virtuelle aura accès à $i répertoires de l'hôte."
|
||||||
|
else
|
||||||
|
prnt E "Le nombre de partage et de chemin à partager diffère !"
|
||||||
|
die 182
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
prnt I "Aucune machine virtuelle à installer."
|
prnt I "Aucune machine virtuelle à installer."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user