Post

Qemu/KVM PC1 - installation machine virtuelle Archlinux XFCE

Qemu/KVM PC1 - installation machine virtuelle Archlinux XFCE

On va créer et installer Archlinux XFCE dans une machine virtuelle montée sur Archlinux en suivant la documentation installation archlinux (FR) car EndavourOS XFCE, qui est une distribution très proche d’archlinux, ne peut pas être installé avec “calamarès” sur un système partitionné LVM

Prérequis

Qemu/KVM est installé sur la machine hôte

Réseau host-bridge

Vérification

Liste des réseaux déclarés

1
virsh net-list --all
1
2
3
4
 Nom           État      Démarrage automatique   Persistent
-------------------------------------------------------------
 default       inactif   no                      Oui
 host-bridge   actif     Oui                     Oui

création réseau host-bridge si inexistant

1
virsh net-define host-bridge.xml
1
2
3
4
5
<network>
  <name>host-bridge</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>

Avant la création d’une machine virtuelle, le réseau doit être actif

1
sudo virsh net-start host-bridge    # virsh net-autostart host-bridge

Configurer le réseau pour un lancement au démarrage du serveur

1
sudo virsh net-autostart host-bridge    # Network host-bridge marked as autostarted

Création VM archlinux

Créer la machine virtuelle : archlinux

Machine Virtuelle : archlinux
Processeurs : 2
Mémoire : 4096 Mo Disque dur SATA : /home/yann/virtuel/KVM/archlinux.qcow2 20Go
CDROM SATA : /home/yann/iso/archlinux/archlinux-2022.09.03-x86_64.iso
NIC Réseau : Réseau virtuel ‘host-bridge’

Installation en mode console (en mode su)

1
2
3
4
5
6
7
8
9
10
11
virt-install \
  --name archlinux \
  --os-variant=archlinux \
  --ram=4096 \
  --disk /home/yann/virtuel/KVM/archlinux.qcow2,device=disk,bus=virtio,size=20,format=qcow2 \
  --vcpus 2 \
  --network bridge=br0 \
  --cdrom=/home/yann/iso/archlinux/archlinux-2022.09.03-x86_64.iso \
  --console pty,target_type=serial \
  --graphics vnc \
  --boot uefi

Le résultat de la commande précédente

1
2
3
4
Début d’installation…
Allocating 'archlinux.qcow2'                                                                          | 3.3 MB  00:00:00 ... 
Création du domaine…                                                                                  |    0 B  00:00:00     
Exécution de la commande de console graphique : virt-viewer --connect qemu:///system --wait archlinux

Archlinux

Console graphique

Passage clavier FR : loadkeys fr en est en qwerty , il faut saisir ‘loqdkeys’

Se connecter en ssh pour la suite de l’installation:

  • Modifier le mot de passe root : passwd (root49)
  • Relever l’adresse IP :ip addr (192.168.0.13)
  • Lancer sshd : systemctl start sshd
  • Depuis l’hôte : ssh root@192.168.0.13

Installation de base

Mode de démarrage

Pour vérifier le mode de démarrage, lister le répertoire efivars :

1
ls /sys/firmware/efi/efivars

Si la commande affiche le répertoire sans erreur, alors le système est démarré en mode UEFI.

Connexion Internet

Vérifier avec un ping

1
ping -c3 archlinux.org
1
2
3
4
5
6
7
8
PING archlinux.org(archlinux.org (2a01:4f9:c010:6b1f::1)) 56 data bytes
64 bytes from archlinux.org (2a01:4f9:c010:6b1f::1): icmp_seq=1 ttl=53 time=54.7 ms
64 bytes from archlinux.org (2a01:4f9:c010:6b1f::1): icmp_seq=2 ttl=53 time=55.2 ms
64 bytes from archlinux.org (2a01:4f9:c010:6b1f::1): icmp_seq=3 ttl=53 time=56.0 ms

--- archlinux.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 54.748/55.302/55.984/0.512 ms

horloge système

Mettre à jour l’horloge système

timedatectl pour vous assurer que l’horloge du système est exacte

1
timedatectl set-ntp true

Pour vérifier l’état du service, utilisez timedatectl status

1
2
3
4
5
6
7
               Local time: Mon 2022-09-05 08:20:02 UTC
           Universal time: Mon 2022-09-05 08:20:02 UTC
                 RTC time: Mon 2022-09-05 08:20:02
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Partitionnement

Les disques en présence

Partitionnement du disque vda 20Go GPT + LVM

1
gdisk /dev/vda

Création table de partitions

