Table des matières
- Introduction
- Prérequis
- Installer les fichiers d'installation de Gentoo
- Stage 3 : Le système
- Installer les fichiers de la fondation Raspberry Pi
- Configuration
- Configuration post-installation
- Mot de passe root
- Ajouter des utilisateurs
- Reparamétrer le serveur SSH
- Configuration de l'horloge
- Configuration make.conf
- Initialiser portage
- Configurer le profile
- Problème des logiciels non-libres (Facultatif)
- Dépôts binaire (Facultatif)
- Mise à jour du world
- Locales
- Configurer le fuseau horaire
- Service NTP
- Outils et services de base (Facultatif)
- Logs et Journalisation
- Planificateur de tâches
- Quelques outils pratiques
- eix
Introduction
Gentoo est une distribution GNU/Linux sympathique, conçue pour être optimisée pour le matériel de l'utilisateur. Tous les programmes sont donc compilés à partir du code source.
Dans cet article, nous allons installer cette distribution sur un Rasberry Pi 4 B !
Prérequis
En fonction du modèle du Raspberry Pi, on choisira un stage3 ARM ou ARM64.
Raspberry PI 3b, Raspberry PI 3b+, Raspberry PI Zero 2, Raspberry PI Zero 2 w, Raspberry PI 4b et Raspberry PI 5 sont compatibles ARM64
Sur notre machine, on devra avoir la commande git disponible !
-- Partitionnment du disque ou carte SD--
Si on opte pour un disque USB, il sera identifié par le Raspberry par /dev/sda
Si on opte pour une carte SD, elle sera identifiée par /dev/mmcblk0
Partitionner la carte SD ou le disque USB avec 2 partitions.
La table de partition peut être DOS ou GPT.
On fera 1 première partition en FAT32, le reste en ext4.
Le disque utilisé est /dev/sdh dans ce tuto :
Code BASH :
cfdisk /dev/sdh
Ce qui donne :
Code BASH :
Disk: /dev/sdh Size: 111,79 GiB, 120034123776 bytes, 234441648 sectors Label: dos, identifier: 0x4cd42d8e Device Boot Start End Sectors Size Id Type>> /dev/sdh1 * 2048 616447 614400 300M c W95 FAT /dev/sdh2 616448 234441647 233825200 111,5G 83 Linux [Bootable] [ Delete ] [ Resize ] [ Quit ] [ Type ] [ Help ] [ Write ] [ Dump ]
On formate la première en FAT32 :
Code BASH :
mkfs.vfat /dev/sdh1
On formate la seconde en EXT4 :
Code BASH :
mkfs.ext4 /dev/sdh2
On va monter notre futur système Gentoo dans /mnt/gentoo :
Code BASH :
mkdir /mnt/gentoo
On monte la parition root :
Code BASH :
mount /dev/sdh2 /mnt/gentoo
On montera /boot de Gentoo plus tard.
Installer les fichiers d'installation de Gentoo
Stage 3 : Le système
Le site de Gentoo propose les liens vers les "stage 3" de chaque architecture.
Se rendre dans la future racine de notre système :
Code BASH :
cd /mnt/gentoo
On récupérera le stage3 depuis le site de Gentoo : https://www.gentoo.org/downloads/
Pour aller plus vite, on pourra utiliser ce miroir allemand : https://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/releases/arm64/autobuilds
Plusieurs stage3 sont à notre disposition :
- stage3-arm64-openrc : Stage 3 OpenRC (serveur)
- stage3-arm64-desktop-openrc : Stage 3 OpenRC (desktop) qui contient déjà des éléments si on veut installer Gentoo avec un interface graphique
Dans ce tutoriel, on partira sur stage3-arm64-openrc.
On télécharge avec wget :
Code BASH :
wget http://url-du-stage-3-selectionne.tar.xz
Extraire ensuite l'archive :
Code BASH :
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
Installer les fichiers de la fondation Raspberry Pi
Avant toute chose, on va monter notre partition /boot :
Code BASH :
mount /dev/sdh1 /mnt/gentoo/boot
On va cloner plusieurs dépôts "git", on va se positionner dans /root de notre Gentoo pour travailler :
Code BASH :
cd /mnt/gentoo/root
On va récupérer le noyau Raspberry Pi et les micrologiciels :
Code BASH :
git clone --depth=1 https://github.com/raspberrypi/firmware
On copie les fichiers de boot dans le /boot de notre Gentoo :
Code BASH :
cp -a firmware/boot/* /mnt/gentoo/boot/
On copie les modules du noyau dans le /lib de notre Gentoo :
Code BASH :
cp -a firmware/modules /mnt/gentoo/lib/
Configuration
Quelques fichiers de configuration ont besoin d'être créés pour que notre Raspberry Pi puisse démarrer.
On revient à la racine :
Code BASH :
cd /mnt/gentoo
On va créer le fichier cmdline.txt qui va contenir les options pour démarrer notre système :
Code BASH :
nano /mnt/gentoo/boot/cmdline.txt
Le fichier ne doit contenir qu'une seule ligne :
Code BASH :
dwc_otg.lpm_enable=0 console=tty root=/dev/sda2 rootfstype=ext4 rootwait cma=256M@256M net.ifnames=0
root=/dev/sda2 car le SSD, une fois dans le Raspberry Pi sera identifié sda (premier disque)
Si on branche le disque sur un port USB 3.0, se référer à l'astuce suivante : https://www.linuxtricks.fr/wiki/raspberry-pi-4-regler-le-probleme-de-boot-sur-usb-3-io-error
On peut créer aussi le fichier config.txt :
Code BASH :
nano /mnt/gentoo/boot/config.txt
Code BASH :
# Si Raspberry Pi 3, indiquer qu'on est en 64 bitsarm_64bit=1# Réduit les bords noirs, ajuste l'affichage écran.disable_overscan=1# Activer audio si nécessaire (charge snd_bcm2835)dtparam=audio=on# Activer le pilote DRM VC4 V3Ddtoverlay=vc4-kms-v3d
On va évidemment paramétrer le fichier /etc/fstab :
Code BASH :
nano /mnt/gentoo/etc/fstab
Voici un exemple pour monter / et /boot :
Code :
/dev/sda1/bootvfatnoatime,nodev,nosuid,noexec00
/dev/sda2/ext4noatime00
Pas besoin de configurer le réseau de suite, le dhcp est actif sur l'interface réseau filaire.
On définira le nom d'hôte :
Code BASH :
nano /mnt/gentoo/etc/conf.d/hostname
Exemple :
Code :
hostname="gentoopi.linuxtricks.lan"
Définir le mot de passe root en éditant le fichier /etc/shadow :
Code BASH :
nano /mnt/gentoo/etc/shadow
Remplacer la ligne de root pour définir le mot de passe à raspberry :
Code :
root:$6$xxPVR/Td5iP$/7Asdgq0ux2sgNkklnndcG4g3493kUYfrrdenBXjxBxEsoLneJpDAwOyX/kkpFB4pU5dlhHEyN0SK4eh/WpmO0::0:99999:7:::
On définira l'agencement du clavier :
Code BASH :
nano /mnt/gentoo/etc/conf.d/keymaps
Et on mettra la disposition d'un clavier français :
Code :
keymap="fr"
On paramètrera la connexion en ssh.
Si on n'a pas de clé publique :
Code BASH :
nano /mnt/gentoo/etc/ssh/sshd_config
Et on définit la connexion par mot de passe pour root :
Code BASH :
#PermitRootLogin prohibit-passwordPermitRootLogin yes
Ou alors on copie notre clé publique dans le fichier authorized_keys de root :
Code BASH :
mkdir /mnt/gentoo/root/.ssh
Code BASH :
nano /mnt/gentoo/root/.ssh/authorized_keys
Et on définit les bons droits :
Code BASH :
chmod 700 /mnt/gentoo/root/.sshchmod 600 /mnt/gentoo/root/.ssh/authorized_keys
On fait démarrer le service ssh au boot :
Code BASH :
cd /mnt/gentoo/etc/runlevels/default/
Code BASH :
ln -s /etc/init.d/sshd sshd
On démonte toutes les partitions :
Code BASH :
cdumount -R /mnt/gentoo
Et on met le disque ou la carte SD dans le Raspberry Pi !
On se connecte en SSH et on peut continuer la configuration !
Configuration post-installation
Mot de passe root
On redéfinit le mot de passe root :
passwd
Ajouter des utilisateurs
On peut ajouter un utilisateur supplémentaire :
Code BASH :
useradd -m -G users,wheel,audio,video,portage -s /bin/bash adrien
Et on lui met un mot de passe :
Code BASH :
passwd adrien
Reparamétrer le serveur SSH
On peut également interdire de nouveau la connexion en tant que root par mot de passe à notre serveur SSH :
Code BASH :
nano /etc/ssh/sshd_config
Et on remet la valeur :
Code :
PermitRootLoginprohibit-password
On redémarre openssh pour prendre en compte cela :
Code BASH :
/etc/init.d/sshd restart
Configuration de l'horloge
On n'a pas d'horloge matérielle, on active donc un service d'horloge logicielle et on désactive hwclock :
Code BASH :
rc-update add swclock bootrc-update del hwclock boot
On définit manuellement la date :
Code BASH :
date -s "YYYY-MM-DD HH:MM"
On peut supprimer l'archive stage3 pour faire de la place :
Code BASH :
rm /stage3*.tar.xz
Configuration make.conf
On peut paramétrer le fichier make.conf :
Code BASH :
nano -w /etc/portage/make.conf
Code BASH :
# USE flags globauxUSE=""# Nombre de jobs pour compiler, 4 car 4CPU (vérifier avec la commande nproc) - Compter 2Go de RAM par jobMAKEOPTS="-j2" #LangueL10N="fr"# Pour ne pas avoir la compilation verbeuseEMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --quiet-build=y" # Permet de pouvoir compiler sereinement lorsque gentoo est en prodPORTAGE_SCHEDULING_POLICY="idle"
Initialiser portage
On va maintenant télécharger et extraire l'arbre de portage (la dernière version). C'est la liste de tous les logiciels disponibles sous Gentoo :
Code BASH :
emerge-webrsync
L'opération prend un petit peu de temps.
On peut éventuellemnt paramétrer des miroirs plus proches avec mirrorselect.
On installe d'abord l'outil :
Code BASH :
emerge -av1 app-portage/mirrorselect
Et on définit dans le make.conf un miroir proche :
Code BASH :
mirrorselect -i -o >> /etc/portage/make.conf
Configurer le profile
Ensuite, on va sélectionner son profil.
Lister les profils via :
Code BASH :
eselect profile list
Par défaut le profil sélectionné est celui avec une étoile et correspond à l'archive stage3 téléchargée précédemment.
Pour une archive OpenRC (non desktop), au moment de la mise à jour ce ce tuto :
Code :
[15]default/linux/arm64/23.0(stable)*
Si on souhaite changer de profile, on peut en sélectionner un autre avec son numéro :
Code BASH :
eselect profile set XX
Problème des logiciels non-libres (Facultatif)
Si plus tard on ne veut pas s'embêter avec les licences et qu'on se fiche d'avoir des logiciels propriétaires (c'est mon cas) on autorise tout dans le fichier package.licence :
Code BASH :
mkdir /etc/portage/package.license
Copier vers le presse-papier
Code BASH :
echo "*/* *" >> /etc/portage/package.license/custom
Dépôts binaire (Facultatif)
Gentoo met à disposition des paquets binaires depuis décembre 2023.
Il semble y en avoir peu en ARM64 pour le moment.
Pour les configurer et les utiliser, consulter cet article : https://www.linuxtricks.fr/wiki/gentoo-parametrer-les-depots-binaires
Mise à jour du world
Une fois le profil sélectionné et le make.conf personnalisé, on peut faire une mise à jour du world avant de continuer :
Code BASH :
emerge -avuDN @world
Les paquets seront mis à jour et ceux dont les USE sont modifiés seront recompilés.
Locales
Les locales, ce sont la langue et l'encodage du système. Configurer tout cela pour du français :
Code BASH :
nano -w /etc/locale.gen
Mettre ceci pour du français compatible UTF-8 :
Code BASH :
fr_FR.UTF-8 UTF-8
On génère les locales :
Code BASH :
locale-gen
On liste ensuite les locales disponibles :
Code BASH :
eselect locale list
Et on sélectionne le Français :
Code BASH :
eselect locale set fr_FR.utf8
Configurer le fuseau horaire
Vu que nous sommes sur Paris en France, configurons ainsi le fuseau horaire :
echo "Europe/Paris" > /etc/timezone
Et on configure le paquet timezone-data :
Code BASH :
emerge --config sys-libs/timezone-data
Service NTP
Vu qu'on n'a pas d'horloge matérielle, il est important d'installer et configurer un serveur NTP :
Code BASH :
emerge -av net-misc/chrony
On démarre le service :
Code BASH :
/etc/init.d/chronyd start
On l'ajoute au démarrage de la machine :
Code BASH :
rc-update add chronyd default
Le fichier de config par défaut est suffisant juste pour le client NTP.
Outils et services de base (Facultatif)
Logs et Journalisation
On installe rsyslog et logrotate :
Code BASH :
emerge -av app-admin/rsyslog app-admin/logrotate
On démarre le service au boot :
Code BASH :
rc-update add rsyslog default
Planificateur de tâches
On installe cron :
Code BASH :
emerge -av sys-process/cronie
On démarre le service au boot :
Code BASH :
rc-update add cronie default
Quelques outils pratiques
Installons quelques outils pratiques autour de portage :
Code BASH :
emerge -av app-portage/gentoolkit app-portage/portage-utils app-portage/eix
Quelques outils d'autocomplétion bash :
Code BASH :
emerge -av app-shells/bash-completion app-shells/gentoo-bashcomp
Quelques outils pratiques :
Code BASH :
emerge -av sys-process/htop app-misc/screen app-editors/vim
eix
On peut aussi installer eix pour la recherche rapide de paquets et d'autres outils agréables à utiliser :
Code BASH :
emerge -av app-portage/eix
On peut configurer la mise à jour de la base eix au même moment que emerge --sync
Pour cela, on peut créer un script qui appelle les commandes eix-associées après l'exécution de emerge --sync
Créer le dossier /etc/portage/postsync.d s'il n'existe pas
Code BASH :
mkdir /etc/portage/postsync.d
Créer un script :
Code BASH :
nano -w /etc/portage/postsync.d/maj-eix
Voici ce que j'ai développé :
Code BASH :
#!/bin/bashif [[ -e /var/cache/eix/portage.eix ]]then rsync -ca /var/cache/eix/portage.eix /var/cache/eix/previous.eixfieix-updateif [[ -e /var/cache/eix/previous.eix ]]then eix-difffi
On rend le script exécutable évidemment :
Code BASH :
chmod +x /etc/portage/postsync.d/maj-eix
Le prochain emerge --sync appellera ce script automatiquement pour exécuter les commandes adéquates
- Partager sur Facebook
- Partager sur Twitter
- Partager par emailPartager par Email
- ImprimerVersion imprimable