An open API service indexing awesome lists of open source software.

https://github.com/kevin-doolaeghe/initiation-xen

Installation de Xen Hypervisor sur Debian
https://github.com/kevin-doolaeghe/initiation-xen

documentation learning-by-doing xen

Last synced: 5 months ago
JSON representation

Installation de Xen Hypervisor sur Debian

Awesome Lists containing this project

README

          

# Installation de Xen Hypervisor sur Debian

## Auteur

### Kevin Doolaeghe

## Installation & préparation de l'environnement Debian

* Passage en mode super-utilisateur à l'aide de la commande `su`

* Ajout du dossier `/sbin` à la variable d’environnement PATH pour utiliser les binaires qu’il contient :
```
export PATH=$PATH:/sbin
```

* Mise à jour du système :
```
apt update && apt upgrade
```

* Installation des paquets ci-dessous :
```
apt install build-essential net-tools bridge-utils ethtool linux-image-amd64 xen-hypervisor-4.14-amd64 xen-utils-4.14 xen-tools iptables-persistant bash-autocompletion
```
    → `build-essential` contient les paquets relatifs à la compilation
    → `net-tools` contient les paquets de base pour la configuration réseau
    → `bridge-utils` permet de créer et gérer les ponts
    → `ethtool` est un utilitaire permettant d'afficher et de modifier certains paramètres de la carte réseau
    → `linux-image-amd64` est l'image de Debian utilisée pour les machines virtuelles
    → `xen-hypervisor-4.14-amd64`, `xen-utils-4.14` et `xen-tools` sont les paquets d'installation de Xen
    → `iptables-persistant` donne accès à la sauvegarde persistante de la configuration `iptables`
    → `bash-autocompletion` permet d'utiliser l'auto-complétion dans les commandes shell

* Décommenter la section suivante dans le fichier `/etc/bash.bashrc` afin d'activer l'auto-complétion :
```
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
```

* Edition du fichier `/etc/ssh/sshd_config` pour autoriser l'accès SSH avec l'utilisateur root :
```
PermitRootLogin yes
```

### Configuration réseau

* Désactivation de `NetworkManager` :
```
systemctl stop NetworkManager
systemctl disable NetworkManager
```
    → La configuration Wifi sera effectuée à l'aide de l'utilitaire `wpa_supplicant`
    → La configuration IP sera effectuée à l'aide du fichier `/etc/network/interfaces`

### 1. Configuration du Wifi :

* Configuration du SSID et du mot de passe du réseau Wifi :
```
wpa_passphrase '' | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
```
    → La configuration du réseau Wifi se trouve donc maintenant dans le fichier `/etc/wpa_supplicant/wpa_supplicant.conf`

* Démarrage automatique de `wpa_supplicant` :
```
cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
```

* Modification du fichier `/etc/systemd/system/wpa_supplicant.service` :
```
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlo1
Restart=always
```
Commenter la ligne `Alias=dbus-fi.w1.wpa_supplicant1.service` à l'aide du caractère `#`.

* Activer le service `wpa_supplicant` :
```
systemctl enable wpa_supplicant.service
```

* Vérifier le statut du service :
```
iwconfig
```

### 2. Configuration IP

* Modification de la configuration réseau à partir du fichier `/etc/network/interfaces` :
```
auto lo
iface lo inet loopback

auto eno1
allow-hotplug eno1
iface eno1 inet manual

auto wlo1
iface wlo1 inet static
address 10.0.0.252/24
gateway 10.0.0.254

auto br0
iface br0 inet static
bridge_ports eno1
bridge_waitport 0
address 10.0.20.254/24
gateway 10.0.20.254
```
    → `lo` est l'interface de bouclage
    → `eno1` est l'interface Ethernet
    → `wlo1` est l'interface Wifi
    → `br0` est le pont
    → `10.0.0.0/24` est le réseau des local
    → `10.0.20.0/24` est le réseau des VM

* Ajout des serveurs DNS à partir du fichier `/etc/resolv.conf` :
```
nameserver 10.0.0.254
nameserver 8.8.8.8
```

## Configuration de l'accès réseau pour la VM

* Suppression des translations NAT déjà configurées :
```
iptables -t nat -F
```

