Installation de Void Linux

Jean-Pierre Bucciol

30 oct 2024

Cet article est la prise de notes de l'installation de la distribution Linux Void Linux : pour ce faire j'ai récupéré le fichier /root/.bash_history à la fin de l'installation, je l'ai nettoyé et commenté. Cela me servira de repère une prochaine fois, si besoin.

La particularité est que l'installation des paquets de base se fait à partir d'une installation Arch Linux déjà existante sur une des partitions de disques. On y installe le gestionnaire de paquets xbps de Void Linux, puis on chroot. On suit globalement la méthode lue sur https://docs.voidlinux.org/installation/guides/chroot.html

Au bout de plusieurs heures à lancer des commandes dans un terminal, en même temps que lire la documentation et corriger les bêtises que l'on fait (que je ne signale pas toutes dans la suite pour ne pas avoir l'air trop idiot), on obtient le résultat escompté, à savoir un système qui tourne avec Xorg et un gestionnaire de fenêtres léger :

medias/2024/10/void-neofetch-wmaker-f

Sommaire

1 Installation de la base

1.1 Partitionnement, chroot et installation

On commence par installer sur Arch Linux le gestionnaire de paquets de Void Linux xbps, via aur.

On crée une partition ext4 de 512Mo sur un disque dur de la machine (chez moi /dev/sdb1) :

su
gparted &

On crée un point de montage, on monte la partition, on chroot et on installe les paquets de base :