1
2
3
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Partition 1 de 512Mo de type efi

1
2
3
4
5
6
7
Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41940991) or {+-}size{KMGTP}: +512M
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI system partition'

Partition 2 de type LVM

1
2
3
4
5
6
7
8
9
10
Command (? for help): n
Partition number (2-128, default 2): 
First sector (34-41943006, default = 1050624) or {+-}size{KMGTP}: 
Last sector (1050624-41943006, default = 41940991) or {+-}size{KMGTP}: 
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): L
Type search string, or <Enter> to show all codes: lvm
8e00 Linux LVM                           
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'

Validation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Command (? for help): p
Disk /dev/vda: 41943040 sectors, 20.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): E388A7DC-1649-41BF-BA06-EE53C5F8FE08
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI system partition
   2         1050624        41940991   19.5 GiB    8E00  Linux LVM

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/vda.
The operation has completed successfully.

LVM

Création volume physique, groupe et logique

1
2
3
4
pvcreate /dev/vda2                  # volume physique
vgcreate vgarch /dev/vda2           # volume groupe
lvcreate -L 9G -n root vgarch       # volume logique
lvcreate -l 100%FREE -n home vgarch # volume logique

Système de fichiers

Type de fichier FAT32 pour la partition 1 et ext4 pour les autres partitions

1
2
3
mkfs.fat -F32 /dev/vda1
mkfs.ext4 /dev/vgarch/root 
mkfs.ext4 /dev/vgarch/home 

Points de montage

1
2
3
4
5
mount /dev/vgarch/root /mnt  
mkdir /mnt/home
mount /dev/vgarch/home /mnt/home
mkdir -p /mnt/boot/efi
mount /dev/vda1 /mnt/boot/efi

Sélectionner les miroirs

Par défaut
Les paquets à installer doivent être téléchargés depuis des serveurs miroirs, qui sont définis dans /etc/pacman.d/mirrorlist. Sur le système live, après s’être connecté à Internet, reflector met à jour la liste des miroirs en choisissant les 20 miroirs HTTPS les plus récemment synchronisés et en les triant par taux de téléchargement.

Sélection du miroir
pour trouver un miroir plus proche de chez vous (et/ou plus rapide) en utilisant reflector:

1
reflector --country France --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Cette commande devrait sélectionner les miroirs HTTPS synchronisés ces 12 dernières heures en France, les trier par vitesse de téléchargement, et mettre à jour le fichier /etc/pacman.d/mirrorlist.

pacstrap copiera plus tard ce fichier sur le nouveau système, prendre votre temps sur cette étape peut donc vous en faire gagner plus tard.

Installer les paquets

Utilisez le script pacstrap pour installer le paquetage de base et développement, le noyau Linux et les microprogrammes pour le matériel courant

1
pacstrap /mnt base base-devel linux linux-firmware nano git wget

générer le fichier /etc/fstab qui liste les partitions présentes (utiliser -U ou -L pour définir par UUID ou étiquettes, respectivement)

1
genfstab -U -p /mnt >> /mnt/etc/fstab

Vérifiez le fichier /mnt/etc/fstab résultant, et modifiez-le en cas d’erreurs.

Chroot

Basculer la racine dans le nouveau système

1
arch-chroot /mnt

Fuseau horaire

Définissez le fuseau horaire

1
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

Exécutez hwclock pour générer /etc/adjtime

1
hwclock --systohc

Cette commande suppose que l’horloge matérielle est réglée sur UTC.
Sur l’hôte , exécuter timedatectl | grep local et si la réponse est RTC in local TZ: no , l’horloge matérielle est réglée sur UTC

Localisation

Editez /etc/locale.gen et décommentez fr_FR.UTF-8 UTF-8
Générez les locales en exécutant

1
locale-gen
1
2
3
Generating locales...
  fr_FR.UTF-8... done
Generation complete.

Créez le fichier locale.conf , et définissez la variable LANG en conséquence :

1
echo "LANG=fr_FR.UTF-8" > /etc/locale.conf

Si vous définissez la disposition du clavier de la console, rendez les changements persistants dans vconsole.conf

1
echo "KEYMAP=fr-latin1" > /etc/vconsole.conf

Configuration du réseau (NetworkManager)

Créez le fichier de nom d’hôte

1
echo "archvm" > /etc/hostname

Important : Pour éviter des problèmes de conflit, pensez à bien désactiver tout autre service réseau en action (dhcpcd.service, netctl.service, wicd.service) avant d’utiliser NetworkManager sur une interface réseau donnée.

