Cela fait des années que j'utilise ZSH comme interpréteur de commande. En complément,
j'utilise également des plugins disponibles via l'excellent projet oh-my-zsh.
J'ai harmonisé l'ensemble des configurations sur mes différents accès. Pour ce faire,
j'ai principalement travaillé sur le prompt et je publie aujourd'hui le code de mon thème.
Voici une capture d'écran qui décrit l'ensemble des fonctionnalités de mon thème :
Une gestion des codes de sortie avec différentes couleurs et éventuellement le code
L'affichage de l'heure
L'affichage de l'utilisateur et de la machine
Changement de couleur si l'utilisateur⋅trice est privilégié⋅e
Le chemin courant avec un retour à la ligne s'il dépasse une certaine longueur
J’utilise énormément Docker ou Podman pour déployer rapidement mes stacks (sur ce serveur par exemple) mais également pour exécuter des applications sans me soucier de l’environnement ou des dépendances (sur mon NAS OpenMediaVault par exemple). Du coup je me retrouve à devoir maintenir à jour à la fois le système (dnf upgrade / apt upgrade) […]
Pour la 5ème semaine de l'année 2021, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !
De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !
Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !
Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)
Pour installer Linux From Scratch, il faut commencer par créer des partitions sur un disque dur. Ce dernier peut être vierge ou bien déjà partitionné. S’il reste suffisamment d’espace libre pour pouvoir accueillir notre petite distribution moulée à la louche, ça fera l’affaire. Personnellement, j’ai choisi le deuxième disque dur de mon ordinateur, d’une capacité de 80 GB, ce qui est largement suffisant pour:
créer une partition de 30 GB destinée à accueillir les fichiers de configuration et qui sera montée à la racine du système,
créer une partition de 8 GB destinée à accueillir la SWAP, c’est-à-dire la partition d’échange.
Quant à mon répertoire personnel, il est déjà monté sur /home et il se trouve sur le premier disque dur de mon ordinateur.
Pour partitionner, vous pouvez utiliser cfdisk (en ligne de commande), gnome-disks ou bien gparted. Pour ma part, j’ai utilisé gnome-disks mais là, je vais vous montrer en ligne de commande avec l’utilitaire cfdisk. Tout d’abord, nous passons en root:
[miamondo@volgor ~]$ su
Mot de passe :
[root@volgor miamondo]#
Commençons par identifier le disque dur. Il ne s’agit pas de formater le mauvais support! Vous pouvez utiliser fdisk -l ou bien lsblk, laquelle nous retourne ces informations:
[root@volgor miamondo]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 35G 0 part /
├─sda2 8:2 0 8G 0 part [SWAP]
└─sda3 8:3 0 888,5G 0 part /home
sdb 8:16 0 74,5G 0 disk
Le disque à partitionner est /dev/sdb. Sachant cela, entrons maintenant la commande suivante:
[root@volgor miamondo]# cfdisk /dev/sdb
Voici ce qui s’affiche:
L’image ci-dessous montre le résultat que nous devons obtenir.
Pour ce faire, il faut d’abord cliquer sur Nouvelle puis renseigner la taille de la partition sdb1 (30G). Normalement, le type par défaut est ext4. Laissez-le tel quel, et cliquer sur Écrire. Vous allez voir apparaitre une magnifique erreur de traduction présente depuis la nuit des temps: La table de partitions a été altérée. Oh la! Ça pique les yeux! Alors, la traduction française du verbe anglais to alter est modifier, et la traduction anglaise du verbe français altérer est tocorrupt. Donc, si on vous dit que votre table de partitions a été corrompue, c’est que tout va bien!
Il y a maintenant deux lignes : /dev/sdb1 et Espace libre. Mettons Espace libre en surbrillance et renouvelons l’opération pour créer la partition d’échange (SWAP). Donc, Nouvelle puis 8G (ou 4G, tout dépend de la capacité de votre RAM). Puis cliquez sur Type et sélectionnez Partition d’échange Linux. Enfin, confirmez en cliquant sur Écrire.
Il reste de l’espace libre. Vous pouvez fort bien créer une troisième partition pour votre répertoire personnel. Son système de fichiers sera ext4 et elle sera montée sur /home. Moi, je laisse comme ça, car j’utiliserai mon répertoire personnel qui se trouve sur le disque dur principal de mon ordinateur. Les esprits perspicaces auront remarqué qu’aucune partition n’est amorçable. Nous allons nous en occuper plus tard.
Pour une meilleure compréhension mutuelle, la première partition doit être étiquetée LFS. Vous pouvez faire cette opération en ligne de commande:
[root@volgor miamondo]# e2label /dev/sdb1 LFS
Maintenant, il faut initialiser le système de fichiers de chaque partition.
Si vous avez d’ores et déjà créé une troisième partition dont le point de montage sera /home, entrez cette commande.
[root@volgor miamondo]# mkfs.ext4 /dev/sdb3
3. Définir la variable $LFS
Toujours en root, nous allons définir une variable d’environnement qui va correspondre au point de montage /mnt/lfs. Ce sera en quelque sorte, la porte entre le système hôte et le système LFS. Cette variable d’environnement va s’appeler LFS.
export LFS=/mnt/lfs
Il vous est loisible de choisir un autre nom que /mnt/lfs, par exemple /mnt/mickey ou bien /mnt/truc_de_ouf. Ça fonctionnera quand-même. Moi, je vais m’en tenir au sobre mais explicite /mnt/lfs.
Donc, vous allez ouvrir et rajouter cette variable d’environnement dans quatre fichiers différents. Si un de ces fichiers n’existe pas, créez-le.
/home/user/.bashrc (remplacer user par le nom de votre répertoire personnel)
/root/.bashrc
/home/user/.bash_profile (remplacer user par le nom de votre répertoire personnel)
/root/.bash_profile
Attention! Dans les fichiers .bashrc, la variable d’environnement que nous avons définie doit être rajoutée avant les lignes suivantes, et pas à la fin des fichiers. Ne me demandez pas pourquoi, c’est au-delà de mes compétences mais vous trouverez une explication détaillée dans le manuel, au chapitre 2.6.
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Au final, les fichiers modifiés .bashrc doivent ressembler à ceci:
# ~/.bashrc
export LFS=/mnt/lfs
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
alias ls='ls --color=auto'
PS1='[\\u@\\h \\W]\\$ '
BROWSER=falkon
TERM=xterm
EDITOR=pycharm
Voilà… Nous avons rajouté notre variable d’environnement dans quatre fichiers différents, ce qui nous assure qu’elle sera toujours définie. Pas de surprise à attendre. On est ceinture-bretelles! Pensez à recharger le profil avec la commande source, pour activer la variable et faites un essai dans le terminal (en root). Appelez-la:
Vérifiez maintenant que le shell indiqué dans le fichier /etc/passwd est bien bash. C’est important. Nous allons à présent monter la partition au point de montage $LFS puis activer la partition d’échange SWAP. Mais d’abord, il faut créer le répertoire $LFS. Il n’existe pas encore. /mnt est vide.
[root@volgor miamondo]# mkdir -p $LFS
[root@volgor miamondo]# ls /mnt # petite vérification...
lfs # Le répertoire a été créé
[root@volgor miamondo]# mount /dev/sdb1 $LFS
[root@volgor miamondo]# swapon /dev/sdb2
4. Téléchargement des paquets et des correctifs
Notre partition est montée. Cela signifie que nous avons entamé les premiers travaux de construction de notre système. Si on compare avec une maison d’habitation, nous avons effectué le terrassement. Nous arrivons maintenant à un point du livre que je n’ai pas trouvé très clair, en l’occurrence le téléchargement des archives *.tar, lesquelles vont nous permettre de continuer notre belle mission de bâtisseur.
Pour ce faire, nous allons d’abord créer un répertoire sources. Il accueillera toutes les archives et aussi les quelques correctifs (patch). Comme les archives *.tar vont être stockés sur la partition LFS, elles seront toujours à portée de clavier. En fait, c’est comme si nous étions en train de faire livrer tous les matériaux sur le chantier.
Tout d’abord, créons le répertoire sources.
[root@volgor miamondo]# mkdir $LFS/sources
Ensuite, on active le droit d’écriture et le droit sticky sur ce répertoire. « Sticky » signifie que même si de nombreux utilisateurs peuvent écrire sur un répertoire, seul le propriétaire du fichier peut supprimer ce fichier à l’intérieur du répertoire sticky.
Ensuite, c’est là que le livre devient obscur… Nous allons passer au téléchargement des archives *.tar. Peut-être y-a-t-il un problème de traduction. Je ne sais pas trop… La version anglaise me semble plus claire. Finalement, j’ai réussi à trouver la liste des archives de la version 10.10 téléchargeable à partir d’un miroir situé en Allemagne, mon lieu de résidence. L’instruction est sur une seule ligne. Vous n’avez pas à vous occuper du retour chariot.
Et là, on peut dire que c’est la fête des couleurs. Un feu d’artifice illumine le bureau! Quel magnifique spectacle que ces archives aux couleurs de l’arc-en-ciel effaçant l’obscurité pour s’offrir à notre regard d’enfant ébahi. Mon Dieu, les larmes me montent aux yeux. Pardonnez-moi…
C’est d’autant plus beau que même les correctifs ont été téléchargés. Ce sont les fichiers de couleur blanche. Nous allons maintenant vérifier que tout s’est bien passé grâce à ces instructions:
À présent, nous allons faire une longue pause. Il est l’heure d’aller dormir. Nous allons démonter la partition /dev/sdb1 avant d’éteindre l’ordinateur et nous continuerons demain…
[root@volgor miamondo]# umount /dev/sdb
Tiens! On est déjà demain? Mon Dieu, que le temps passe vite! Hop! Debout les morts! Il est sept heures. Une nouvelle journée commence. Avant de boire une bière, Première opération, on ouvre un terminal, on passe en root et on remonte la partition /dev/sdb1.
[miamondo@volgor ~]$ su
Mot de passe :
[root@volgor miamondo]# mount /dev/sdb1 $LFS
Ensuite, nous allons créer plusieurs répertoires qui vont nous être nécessaires par la suite.
Vérifions si tout s’est déroulé comme prévu. Nous constatons que notre distribution embryonnaire s’étoffe! Vous noterez que nous avons créé un répertoire tools. Je ne peux pas vous en dire plus pour le moment puisque je découvre avec vous. Sachez simplement qu’un compilateur croisé sera installé dans ce répertoire car il doit être isolé des autres programmes.
[root@volgor miamondo]# ls $LFS
bin etc lib lib64 lost+found sbin sources tools usr var
5. Ajouter un utilisateur
Pour la suite des festivités, nous n’allons pas continuer en root. C’est beaucoup trop dangereux. Nous allons donc créer un utilisateur que le manuel préconise de nommer lfs. Personnellement, comme je trouve qu’il y a beaucoup de lfs et que ça va finir par être source de confusion, j’ai choisi d’appeler cet utilisateur benoit. C’est mon prénom.
N’oublions pas également le répertoire sources. Dans la foulée, on va vérifier que le changement de propriétaire s’est bien passé. Puis, on va se connecter en tant que benoit, delphonse, amandale ou patriste. Tout dépend de votre choix initial.
[root@volgor miamondo]# chown benoit $LFS/sources
[root@volgor miamondo]# ls -l $LFS
[root@volgor miamondo]# su - benoit
[benoit@volgor ~]$ # invite de commande modifiée
6. Configuration de l’environnement
La commande ci-dessous nous assure qu’aucune variable d’environnement non souhaitée et potentiellement dangereuse, provenant du système hôte, ne parvienne dans l’environnement de construction. L’environnement est propre.
Ensuite, nous créons le fichier caché .bashrc. Je vous invite à consulter la page 32 du manuel pour avoir une explication détaillée des différentes commandes de ce fichier. Mon but n’est pas de recopier le manuel mais de décrire les étapes du processus.
[benoit@volgor ~]$ cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
export LFS LC_ALL LFS_TGT PATH
EOF
Ensuite, nous chargeons le profil du nouvel utilisateur.
[benoit@volgor ~]$ source ~/.bash_profile
Dernière opération très importante. Après avoir basculé en root, il faut neutraliser le fichier /etc/bash.bashrc en le renommant provisoirement, pour éviter qu’il n’affecte gravement la construction des paquets critiques. Vous trouverez plus d’explications au chapitre 4.4. du manuel officiel.
Ouf! Terminé pour cette deuxième partie. Dans le prochain chapitre, cela va se corser un peu car nous allons construire un compilateur croisé et commencer à vraiment bâtir le système. Ce troisième chapitre demandera beaucoup d’attention et de calme. Lisez attentivement les instructions et consultez le manuel officiel en français. Ça ne sert à rien de foncer. On a le temps.