Tarnyko's website
Tarnyko's website
about

[Tutoriel] Installer Adélie Linux comme un gU4u

2021-03-10

Mon petit-cousin est en train de s'initier à Linux.
Alors bien sûr, je m'attendais à ce qu'il sache tout du bootloader, du partitionnement, de la création d'utilisateurs et de l'installation de paquets.
Cependant les retours n'ont pas été ce à quoi je m'attendais :

- Alors Nini, tu as découvert comment ça marche, Linux ?
- Bien sûr! J'ai cliqué sur "Suivant" -> "Suivant", puis pour installer Python je suis allé sur le "Snap Store" ! Par contre ça prend pas moins de RAM hein ; j'suis à 4 Go pris tout le temps, c'est normal ?

Mon mug m'échappa des mains. La situation était critique, et mon petit-cousin courait à sa perte 1. Je devais immédiatement lui faire installer Adélie Linux.

adélie

- Mais tonton, pourquoi Adélie ?
- C'est un Linux léger basé sur musl-C et le gestionnaire de paquets APK (comme Alpine). Il ne se salit pas les mains, n'utilise pas systemd et expédie les firmwares externes sur un dépôt externe ; il est donc éthiquement pur, comme Greta Thunberg et BHL.
- Mais il a au moins un avantage sur Alpine ?
- Bien sûr ! Il est ouvert au "desktop", ce qui veut dire qu'on y trouve Firefox, VLC et, pour toi mon fripounet, un client Torrent. Ah et il supporte de vieilles architectures comme le Pentium MMX ou PowerPC (Mac G3 et +).

Partitionnement

Je le laisse d'abord démarrer sur un LiveCD GParted et partitionner à la souris, car je veux qu'il ait une vision graphique du disque.

00-gparted

On crée et formate 3 partitions :

  1. /boot (500 Mo - ext2)
  2. swap (512 Mo - linux-swap)
  3. / ("reste" Go - ext4)

Installation depuis le LiveCD Adélie

Configuration du clavier & d'APK

On télécharge la dernière ISO sans installeur. Ça va le dissuader de cliquer sur Suivant 😉.

Une fois demarré depuis le CD en root avec un clavier QWERTY :

01-livecd

on passe en français avec :

loadkeys /usr/share/keymaps/i386/azerty/fr-latin9.map.gz

On monte nos 2 partitions extfs (/ puis /boot) dans la racine éphémère /target/ :

mount /dev/sda3 /target      # /
mkdir /target/boot
mount /dev/sda1 /target/boot # /boot

On y recopie la configuration du gestionnaire de paquets APK :

mkdir -p /target/etc/apk
cp /etc/apk/repositories /target/etc/apk/
cp -r /etc/apk/keys/ /target/etc/apk/

Pour découvrir le dépôt Adélie depuis Internet, il va nous falloir une... connexion Internet :

dhcpcd eth0 &   # récupère une adresse IP du modem/routeur
apk --root /target --initdb add  # initialise la base
apk --root /target update        # met à jour depuis Internet

02-apk

Paquets APK de base

On installe successivement :

apk --root /target add adelie-base bash-binsh ssmtp sysvinit openrc netifrc netifrc-doc dhcpcd 
apk --root /target add easy-kernel easy-kernel-modules
apk --root /target add grub grub-bios

(au démarrage de l'ordinateur, leur lancement se fera dans l'ordre inverse :
GRUB -> noyau Linux -> OpenRC -> services / Bash...)

Configuration de base

On recopie et complète les ultimes fichiers de config avant le chroot :

cp -p /etc/shells /target/etc/             # shells
cp -p /etc/resolv.conf /target/etc/        # résolution DNS 
echo 'adelie10' > /target/etc/hostname     # nom d'hôte local
sed -i s/$/' adelie10'/ /target/etc/hosts  # nom d'hôte DNS
cp -PRr /target/usr/share/openrc/runlevels/ /target/etc/  # config OpenRC

Configuration finale via chroot (GRUB, mot de passe root, clavier, réseau...)

Pour que /target devienne notre racine /, on effectue un chroot :

mount -B /dev /target/dev        # /dev
mount -t proc none /target/proc  # /proc
mount -t sysfs none /target/sys  # /sys
chroot /target

a) On inscrit GRUB sur le secteur de démarrage du disque dur (MBR) :

mkdir /boot/grub
grub-mkconfig -o /boot/grub/grub.cfg
grub-install --boot-directory=/boot /dev/sda  # écrit le MBR

b) On active et définit le mot de passe du compte root :

passwd root

c) On installe et paramètre un service "keymaps" qui passera le clavier en français au démarrage (via la commande "loadkeys" utilisée plus haut) :

apk add gzip kbd-keymaps       # installe le service
sed -i 's/keymap="us"/keymap="fr-latin9"/' /etc/conf.d/keymaps
rc-update add keymaps default  # lance le service automatiquement

d) On paramètre le service "net.eth0" qui attribuera une IP à la carte réseau au démarrage (via l'outil "dhcpcd" utilisé plus haut) :

echo 'config_eth0="dhcp"' > /etc/conf.d/net
cp /etc/init.d/net.lo /etc/init.d/net.eth0
rc-update add net.eth0 default  # lance le service automatiquement

e) On paramètre le service "udev" qui détectera le matériel et chargera les pilotes automatiquement au démarrage (via l'outil "modprobe") :

rc-update add udev boot
rc-update add udev-trigger boot

f) On écrit la définition de nos partitions dans /etc/fstab pour qu'elles soient montées automatiquement au démarrage (via l'outil "mount" utilisé plus haut) :