Installation

1
pacman -S networkmanager

Rajouter le service NetworkManager.service

1
systemctl enable NetworkManager

Initramfs

LVM, installer le paquet

1
pacman -S lvm2

Pour LVM, le chiffrement du système ou RAID, modifiez mkinitcpio.conf et recréez l’image initramfs

1
nano /etc/mkinitcpio.conf

ajouter lvm2 entre block et filesystems dans les HOOKS
HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)
puis exécuter mkinitcpio qui est un script shell utilisé pour créer un environnement qui se charge en premier en mémoire

1
mkinitcpio -P

Mot de passe root

Définissez le mot de passe root (root49)

1
passwd

Nouvel utilisateur

Pour ajouter un nouvel utilisateur, utilisez la commande useradd :

1
useradd -m -G users,wheel -s /bin/bash yank
  • -m/--create-home le répertoire personnel de l’utilisateur est créé sous la forme /home/username. Le répertoire est peuplé par les fichiers du répertoire squelette. Les fichiers créés sont la propriété du nouvel utilisateur.
  • -G/--groupes une liste, séparée par des virgules, de groupes supplémentaires dont l’utilisateur est également membre. Par défaut, l’utilisateur n’est membre que du groupe initial.
  • -s/--shell un chemin vers le shell de connexion de l’utilisateur. Assurez-vous que le shell choisi est installé si vous choisissez autre chose que Bash.

Son mot de passe

1
passwd yank

Sudo

Droits sudo

1
2
# sudo est normalement déjà installé
echo "yank     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Installer yay

1
2
3
4
5
6
7
8
9
10
11
12
# git base-devel sont installés
# passer en utilisateur
su yank
cd /home/yank
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# Après installation on supprime
cd ..
sudo rm -r yay/
# on sort
exit

Environnement Graphique

Xorg

Xorg (communément appelé simplement X) est le serveur d’affichage le plus populaire parmi les utilisateurs de Linux. Son omniprésence a conduit à en faire un élément indispensable pour les applications d’interface graphique, ce qui a entraîné une adoption massive de la plupart des distributions.

Installer le paquet xorg

1
pacman -S xorg

LightDM gestionnaire affichage

lightdm-slick-greeter

1
pacman -S lightdm lightdm-slick-greeter

XFCE

On passe en utilisateur

1
2
su yank
cd /home/yank/

Créer la liste des paquets à installer pour XFCE4

1
nano xfce4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
arc-gtk-theme
file-roller
galculator
gvfs
gvfs-afc
gvfs-gphoto2
gvfs-mtp
gvfs-nfs
gvfs-smb
network-manager-applet
parole
ristretto
thunar-archive-plugin
thunar-media-tags-plugin
xdg-user-dirs-gtk
xed
xfce4
xfce4-battery-plugin
xfce4-datetime-plugin
xfce4-mount-plugin
xfce4-netload-plugin
xfce4-notifyd
xfce4-pulseaudio-plugin
xscreensaver
xfce4-screenshooter
xfce4-taskmanager
xfce4-wavelan-plugin
xfce4-weather-plugin
xfce4-whiskermenu-plugin
xfce4-xkb-plugin
noto-fonts

Passer en mode root et installer

1
2
su 
pacman -S --needed - < xfce4
1
2
3
4
5
6
7
8
9
10
11
12
:: There are 15 members in group xfce4:
:: Repository extra
   1) exo  2) garcon  3) thunar  4) thunar-volman  5) tumbler  6) xfce4-appfinder  7) xfce4-panel  8) xfce4-power-manager
   9) xfce4-session  10) xfce4-settings  11) xfce4-terminal  12) xfconf  13) xfdesktop  14) xfwm4  15) xfwm4-themes

Enter a selection (default=all): 
resolving dependencies...
:: There are 2 providers available for libjack.so=0-64:
:: Repository extra
   1) jack2  2) pipewire-jack

Enter a number (default=1): 2

Endeavour

Installation de paquets issus de compilations EndeavourOS PKGBUILDS

En mode utilisateur

1
2
su yank
cd /home/yank

Installation de paquets supplémentaires

1
2
3
4
5
6
7
8
git clone https://gitea.xoyaz.xyz/yann/arch-eos.git
sudo pacman --noconfirm -U arch-eos/zst/endeavouros-skel-default-1.6-1-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/endeavouros-skel-xfce4-2.14-1-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/endeavouros-theming-10.0-1-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/eos-lightdm-slick-theme-2.0-4-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/eos-qogir-icons-4-2-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/grub2-theme-endeavouros-20220602-1-any.pkg.tar.zst
sudo pacman --noconfirm -U arch-eos/zst/paper-icon-theme-1.5.0.832.aa3e8af-1-any.pkg.tar.zst