* Ajout d'une mascarade pour associer le réseau Wifi à celui de la VM :
```
iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE
iptables -t nat -L
```

* Sauvegarder la configuration (le paquet `iptables-persistant` doit être installé) :
```
iptables-save > /etc/iptables/rules.v4
```

Si l'ordinateur utilisé a un BIOS UEFI, il faut modifier l'entrée GRUB de Xen pour autoriser son démarrage.
    → Modifier le fichier `/etc/grub.d/20_linux_xen` en ajoutant `efi=no-rs` aux arguments de la variable `xen_rm_opts`

## Création d'une machine virtuelle

* Création d’une image pour la VM :
```
xen-create-image --hostname=demineur --ip=10.0.20.1 --gateway=10.0.20.254 --netmask=255.255.255.0 --dir=/usr/local/xen --password=pasglop --dist=buster
```
    → Dossier de stockage des données de la VM : `/usr/local/xen/domains/demineur`
    → Fichier de configuration de la VM : `/etc/xen/demineur.cfg`

* Création des partitions virtuelles :
```
vgcreate storage /dev/sda7
lvcreate -L10G -n demineur-home storage
lvcreate -L10G -n demineur-var storage
```

* Vérification des partitions :
```
lvdisplay
lsblk
```

* Formatage de la partition virtuelle :
```
mkfs.ext4 /dev/storage/demineur-home
mkfs.ext4 /dev/storage/demineur-var
```

* Modification de `/etc/xen/demineur.cfg` :
    → Ajout des partitions virtuelles dans la variable `disk` :
```
'phy:/dev/storage/demineur-home,xvda3,w',
'phy:/dev/storage/demineur-var,xvda4,w'
```
    → Ajout du pont dans dans la variable `vif` :
```
vif = [ 'mac=00:16:3E:D8:97:68, bridge=br0' ]
```

* Création de la VM :
```
xl create /etc/xen/demineur.cfg
```

* Montage des partitions virtuelles :
```
mount /dev/xvda3 /mnt/xvda3
mount /dev/xvda4 /mnt/xvda4
```

* Copie des données des répertoires `/home` et `/var` :
```
cp -r /home /mnt/xvda3
cp -r /var /mnt/xvda4
```

* Démontage des partitions virtuelles :
```
umount /mnt/xvda3
umount /mnt/xvda4
```

* Ajout des partitions au fichier `/etc/fstab` :
```
/dev/xvda3 /home /ext4 default 0 2
/dev/xvda4 /var /ext4 default 0 2
```

## Utilisation de la VM

* Affichage du mot de passe de la VM :
```
tail -f /var/log/xen-tools/demineur.log
```

* Affichage de l’état des VM :
```
xl list
```

* Connexion à la VM :
```
xen console demineur
```
    → Pour quitter le shell de la VM, il faut entrer `Ctrl`+`5`

* Changement du mot de passe :
```
passwd root
```

* Mise à jour de la liste des paquets :
```
apt update
```

## Fichier de configuration complet de la machine virtuelle :

```
#
# Configuration file for the Xen instance demineur, created
# by xen-tools 4.9 on Tue Oct 5 21:07:47 2021.
#

#
# Kernel + memory size
#

bootloader = 'pygrub'

vcpus = '1'
memory = '256'

#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'file:/usr/local/xen/domains/demineur/disk.img,xvda2,w',
'file:/usr/local/xen/domains/demineur/swap.img,xvda1,w',
'phy:/dev/storage/demineur-home,xvda3,w',
'phy:/dev/storage/demineur-var,xvda4,w'
]

#
# Physical volumes
#

#
# Hostname
#
name = 'demineur'

#
# Networking
#
vif = [ 'mac=00:16:3E:D8:97:68, bridge=br0' ]

#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
```

## Sources

* [Guide pratique Xen](https://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide)
* [Démarrer Xen avec un BIOS UEFI](https://wiki.xenproject.org/wiki/Xen_EFI#Compatibility_of_UEFI_Host_Firmware.2C_Xen_and_UEFI_Runtime_Services)
* [Bridge avec interface WLAN](https://unix.stackexchange.com/questions/363332/how-do-i-configure-a-network-interface-bridge-from-wifi-to-ethernet-with-debian)