vi /etc/fstab

03-fstab

(c'est l'occasion de démontrer l'utilisation de "vi" en ligne de commande !)

Finalement, on redémarre au bouton !

Premier démarrage

Outils indispensables

On installe successivement des outils matériels (fsck.ext2, lspci, lsusb, alsactl, ip, ping, dig, iptables), des commandes shell (clear, which), des outils système et des outils de compression :

apk add hdparm parted e2fsprogs pciutils usbutils alsa-utils ethtool iproute2 iputils traceroute bind-tools curl ufw
apk add ncurses debianutils-which tree
apk add lsof htop nano vim strace
apk add bzip2 lzip xz zip unzip

Serveur SSH

Pour pouvoir copier des fichiers depuis notre hôte Linux (avec "ssh" et "scp") ou Windows (avec PuTTY et WinSCP), on lance un serveur SSH :

apk add openssh
rc-update add sshd default
service sshd start

Interface graphique

Aujourd'hui, on a en gros 2 options pour l'interface graphique sous Linux :

  1. l'historique X11, présent depuis les années 90 ;
  2. le récent Wayland, l'avenir du bureau visant des "images parfaites".

Vous pouvez installer l'un, ou tous les deux. Les 2 configurations ci-dessous sont de toute manière pensées comme minimales.

1) Serveur d'affichage X11 (historique)

On installe le serveur X.org :

apk add xorg-server

Vu qu'on utilise le service udev (plus précisément eudev), notre pilote clavier/souris sera forcément evdev :

apk add xf86-input-evdev

Notre pilote graphique pourrait être intel/ati/nouveau (NVIDIA), mais il s'agit ici d'une machine virtuelle VirtualBox :

apk add xf86-video-vboxvideo

On installe une série d'utilitaires X11 (le dernier contenant le fameux startx), un gestionnaire de fenêtres (le léger IceWM), deux logiciels (le gestionnaire de fichiers PCManFm, le navigateur Firefox) :

apk add setxkbmap xsetroot xrandr xdpyinfo xlsclients xlsfonts xauth xhost xcalc xclock xedit xeyes xmag xmessage xdotool xterm xkill xinit
apk add icewm
apk add pcmanfm
apk add firefox-esr

On ajoute une section de configuration pour le clavier français (qui est géré séparément par X.org relativement au clavier console ; cela fera l'équivalent de setxkbmap fr à chaque lancement) :

vim /etc/X11/xorg.conf.d/10-setxkbmap.conf

04-x11_kbd

Finalement, on configure l'init de X11 pour lancer IceWM à la place de KDE (qui n'était de toute façon pas installé) :

vim /etc/X11/xinit/xinitrc

05-x11_wm

Le moment est venu de se lancer :

startx

06-x11_gui

2) Serveur d'affichage Wayland (KDE Plasma)

Bien qu'il existe un compositeur Wayland de référence, il n'est pas conçu comme un environnement de bureau complet, et Adélie ne le fournit de toute façon pas. Il faut en choisir un autre parmi ceux-ci : GNOME, KDE....

Adélie a choisi de fournir le compositeur KWin du projet KDE Plasma :

apk add ttf-liberation # (police de caractères TrueType)
apk add mesa-dri       # (Mesa, bibliothèque DRI)
apk add qt5-qtwayland  # (Qt5, plugin client/serveur Wayland)
apk add kwin           # compositeur KWin

On installe les outils graphiques, l'environnement de bureau du projet et le navigateur Firefox :

apk add konsole         # terminal graphique
apk add plasma-desktop  # bureau Plasma
apk add firefox-esr

Wayland utilise :

dépendant tous les 2 de D-Bus, qu'on va donc devoir démarrer également :

rc-update add elogind boot  # lance automatiquement elogind (au boot)
rc-update add dbus default  # lance automatiquement D-Bus (par session)
reboot

Créer et définir un utilisateur limité :

useradd tarnyko
passwd tarnyko
logout

Se logger en tant qu'utilisateur limité (ici tarnyko) et vérifier qu'on a bien une session D-Bus/logind :

$ loginctl
_SESSION  UID    USER  SEAT TTY
      c1 1000 tarnyko seat0 tty1_

Puis essayer de lancer juste le compositeur KWin :

WAYLAND_DEBUG=1 XDG_RUNTIME_DIR=$HOME dbus-launch kwin_wayland --drm --xwayland

et aller sur un autre terminal console ([Ctrl+[Alt]+[F3]), se connecter également en utilisateur limité, et lancer le client Konsole :

QT_QPA_PLATFORM=wayland XDG_RUNTIME_DIR=$HOME konsole

07-kwin_wayland

Vous pouvez techniquement lancer d'autres applications graphiques (comme "firefox") depuis ce terminal.
Finalement, si ça fonctionne... pour lancer l'environnement complet, tout redémarrer et faire :

QT_QPA_PLATFORM=wayland XDG_RUNTIME_DIR=$HOME dbus-launch plasmashell

08-kwin_wayland_plasma

Conclusion

On constate un espace disque occupé d'environ 800 Mo, et encore 200 Mo de RAM libre (sur 512) avec Firefox et plusieurs applications lancées.


1

Il utilise aujourd'hui Arch Linux, donc tout a fini pour le mieux 😉.