mkdir -p /mnt/voidlinux
mount /dev/sdb1 /mnt/voidlinux/
mkdir -p /mnt/voidlinux/var/db/xbps/keys
REPO=https://repo-default.voidlinux.org/current
ARCH=x86_64
cp /var/db/xbps/keys/* /mnt/voidlinux/var/db/xbps/keys/
XBPS_ARCH=$ARCH xbps-install -S -r /mnt/voidlinux -R "$REPO" base-system
mount -t proc none /mnt/voidlinux/proc
mount -t sysfs none /mnt/voidlinux/sys
mount --rbind /dev /mnt/voidlinux/dev
mount --rbind /run /mnt/voidlinux/run
cp /etc/resolv.conf /mnt/voidlinux/etc/resolv.conf
cp /etc/hosts /mnt/voidlinux/etc/host
chroot /mnt/voidlinux/ /bin/bash
xbps-install -Su xbps
xbps-install -u
xbps-install base-system
xbps-remove base-container-full

On installe son éditeur favori :

xbps-install nano

Je n'ai pas pu utiliser nano de suite à cause d'un : rxvt-unicode-256color': unknown terminal type. En entrant TERM=xterm; export $TERM, tout rentre dans l'ordre.

On crée le nom d'hôte :

nano /etc/hosthame

On modifie les paramètres de :

nano /etc/rc.conf
nano /etc/default/libc-locales

blkid donne les uuid pour remplir /etc/fstab

nano /etc/fstab

avec :

UUID=de701791-893e-4201-bb41-b4ae6e4f7bec / ext4 rw,relatime 0 1
tmpfs           /tmp        tmpfs   defaults,nosuid,nodev   0 0

On reconfigure les locales

xbps-reconfigure -f glibc-locales

On crée le mot de pass de root :

passwd

Et voilà. Un Void Linux a été créé. Après plusieurs exit, on revient dans Arch Linux.

1.2 Réglages du programme d'amorçage grub

Le programme d'amorçage grub étant encore pour le moment géré depuis Arch Linux, on recrée son fichier de configuration pour que le nouveau système apparaisse dans le menu au démarrage de la machine.

grub-mkconfig -o /boot/grub/grub.cf

Résultat :

Void Linux trouvé sur /dev/sdb1

On peut redémarrer la machine et sélectionner Void Linux dans le menu de démarrage de grub.

2 Redémarrage sous Void Linux

On est maintenant dans Void Linux. On met par acquis de conscience à jour les paquets installés, même si c'est sans doute inutile :

xbps-install -Su
xbps-reconfigure -fa

On lance les deux services indispensables, le réseau ethernet via dhcpcd, le serveur ssh et on teste le réseau externe et le réseau local :

ln -s /etc/sv/dhcpcd-eth0 /var/service/
ln -s /etc/sv/sshd /var/service/
ping www.google.fr
ping 192.168.0.3

On peut maintenant télécharger et installer des paquets.


On installe des services supplémentaires : gestionnaire des logs (socklog), un planificateur de taches (cronie), un serveur de temps (ntpd), le gestionnaire ACPI, puis les gestionnaires de fichiers distants nfs (netmount, statd, rpcbind).

xbps-install socklog-void cronie ntp nfs-utils sv-netmount

ln -s /etc/sv/socklog-unix /var/service
ln -s /etc/sv/nanoklogd /var/service
ln -s /etc/sv/cronie/ /var/service
ln -s /etc/sv/ntpd /var/service
ln -s /etc/sv/acpid/ /var/service
ln -s /etc/sv/statd/  /var/service
ln -s /etc/sv/rpcbind/  /var/service
ln -s /etc/sv/netmount/ /var/service

On crée un montage automatique des vidéos qui se trouvent sur un ordinateur du réseau local :

mkdir -p /mnt/videos
mount -t nfs 192.168.0.3:/mnt/videos /mnt/videos/
ls /mnt/videos/
umount /mnt/videos/

On crée un montage automatique de la partition Arch Linux :

mkdir /mnt/archlinux
mount -t ext4  /dev/sdc1 /mnt/archlinux/
ls /mnt/archlinux/
umount /mnt/archlinux/

On modifie le /etc/fstab pour le montage automatique :

nano /etc/fstab

UUID=0d2cf34c-4080-45a5-abb5-2c10daad4af9   /mnt/videos-gopro   ext4    user,rw,relatime,data=ordered,exec  0   2

UUID=156fdca6-380d-49cb-b757-0aeb63866452   /mnt/archlinux  ext4    rw,relatime 0   2

Enfin on crée un utilisateur avec les groupes qui vont bien :

useradd jp -G wheel,lp,audio,video,cdrom,optical,storage,scanner,network,kvm,input,plugdev,users,socklog

3 Installation de Xorg

Il est temps d'installer Xorg, les pilotes pour la carte vidéo AMD, un gestionnaire de fenêtre minimal (ici WindowMaker) et le terminal xterm :

xbps-install linux-firmware-amd vulkan-loader mesa-vulkan-radeon amdvlk xorg mesa-vaapi mesa-vdpau WindowMaker xterm
echo "exec wmaker" > .xinitrc
startx

On teste que tout va bien sous X11. Je ne sais pas comment je me suis débrouillé mais le shell sous X11 quand on est root est dash avec qui les flèches du clavier ne fonctionnent pas et qui n'a pas d'historique... En écrivant bash dès que l'on est sous root, on revient à bash et tout revient à la normale. Pour changer définitivement le shell, sous root:

chsh

et choisir /bin/bash

On installe le gestionnaire de session lightdm et on active le service :

xbps-install lightdm lightdm-locker lightdm-gtk-greeter-settings lightdm-gtk-greeter
ln -s /etc/sv/lightdm/  /var/service
ln -s /etc/sv/dbus/  /var/service
mv .xinitrc .xinitrc-no

Mais, le gestionnaire de session n'a pas le bon clavier. Pour cela, on crée un ficher /etc/X11/xorg.conf.d/00-keyboard.conf avec :

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "fr"
        Option "XkbVariant" "oss"
EndSection

(La variante oss permet d'avoir les « » € œ æ directement au clavier.)

On peut fermer la session, redémarrer sous X11 et vérifier si le clavier est le bon : setxkbmap -query :

setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr
variant:    oss

4 Installation de logiciels

On installe les outils de base préférés :

xbps-install firefox thunderbird rox rxvt-unicode geany

puis les autres :

xbps-install audacious audacity avidemux cantata chromium ffmpegthumbnailer freecad geany-plugins geeqie gftp gimp gnome-disk-utility gparted gpodder gpsbabel gucharmap guvcview hugin ImageMagick inkscape kdenlive lensfun libreoffice-i18n-fr mutt neofetch nufraw numlockx okular pamixer pavucontrol pcmanfm pulseaudio python3-psutil qt5ct qt5-styleplugins qt6ct rawtherapee rox rxvt-unicode thunderbird torbrowser-launcher transmission udiskie unzip vlc wget wmctrl xarchiver xournalpp xpdf xsane

5 Installation du serveur web nginx/php

xbps-install nginx php8.3 php-fpm
ln -s /etc/sv/nginx/ /var/service
ln -s /etc/sv/php-fpm8.3/ /var/service

ln -s /var/www /home/jp/www

geany /etc/nginx/nginx.conf &

Placer dans server {} la racine du site :

        root /var/www;

et commenter toutes les autres lignes commençant par root.

Insérer les commandes de lecture des fichiers \.php :

    location ~ \.php$ {
        # 404
        #try_files $fastcgi_script_name =404;

        # default fastcgi_params
        include fastcgi_params;

        # fastcgi settings
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index           index.php;
        fastcgi_buffers         8 16k;
        fastcgi_buffer_size     32k;

        # fastcgi params
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;
        #fastcgi_param PHP_ADMIN_VALUE  "open_basedir=$base/:/usr/lib/php/:/tmp/";
    }

geany /etc/php8.3/php-fpm.d/www.conf &

Changer l'utilisateur et le groupe :

user = jp
group = jp

Pour activer le module/extension exif

geany /etc/php8.3/php.ini &

décommenter la ligne

extension=exif

Redémarrer les services :

sv restart /var/service/nginx
sv restart /var/service/php-fpm8.3

6 Installations des serveurs d'impression, scanner, itinéraires et autres choses

6.1 Serveur d'impression cups

xbps-install cups cups-filters brother-brlaser
ln -s /etc/sv/cupsd /var/service/
http://localhost:631/admin

Pilote et configuration :

Pilote :    Brother HL-1200 series, using brlaser v6 (grayscale)
Connexion : lpd://192.168.0.7/queue
Par défaut :    job-sheets=none, none media=iso_a4_210x297mm sides=one-sided

6.2 Serveur d'itinéraires BRouter

xbps-install openjdk

puis répertoire copié directement à partir de celui de archlinux

Pour récupérer les cartes chaque semaine, insérer dans le crontab -e :

0 2 * * Sat sh /home/jp/bin/brouter/segments4/0doall.sh

6.3 Serveur de scanner saned

geany /etc/sane.d/saned.conf

locahost
192.168.0.0/10
data_portrange = 10000 - 10100

ln -s /etc/sv/saned/ /var/service/

Et pour éviter que xsane ne voit la webcam et la propose comme choix de scanner :

geany /etc/sane.d/dll.conf :

commenter la ligne v4l.

6.4 Serveur gpstracking

Par copie à partir de /mnt/archlinux/home/jp/bin de mergegeojson.sh et resetgpstracking.sh

Pour la mise à jour du site si nécessaire, chaque minute, insérer dans le crontab -e :

* * * * * sh /home/jp/bin/mergegeojson.sh

6.5 Moteur de recherche de fichiers mlocate

xbps-install mlocate
updatedb
crontab -e

insérer :

30 01 * * * updatedb

6.6 Nettoyage de /tmp à chaque démarrage

geany /etc/rc.shutdown

Insérer :

rm -rf /tmp/*

6.7 LaTeX

Il est vain d'essayer de lutter : on a toujours besoin de tout LaTeX...

xbps-install texlive-full

Mais bon, si on essaie :

xbps-install texlive texlive-latexextra

est déjà plutôt complet.

6.8 Gestionnaire de session slim

pkg install slim slim-void-theme xss-lock
rm /var/service/lightdm
geany /etc/slim.conf &

slim utilise ~/.xinitrc pour lancer la session, donc il faut le peupler :

echo "exec wmaker" > ~/.xinitrc

medias/2024/10/slim-f

Pour vérouiller la session, on utilise xss-lock qui lance slimlock fourni avec le paquet et utilise les réglages dpms pour gérer le délai d'extinction automatique :

geany ~/.xinitrc &

Supprimer si nécessaire les autres lockers et insérer :

exec xset dpms 600 600 600 &
exec xss-lock -- /usr/bin/slimlock &

Le fichier de configuration /etc/slim.conf permet de personnaliser le thème et d'autres paramètres.

6.9 Wifi

Inutile étant donnée la liaison filaire, mais au cas où :

ln -s /etc/sv/wpa_supplicant/ /var/service
geany /etc/wpa_supplicant/wpa_supplicant.conf &

Ajouter (psk est le mdp) :

network={
    ssid="Freebox-######"
    psk="###################"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    auth_alg=OPEN
    mesh_fwding=1
}

7 Logiciels manquants

Plusieurs logiciels couramment utilisés ne sont pas disponibles dans les paquets Void Linux. Il a fallu trouver des alternatives :

8 Ajouts

8.1 Utilisation des UUID dans grub

13 nov 2024. La méthode appliquée dans 1.2 pour configurer grub utilise os-prober pour trouver les items présentés dans le menu de grub. Et os-prober n'est pas toujours suffisamment précis. Sur mon système :

Il est donc préférable de faire les réglages manuellement en indiquant les UUID des partitions de boot :

geany /etc/grub.d/40_custom &

menuentry "Void Linux" {
    search --no-floppy --set=root --fs-uuid de701791-893e-4201-bb41-b4ae6e4f7bec
    linux /boot/vmlinuz-6.11.7_1 root=UUID=de701791-893e-4201-bb41-b4ae6e4f7bec
    initrd /boot/initramfs-6.11.7_1.img
}
menuentry "FreeBSD 14.1" {
    search --no-floppy --set=root --fs-uuid 66c84fe522c62f11
    kfreebsd /boot/loader
}

Puis on relance la création du fichier de configuration :

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

Pendant qu'on est à parler de grub : pour installer grub sur le disque /dev/sda1 d'un système UEFI :

mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
grub-install --target=x86_64-efi --efi-directory=/mnt/boot --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg

8.2 Montage automatique de périphériques

29 nov 2024. Pour monter les périphériques à partir de pcmanfm, il faut installer un certain nombre de paquets et lancer une session dbus au démarrage de la session X11 :

xbps-install elogind dbus polkit gnome-keyring gvfs
geany ~/.xinitrc

Insérer :

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]
then
    eval $(dbus-launch --sh-syntax --exit-with-session)
fi

22 déc 2024. Pour éviter de devoir trop souvent dévérouiller le trousseau de connexion, il faut changer le mot de passe du trousseau de connexion, quitte à remettre le même... On peut d'ailleurs le faire graphiquement avec seahorse :

xbps-install seahorse

Clic doit sur le ou les trousseaux de connexion (à gauche), puis remettre le même mot de passe. C'est un peu stupide, mais j'avoue que je ne comprends pas très bien ces questions. S'agit-il d'un bug ?

Pour monter les périphériques usb à partir de rox, on utilise udiskie :

xbps-install udiskie
geany ~/.xinitrc

Insérer :

exec udiskie --no-notify &

8.3 Touchpad Synaptics

29 nov 2024. Pour les portables :

sudo geany /etc/X11/xorg.conf.d/70-synaptics.conf

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "VertEdgeScroll" "on"
        Option "VertTwoFingerScroll" "on"
        Option "HorizEdgeScroll" "on"
        Option "HorizTwoFingerScroll" "on"
        Option "CircularScrolling" "on"
        Option "CircScrollTrigger" "2"
        Option "EmulateTwoFingerMinZ" "40"
        Option "EmulateTwoFingerMinW" "8"
        Option "CoastingSpeed" "0"
        Option "FingerLow" "30"
        Option "FingerHigh" "50"
        Option "MaxTapTime" "125"
EndSection

8.4 Des polices de caractères non crénelées sous Xorg avec fontconfig

10, 15, 17 déc 2024.

#rm /etc/fonts/conf.d/*
cd /etc/fonts/conf.d/

for f in \
/etc/fonts/conf.avail/42-luxi-mono.conf \
/usr/share/fontconfig/conf.avail/10-autohint.conf \
/usr/share/fontconfig/conf.avail/10-yes-antialias.conf \
/usr/share/fontconfig/conf.avail/30-metric-aliases.conf \
/usr/share/fontconfig/conf.avail/49-sansserif.conf \
/usr/share/fontconfig/conf.avail/60-latin.conf \
/usr/share/fontconfig/conf.avail/70-no-bitmaps.conf
do
    echo $f
    ln -s $f
done

xbps-reconfigure -f fontconfig

8.5 Outils de compilation minimaux

11 déc 2024.

xbps-install autoconf automake cmake doxygen extra-cmake-modules gcc gettext leatherman libogg-devel libtool make mk-configure pandoc

8.6 abcde pour ripper les CDs

17 déc 2024.

xbps-install abcde cdparanoia glyr
← Article précédent
Exemple minimal PyGObject : récupérer les clicks et la roulette de la souris, sept 2024
Article suivant →
L'uptime d'un Raspberry Pi 2 faisant tourner un serveur de musique, nov 2024

Je préfère vraiment les contacts à l'ancienne, par courrier électronique à l’adresse jpsmail(at)free.fr. Antispam : penseras-tu à remplacer (at) par @ dans l’adresse ? Que cela ne t'enpêche pas d'ajouter un commentaire :

Nom :

Commentaire :

Articles (304)

   (*: nécessite un mot de passe.)
↑ Retour en haut de la page