Ajustements

Les paramètres par défaut, utilisateur

1
2
3
4
5
cp arch-eos/.Xresources ~/.Xresources
cp -R arch-eos/.config/ ~/
sudo cp arch-eos/archlinux-endeavouros-wallpaper.jpg /usr/share/endeavouros/backgrounds/
sudo cp arch-eos/archlinux_logo_icon_blanc.png /usr/share/endeavouros/
exit

Activation et modification configuration lightdm

1
systemctl enable lightdm

Dans la rubrique [Seat:*], remplacer #greeter-session=example-gtk-gnome par greeter-session=lightdm-slick-greeter

1
sed -i "s/\#greeter-session\=example-gtk-gnome/greeter-session\=lightdm-slick-greeter/g" /etc/lightdm/lightdm.conf

Agencement clavier FR

1
sudo nano /etc/X11/xorg.conf.d/00-keyboard.conf
1
2
3
4
5
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "fr"
EndSection

Chargeur de démarrage (bootloader)

Installez les paquets nécessaires grub et efi

1
pacman -S grub efibootmgr 
  • GRUB: acronyme signifiant en anglais Grand Unified Bootloader, c’est un programme d’amorçage de micro-ordinateur qui s’exécute donc à la mise sous tension de l’ordinateur, après les séquences de contrôle du BIOS et avant le système d’exploitation proprement dit car son rôle est justement d’en organiser le chargement. Lorsque l’ordinateur comporte plusieurs systèmes (multi-boot), il permet à l’utilisateur de choisir quel système démarrer.
  • Os-prober (facultatif): détecte les autre OS installés sur la machine et les propose directement au démarrage, sans avoir à les renseigner manuellement
  • Efibootmgr: EFI Boot Manager est un utilitaire utilisable en ligne de commande permettant de gérer le chargeur de démarrage EFI. Il permet aussi de modifier l’ordre de démarrage des OS disponibles, etc.

/boot/efi est monté
/dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)

Installer grub

1
grub-install --target=x86_64-efi --bootloader-id=archvm --efi-directory=/boot/efi
1
2
Installing for x86_64-efi platform.
Installation finished. No error reported.

Une commande supplémentaire mais facultative qui permet de s’assurer que l’on arrivera bien à redémarrer en UEFI:

1
2
mkdir -p /boot/efi/EFI/boot
cp /boot/efi/EFI/archvm/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

Ajout du thème dans le fichier par défaut grub /etc/default/grub

1
sed -i 's|#GRUB_THEME="/path/to/gfxtheme"|GRUB_THEME=/boot/grub/themes/EndeavourOS/theme.txt|g' /etc/default/grub

Désactiver os-prober

1
sed -i 's|#GRUB_DISABLE_OS_PROBER=false|GRUB_DISABLE_OS_PROBER=true|g' /etc/default/grub

Générer le fichier de configuration principal

Après l’installation, le fichier de configuration principal /boot/grub/grub.cfg doit être généré (Le processus de génération peut être influencé par une variété d’options dans /etc/default/grub et par des scripts dans /etc/grub.d/)

1
grub-mkconfig -o /boot/grub/grub.cfg

Sortie chroot et reboot

Quittez l’environnement chroot en tapant exit ou en appuyant sur Ctrl+d pour revenir sur le prompt root@archiso ~ #

Optionnellement, démontez manuellement toutes les partitions avec umount -R /mnt

Enfin, redémarrez la machine en tapant reboot , toutes les partitions encore montées seront automatiquement démontées par systemd.
N’oubliez pas de retirer le support d’installation et de vous connecter au nouveau système avec le compte root.

Première connexion

Si l’installation de la VM a été effectué par le CD-ROM, il faut arrêter et non redémarrer la machine
Désactiver le CD-ROM avec le gestionnaire VMM, puis cliquer sur Apply

Enfin démarrer la machine virtuelle

Connexion utilisateur

Après avoir entré login et mot de passe

Page de démarrage

OpenSSH

Installer le paquet, activer et lancer

1
2
3
sudo pacman -S openssh
sudo systemctl enable sshd
sudo systemctl start sshd

Relever l’adresse IP , commande ip addr : 192.168.0.13
Connexion via SSH depuis un autre poste sur le réseau : ssh yano@192.168.0.13

Cet article est sous licence CC BY 4.0 par l'auteur.