Afficher/cacher Sommaire
EndeavourOS est une distribution GNU/Linux basée sur Arch Linux
- LVM/LUKS, flexibilité de partitionnement en utilisant LVM dans une seule partition cryptée LUKS.
- Avantages:
- partitionnement simple avec connaissance de LVM
- Une seule clé nécessaire pour déverrouiller tous les volumes (p. ex. installation facile de récupération de disque)
- Mise en page du volume non visible lorsque verrouillé
- Méthode la plus facile pour permettre la suspension du disque
- Inconvénients:
- LVM ajoute une couche de mappage supplémentaire et un “hook”
- Moins utile, si un volume doit recevoir une clé séparée
- Avantages:
Installer une distribution EndeavourOS chiffrée sur une partition LVM est impossible avec l'outil "Calamarès"
EndeavourOS temporaire
Pour une installation EndavourOS LVM/LUKS, il faut passer par une installation temporaire
Création Eos USB Live
Création d’une clé USB EndeavourOS bootable
Dans un terminal linux
Télécharger le dernier fichier iSO : https://endeavouros.com/latest-release/
EndeavourOS_Endeavour_neo-2024.09.22.iso
Vérifier checksum
sha512sum -c EndeavourOS_Endeavour_neo-2024.09.22.iso.sha512sum
Résultat de la commande ci dessus après quelques minutes
EndeavourOS_Endeavour_neo-2024.09.22.iso: Réussi
Créer la clé bootable
Pour savoir sur quel périphérique, connecter la clé sur un port USB d’un ordinateur et lancer la commande sudo dmesg
ou lsblk
Dans le cas présent , le périphérique USB est /dev/sdc
sudo dd if=EndeavourOS_Endeavour_neo-2024.09.22.iso of=/dev/sdc bs=4M --progress
Démarrer sur Eos USB Live
Insérer la clé USB EndeavourOS, redémarrer la machine, sur Eos live
Démarrage avec la clé USB insérée dans le Mini tour PC1 et appui sur F8 pour un accès au menu
Choisir UEFI: KingstonDataTraveler 2.0PMAP (3820MB)
Vous arrivez sur la page de sélection
Valider le choix par défaut
- basculer en FR
- ouvrir un terminal
Clavier QWERTY!!!
1 –> System Settings –> Keyboard
Remove Us…
Apply
On va se connecter en SSH
ip a # relever adresse IP
sudo systemctl start sshd
passwd liveuser # changer le mot de passe liveuser --> rtyuiop
sudo firewall-cmd --zone=public --add-port=22/tcp
Se connecter depuis un poste sur le même réseau: ssh liveuser@adresse_IP
Partionnement
en mode su
sudo -s
Le disque : lsblk
nvme0n1 259:0 0 1,9T 0 disk
On partitionne un disque en 3 avec gdisk
- Partition 1 : 512M EFI (code ef00) système de fichier FAT32
- Partition 2 : 1895G LVM (code 8e00) système de fichier EXT4
- Partition restante pour Installation temporaire
Zapper le disque,
(Attention Ceci effacera de manière irréversible toutes les données de votre disque, veuillez sauvegarder toutes les données importantes) :
sgdisk --zap-all /dev/nvme0n1
Partitionnement du disque NVME 2To GPT + LVM
Créer une table de partition GPT à l’aide de la commande sgdisk
:
sgdisk --clear --new=1:0:+512MiB --typecode=1:ef00 --new=2:0:+1885G --typecode=2:8e00 /dev/nvme0n1
Format la partition EFI
mkfs.fat -F32 /dev/nvme0n1p1
Installer Eos XFCE
Utilisation de Calamarès, cliquer sur Démarrer l’installateur
Installation “en ligne”
Bureau: XFCE4
Paquets : Tout sauf LTS Kernel
Chargeur: systemd-boot
Partitions:
Utilisateur: yann
Ordi: PC1
mot passe utilisateur identique admin
Résumé:
Cliquer sur Installer
L’installation est terminée, cliquer “Redémarrer maintenant” et sur Terminé
Créer nouveau système
Clé USB Eos Live insérée, redémarrer dans l'environnement Live-Cd
Clavier QWERTY!!!
Ouvrir un terminal
Créer un accès sur la machine via SSH depuis un poste distant
Lancer le service : sudo systemctl start sshd
Ouvrir le port 22 firewall: sudo firewall-cmd --zone=public --add-port=22/tcp
Créer un mot de passe à liveuser : passwd liveuser
–> rtyuiop
Relever l’adresse ip de la machine : ip a
Déchiffrer système temporaire
Le système temporaire chiffré /dev/nvme0n1p3
Dans l’environnement live-CD, ouvrez un Terminal ,basculez en mode su et tapez (ou marquez et copiez la ligne avec ctrl-c et collez dans le terminal avec shift-ctrl-v ) …
cryptsetup luksOpen /dev/nvme0n1p3 crypttemp # saisir la phrase mot de passe de l'installation
mkdir -p /media/crypttemp
mount /dev/mapper/crypttemp /media/crypttemp
Nos données d’installation temporaires sont désormais accessibles sous /media/crypttemp
bin boot dev efi etc home lib lib64 lost+found mnt opt proc root run sbin srv sys tmp usr var
Créer nouveau système
Chiffrer la partition /dev/nvme0n1p2,saisir la passphrase définitive
cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
Une demande de confirmation est exigée
WARNING!
========
This will overwrite data on /dev/nvme0n1p2 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/nvme0n1p2:
Verify passphrase:
Choisissez un mot de passe sécurisé ( https://xkcd.com/936/ )
Ouvrir le nouveau système chiffré
cryptsetup luksOpen /dev/nvme0n1p2 crypt
# Enter passphrase for /dev/nvme0n1p2:
pvcreate /dev/mapper/crypt
# Physical volume "/dev/mapper/crypt" successfully created.
vgcreate vg0 /dev/mapper/crypt
# Volume group "vg0" successfully created
Une bonne taille de départ pour le volume racine (lvroot) est d’environ 30 Go. Si vous envisagez d’utiliser ultérieurement un fichier d’échange résidant sur root, vous devez en tenir compte.
Le redimensionnement ultérieur des volumes est assez facile, alors n’y réfléchissez pas trop.
Vous pouvez attribuer tout l’espace libre restant au volume d’accueil,
lvcreate --extents 100%FREE vg0 -n lvhome
mais pour augmenter les volumes plus tard et pour les instantanés , il faut de l’espace vide à l’intérieur du groupe de volumes, donc je choisis généralement une taille pour lvhome qui laisse environ 30 Go d’espace inutilisé global dans le volume groupe (en supposant un lecteur de 500 Go, par exemple 500 – 0,512 – 40 – 430 = 29,488)
# 40G root dont 8 swapfile
lvcreate -L 40G vg0 -n lvroot # Logical volume "lvroot" created.
lvcreate -L 150G vg0 -n lvhome # Logical volume "lvhome" created.
lvcreate -L 300G vg0 -n lvmedia # Logical volume "lvmedia" created.
#lvcreate -l 100%FREE vg0 -n lvhome # Logical volume "lvhome" created.
Créez un système de fichiers ext4 sur les volumes logiques.
mkfs.ext4 -L root /dev/mapper/vg0-lvroot
mkfs.ext4 -L home /dev/mapper/vg0-lvhome
mkfs.ext4 -L home /dev/mapper/vg0-lvmedia
Montage sur “mnt”
Monter le nouveau système sur /mnt
pour les systèmes UEFI
mount /dev/mapper/vg0-lvroot /mnt
mkdir -p /mnt/home
mount /dev/mapper/vg0-lvhome /mnt/home
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
lsblk
devrait maintenant fournir une sortie similaire à la suivante (ignorez les tailles, celles-ci proviennent d’une installation de test) …
pour les systèmes UEFI :
nvme0n1 259:0 0 1.9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /mnt/efi
├─nvme0n1p2 259:2 0 1.8T 0 part
│ └─crypt 254:3 0 1.8T 0 crypt
│ ├─vg0-lvroot 254:4 0 40G 0 lvm /mnt
│ ├─vg0-lvhome 254:5 0 150G 0 lvm /mnt/home
│ └─vg0-lvmedia 254:6 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22.2G 0 part
└─crypttemp 254:2 0 22.2G 0 crypt /media/crypttemp
Cloner système temporaire
pour remplir les nouveaux points de montage
rsync -avA /media/crypttemp/ /mnt
Veuillez patienter quelques minutes
Démonter système temporaire
umount /media/crypttemp
cryptsetup luksClose crypttemp
lsblk
nvme0n1 259:0 0 1.9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /mnt/efi
├─nvme0n1p2 259:2 0 1.8T 0 part
│ └─crypt 254:3 0 1.8T 0 crypt
│ ├─vg0-lvroot 254:4 0 40G 0 lvm /mnt
│ ├─vg0-lvhome 254:5 0 150G 0 lvm /mnt/home
│ └─vg0-lvmedia 254:6 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22.2G 0 part
Configurer “crypttab”
Configuration /etc/crypttab
cryptsetup luksUUID /dev/nvme0n1p2
renvoie 5fa90f9d-ac40-4c70-8f58-730a423ce76b
Votre UUID sera différent, alors **assurez-vous d'utiliser votre UUID à l'étape suivante !**
nano /mnt/etc/crypttab
contient une ligne non commentée commençant par luks-
…
Remplacez cette ligne par la suivante ; **n'oubliez pas d' utiliser votre UUID**
cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b none luks
Sauvegarder et quitter.
Basculer en chroot
Passer en chroot
arch-chroot /mnt
le prompt [root@EndeavourOS /]#
Configurer “fstab”
Configurer /etc/fstab
blkid -s UUID -o value /dev/mapper/vg0-lvroot
renvoie l’UUID du volume racine : 04b9e250-1fcd-485b-989f-e753c89bf60f.
blkid -s UUID -o value /dev/mapper/vg0-lvhome
renvoie l’UUID du volume d’accueil : c35a3f8b-583b-4952-9ceb-f9a19194fa6c.
nano /etc/fstab
contient une ligne commençant par /dev/mapper/luks-
…
Supprimez cette ligne et ajoutez ce qui suit (**n'oubliez pas d' utiliser vos UUID**)
UUID=04b9e250-1fcd-485b-989f-e753c89bf60f / ext4 noatime 0 0
UUID=c35a3f8b-583b-4952-9ceb-f9a19194fa6c /home ext4 noatime 0 0
Sauvegarder et quitter.
Options du noyau
Dans systemd-boot, vous éditez le fichier d’entrée approprié qui se trouve sur votre partition EFI dans le répertoire loader/entries
Chaque entrée est une option de démarrage dans le menu et chacune a une ligne appelée options. Vous pouvez modifier ces entrées directement, mais ces changements peuvent être écrasés lors de l’installation ou de la mise à jour de paquets.
UUID de /dev/nvme0n1p2 : blkid -s UUID -o value /dev/nvme0n1p2
Pour effectuer les changements, au lieu de modifier les entrées, modifiez le fichier /etc/kernel/cmdline
qui est un fichier d’une ligne contenant une liste d’options du noyau.
nano /etc/kernel/cmdline
nvme_load=YES nowatchdog rw rd.luks.uuid=5fa90f9d-ac40-4c70-8f58-730a423ce76b root=/dev/mapper/vg0-lvroot
Exécutez ensuite sudo reinstall-kernels
qui remplira les entrées et régénérera les initrds.
reinstall-kernels
Sortie chroot
exit
umount -R /mnt
Oter la clé USB , redémarrer
reboot
FINI! Vous devriez maintenant avoir un système LVMonLUKS fonctionnel avec un volume logique séparé pour /home
EndeavourOS chiffré LVM/LUKS
Premier démarrage
La partition est chiffrée
Au message “Please enter passphrase for disk endeavouros…”, saisir la phrase mot de passe pour déchiffrer le disque
Activation SSH
Activer et lancer le service
sudo systemctl enable sshd --now
Autoriser ssh
sudo firewall-cmd --zone=public --add-port=22/tcp
Relever adresse : ip a
–> 192.168.0.37
Se connecter depuis un poste sur le même réseau: ssh yann@192.168.0.37
Accès sudo
Modifier sudoers pour accès sudo sans mot de passe à l’utilisateur yano
su # mot de passe root identique utilisateur
echo "yann ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-yann
exit # sortie su
Historique de la ligne de commande
Ajoutez la recherche d’historique de la ligne de commande au terminal
Se connecter en utilisateur
Tapez un début de commande précédent, puis utilisez shift + up (flèche haut) pour rechercher l’historique filtré avec le début de la commande.
# Global, tout utilisateur
echo '"\e[1;2A": history-search-backward' | sudo tee -a /etc/inputrc
echo '"\e[1;2B": history-search-forward' | sudo tee -a /etc/inputrc
Unités disques
Liste : lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
└─sda1 8:1 0 111,8G 0 part
└─ssd--120-lv120 254:1 0 111,8G 0 lvm
sdb 8:16 0 476,9G 0 disk
└─sdb1 8:17 0 476,9G 0 part
└─ssd--512-virtuel 254:0 0 476,9G 0 lvm
nvme0n1 259:0 0 1,9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /efi
├─nvme0n1p2 259:2 0 1,8T 0 part
│ └─cryptlvm 254:2 0 1,8T 0 crypt
│ ├─vg0-lvroot 254:3 0 40G 0 lvm /
│ ├─vg0-lvhome 254:4 0 150G 0 lvm /home
│ └─vg0-lvmedia 254:5 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22,2G 0 part
Créer les points de montage
sudo mkdir -p /srv/media
sudo chown $USER:$USER /srv/media
sudo mkdir -p /mnt/{ssd,sharenfs,FreeUSB2To}
sudo chown $USER:$USER /mnt/{ssd,sharenfs,FreeUSB2To}
sudo mkdir -p /virtuel
sudo chown $USER:$USER /virtuel
Relever les UUID des unités : sudo blkid
/dev/mapper/ssd--120-lv120: UUID="6b48e98c-9b85-461b-9371-040765aae682" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme0n1p3: UUID="1a64bf47-fa14-4c9f-b8c4-7c3484f60e94" TYPE="crypto_LUKS" PARTLABEL="endeavouros" PARTUUID="22e5c948-0f32-44d2-9040-cde9534e34e7"
/dev/nvme0n1p1: UUID="E522-8D8D" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="114324a5-4aa7-4ee5-a57e-8568ac5f2f74"
/dev/nvme0n1p2: UUID="5fa90f9d-ac40-4c70-8f58-730a423ce76b" TYPE="crypto_LUKS" PARTUUID="c9640813-16da-4fde-87f6-98a5620e7b72"
/dev/sdb1: UUID="AYko64-7Ysg-IK1P-2hCq-9MUo-VjQl-4NOuWY" TYPE="LVM2_member" PARTUUID="19dd6163-01"
/dev/mapper/vg0-lvhome: LABEL="home" UUID="c35a3f8b-583b-4952-9ceb-f9a19194fa6c" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/cryptlvm: UUID="LwRekN-16qI-L1Nf-WfEY-OLgo-rd3A-XTE3Fg" TYPE="LVM2_member"
/dev/mapper/ssd--512-virtuel: UUID="84bc1aa9-23ac-4530-b861-bc33171b7b42" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda1: UUID="o2NaLz-2Biv-Dx3C-LYJD-vuyp-1Ogl-Oa4Iu2" TYPE="LVM2_member" PARTLABEL="Linux LVM" PARTUUID="3eee16e4-fe68-42bf-861a-cd9e46d22805"
/dev/mapper/vg0-lvmedia: LABEL="home" UUID="0e48444f-104c-4ba0-8b55-5d38ea0583ee" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg0-lvroot: LABEL="root" UUID="04b9e250-1fcd-485b-989f-e753c89bf60f" BLOCK_SIZE="4096" TYPE="ext4"
Ajout au fichier /etc/fstab
# /dev/mapper/vg0-lvmedia
UUID=0e48444f-104c-4ba0-8b55-5d38ea0583ee /srv/media ext4 rw,relatime 0 2
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /virtuel ext4 defaults 0 2
# /dev/mapper/ssd--120-lv120
UUID=6b48e98c-9b85-461b-9371-040765aae682 /mnt/ssd ext4 defaults 0 2
Recharger et monter les unités
sudo systemctl daemon-reload
sudo mount -a
Restauration des données /srv/data
sudo -s
rsync -avA /mnt/ssd/lvmedia/ /srv/media
Les dossiers musicyan et dplus sont ailleurs
mkdir /srv/media/{musicyan,dplus}
sudo -s
rsync -avA /virtuel/musicyan/* /srv/media/musicyan/
rsync -avA /virtuel/dplus/* /srv/media/dplus/
Suppression des dossiers de sauvegardes
sudo rm -r /mnt/ssd/lvmedia
sudo rm -r /virtuel/{musicyan,dplus}
Mise à jour Système
Mode terminal
yay -Syu
Mode graphique
Réseau
Interface pont (bridge)
Créer une interface de pont
nmcli connection add type bridge con-name bridge0 ifname bridge0
Connexion « bridge0 » (c692299c-5076-4b84-adfb-913e154ebf46) ajoutée avec succès.
Affichez les interfaces réseau et notez les noms des interfaces que vous souhaitez ajouter au pont
nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connexion (obtention de la configuration IP) bridge0
lo loopback connecté (en externe) lo
wg0-mullvad wireguard connecté (en externe) wg0-mullvad
enp3s0f0 ethernet déconnecté --
enp3s0f1 ethernet indisponible --
Attribuer les interfaces au pont.
Si les interfaces que vous souhaitez affecter au pont ne sont pas configurées, créez de nouveaux profils de connexion pour elles
nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp3s0f0 master bridge0
Connexion « bridge0-port1 » (34425bb4-3d61-4e6c-81c1-6f76ffe78539) ajoutée avec succès.
Paramétrage pont
- Utiliser le DHCP, aucune action n'est nécessaire
- Définir une adresse IPv4 statique, un masque de réseau, une passerelle par défaut pour la connexion bridge0 :
nmcli connection modify bridge0 ipv4.addresses '192.168.10.2/24' ipv4.gateway '192.168.10.1' ipv4.method manual
- Désactiver ipv6 :
nmcli connection modify bridge0 ipv6.method disabled
Activer la connexion pont
nmcli connection up bridge0
Connexion activée (controller waiting for ports) (Chemin D-Bus actif : /org/freedesktop/NetworkManager/ActiveConnection/6)
Vérifiez que les ports sont connectés et que la colonne CONNECTION affiche le nom de connexion du port
nmcli device
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connecté bridge0
enp3s0f0 ethernet connecté bridge0-port1
lo loopback connecté (en externe) lo
enp3s0f1 ethernet indisponible --
Priorité réseau
L’ordinateur de bureau PC1 a 3 cartes réseau
Souvent, les périphériques intégrés disposent de plusieurs interfaces réseau disponibles simultanément, comme les routeurs réseau dotés d’interfaces filaires et sans fil. Ces périphériques doivent pouvoir sélectionner automatiquement une interface réseau préférée. Pour y parvenir sur une machine Linux, chaque interface possède une valeur métrique qui indique le coût d’utilisation de l’interface. (Changing the Network Routing Metric Permanently)
La connexion au réseau 192.168.0.0/24 via NetworkManager ne se fait pas correctement car il peut se connecter au réseau 192.168.10.0/24
Il faut donner la priorité au réseau 192.168.0.0/24
Commande nmcli device
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connecté bridge0
enp3s0f0 ethernet connecté bridge0-port1
...
Obtenir la valeur métrique
Obtenons la valeur métrique initiale de nos interfaces réseau.
Pour cela, nous utilisons la commande suivante
ip route
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.10.1 dev bridge0 proto static metric 425
...
Il s’agit de la table de routage pour les interfaces enp0s31f6 et bridge0
A la fin de chaque ligne, nous pouvons voir une valeur métrique
Modifier la valeur métrique
Commande nmcli pour modifier la valeur métrique de l’ interface
sudo nmcli connection modify 'eth_enp0s31f6' ipv4.route-metric 10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
La connexion avec une nouvelle valeur métrique est désormais active.
Si nous vérifions la table de routage, nous devrions pouvoir voir la nouvelle valeur métrique
ip route
default via 192.168.0.254 dev enp0s31f6 proto static metric 10
default via 192.168.10.1 dev bridge0 proto static metric 425
...
L’ interface enp0s31f6 a désormais une valeur métrique de 10
Ajout carte réseau 2.5Ghz
Carte tp-link pcie 2.5Ghz TX201
Liste des périphèriques réseau
ip link
enp2s0 : carte tp-link 2.5ghz
créer un nouveau profil de connexion, par exemple sous le nom “tp-link”
nmcli connection add con-name tp-link ifname enp2s0 type ethernet
activer le profil.
sudo nmcli connection up tp-link
Les périphériques
nmcli device
Profil “tp-link”: enp2s0 f0:09:0d:fa:af:ff
Désactiver le profil eth_enp0s31f6
sudo nmcli connection down eth_enp0s31f6
Connexion « eth_enp0s31f6 » désactivée (chemin D-Bus actif : /org/freedesktop/NetworkManager/ActiveConnection/8)
Débrancher le câble réseau
Désactiver le périphérique réseau embarqué “enp0s31f6” via le BIOS
Après redémarrage
Les métriques
Partage disque
Partage disque externe USB sur Freebox
Disque freebox partagé FreeUSB2To
FreeBox
HDD Mobile 2To connecté en USB sur la freebox
Nom de partage : FreeUSB2To + EXT4 + vérification après formatage
Partage windows activé : yannfreebox + mot de passe
PC1
Partage linux samba : sudo pacman -S cifs-utils
Installé par défaut
Point de montage : sudo mkdir -p /mnt/FreeUSB2To
Lien : sudo ln -s /mnt/FreeUSB2To $HOME/FreeUSB2To
Credential : /root/.smbcredentials
avec 2 lignes
username=XXXXXX
password=XXXXXX
Droits
sudo chown -R root:root /root/.smbcredentials
sudo chmod -R 600 /root/.smbcredentials
Les fichiers systèmes
# /etc/systemd/system/mnt-FreeUSB2To.mount
[Unit]
Description=cifs mount script
Requires=network-online.target
After=network-online.service
[Mount]
What=//192.168.0.254/FreeUSB2To
Where=/mnt/FreeUSB2To
Options=credentials=/root/.smbcredentials,rw,uid=1000,gid=1000,vers=3.0
Type=cifs
[Install]
WantedBy=multi-user.target
# /etc/systemd/system/mnt-FreeUSB2To.automount
[Unit]
Description=cifs mount script
Requires=network-online.target
After=network-online.service
[Automount]
Where=/mnt/FreeUSB2To
TimeoutIdleSec=10
[Install]
WantedBy=multi-user.target
Activation
sudo systemctl enable mnt-FreeUSB2To.automount --now
Partage avec Lenovo serveur NFS
PC1
Points de montage : sudo mkdir -p /mnt/sharenfs
Lien : sudo ln -s /mnt/sharenfs $HOME/sharenfs
Ajouter les points de montage du serveur nfs au fichier /etc/fstab
# Les montage NFS du serveur lenovo 192.168.0.215
192.168.0.215:/sharenfs /mnt/sharenfs nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192 0 0
Rechargement et montage
sudo systemctl daemon-reload && sudo mount -a
Points de montage : sudo mkdir -p /mnt/nfs-ssd
Lien : sudo ln -s /mnt/nfs-ssd $HOME/nfs-ssd
Ajouter les points de montage du serveur nfs au fichier /etc/fstab
192.168.0.215:/mnt/nfs-ssd /mnt/nfs-ssd nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192 0 0
Rechargement et montage
sudo systemctl daemon-reload && sudo mount -a
Dossiers et Liens
Les dossiers et Liens sur les autres unités et les dossiers .keepassx
, Notes
, scripts
statique/images
et statique/_posts
sudo mkdir -p /srv/media/{Notes,statique}
sudo mkdir -p /srv/media/statique/{images,_posts}
sudo ln -s /srv/media $HOME/media
sudo mkdir -p /virtuel
sudo ln -s /virtuel $HOME/virtuel
mkdir -p ~/{.ssh,.keepassx}
sudo mkdir -p /mnt/sharenfs/scripts
sudo chown $USER:$USER -R /mnt/sharenfs/scripts
Créer liens sharenfs
ln -s /mnt/sharenfs/pc1/.borg $HOME/Private/.borg
ln -s /mnt/sharenfs/scripts $HOME/scripts
Liens “statique” et “Notes”
les liens pour la rédaction des posts markdown et le dossier des fichiers
# Lien pour affichage des images avec éditeur Retext
sudo ln -s /srv/media/statique/images /images
# Lien pour les fichiers autres
sudo ln -s /srv/media/statique/files /files
Dossiers Documents et Musique
Supprimer les dossiers par défaut Documents et Musique et créer des liens
# suppression Documents et Musique
sudo rm -r $HOME/Documents
sudo rm -r $HOME/Musique
#Création des liens
sudo ln -s /srv/media/Documents $HOME/Documents
sudo ln -s /mnt/sharenfs/Musique $HOME/Musique
Mise à jour EndeavourOS
Mode graphique
Résumé
Paramètres XFCE
On déplace le tableau de bord du bas vers le haut de l’écran
Gestion des 2 écrans
- Sharp en primaire
Modification du tableau de bord , clic-droit → Tableau de bord → Préférences de tableau de bord → Eléments
Affichage date et heure
ou format personnalisé dans Horloge : %e %b %Y %R
Gestionnaire d’alimentation
Supprimer icône alimentation dans la barre des tâches
Apparence
Economiseur d’écran
Deux cartes réseau sont installés
LightDM
Utilise lightdm-slick-greeter
Un greeter basé sur GTK plus axé sur l’apparence que lightdm-gtk-greeter
Les paramètres sont dans le fichier /etc/lightdm/slick-greeter.conf
[Greeter]
background=/srv/media/dplus/images/Fonds/wp2618258.jpg
draw-user-backgrounds=false
draw-grid=false
theme-name=Arc-Dark
icon-theme-name=Qogir
cursor-theme-name=Qogir
cursor-theme-size=16
show-a11y=false
show-power=false
background-color=#000000
Démarre auto ou pas de la session, modifier le fichier /etc/lightdm/lightdm.conf
‘, (début ligne sans ou avec commentaire #
)
sudo nano /etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=yann
Ecran principal pour la fenêtre de connexion : EndeavourOS XFCE - LightDM sur les systèmes multi-affichages
Si vous changez l’image de fond, il désactiver draw-grid
background=/usr/share/endeavouros/backgrounds/light_sky_stars_85555_1366x768_yano.jpg
draw-grid=false
Déverrouillage des volumes LUKS2
Description
- Slot 0 pour le déverrouillage du volume par saisie d’une phrase mot de passe.
- Slot 1 ,2 et 3 pour le déverrouillage par des clés avec un appui sur une touche.
- Slot 4 - Ajout d’une phrase mot de passe pour le recovery (OPTION)
Au final nous aurons 4 “slot” utilisés
Installer librairie libfido2 pour la prise en charge des clés Yubico et SoloKeys
sudo pacman -S libfido2
Enroler clé USB YubiKey 5 NFC
Vérifier que la YubiKey est insérée dans un port USB
Lister et enroler la yubikey
sudo systemd-cryptenroll --fido2-device=list
PATH MANUFACTURER PRODUCT
/dev/hidraw5 Yubico YubiKey OTP+FIDO+CCID
Enroler la clé pour le déverrouillage du disque chiffré nvme0n1p2
sudo systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: *********************
Requested to lock with PIN, but FIDO2 device /dev/hidraw5 does not support it, disabling.
Initializing FIDO2 credential on security token.
👆 (Hint: This might require confirmation of user presence on security token.)
Generating secret key on FIDO2 security token.
👆 In order to allow secret key generation, please confirm presence on security token.
New FIDO2 token enrolled as key slot 1.
Le Y de la clé se met à clignoter , il suffit de poser son doigt sur l’emplacement du Y pour le déverrouillage
Retirer la première clé et répéter l’opération ci-dessus pour les autres clés
Enroler une passphrase de recouvrement (OPTION)
Les jetons et puces de sécurité FIDO2, PKCS#11 et TPM2 s’associent bien avec les clés de recouvrement : puisque vous n’avez plus besoin de taper votre mot de passe tous les jours, il est logique de vous en débarrasser et d’enregistrer à la place une clé de recouvrement à forte entropie que vous imprimez ou scannez hors écran et conservez dans un endroit physique sûr.
Voici comment procéder :
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: ***********
A secret recovery key has been generated for this volume:
🔐 vbcrnbjn-vkrkihte-rctbufne-nlihihjl-tegudteu-rkjthcgd-hvhuvgik-rugeregh
Please save this secret recovery key at a secure location. It may be used to
regain access to the volume if the other configured access credentials have
been lost or forgotten. The recovery key may be entered in place of a password
whenever authentication is requested.
New recovery key enrolled as key slot 3.
Cette opération génère une clé, l’enregistre dans le volume LUKS2, l’affiche à l’écran et génère un code QR que vous pouvez scanner en dehors de l’écran si vous le souhaitez.
La clé possède la plus grande entropie et peut être saisie partout où vous pouvez saisir une phrase d’authentification.
C’est pourquoi il n’est pas nécessaire de modifier le fichier /etc/crypttab pour que la clé de récupération fonctionne.
Enroler une clé USB SoloKeys (OPTIONNEL)
Lister la clé
systemd-cryptenroll --fido2-device=list
PATH MANUFACTURER PRODUCT
/dev/hidraw4 SoloKeys Solo 4.1.5
Ajout de la solokeys
sudo systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: ***********
Requested to lock with PIN, but FIDO2 device /dev/hidraw1 does not support it, disabling.
Initializing FIDO2 credential on security token.
👆 (Hint: This might require confirmation of user presence on security token.)
Generating secret key on FIDO2 security token.
👆 In order to allow secret key generation, please confirm presence on security token.
New FIDO2 token enrolled as key slot 3.
Lors du boot , le S de la SoloKeys passe au ROUGE et il suffit d’appuyer sur le voyant pour qu’il repasse au vert afin de lancer le processus de déchiffrement et finir le démarrage
Prise en charge YubiKey et SoloKey
Les options timeout de crypttab
timeout=
Spécifie le délai d'attente pour la demande d'un mot de passe. Si aucune unité
n'est spécifiée, l'unité utilisée est la seconde. Les unités prises en charge sont s, ms, us,
min, h, d. Un délai de 0 permet d'attendre indéfiniment (valeur par défaut).
token-timeout=
Spécifie le temps d'attente maximum pour que les dispositifs de sécurité configurés (c'est-à-dire FIDO2, PKCS#11, TPM2) apparaissent.
configurés (c'est-à-dire FIDO2, PKCS#11, TPM2). Prend une valeur
en secondes (mais d'autres unités de temps peuvent être spécifiées,
voir systemd.time(7) pour les formats supportés). La valeur par défaut est 30s.
Une fois le délai spécifié écoulé, l'authentification par
mot de passe est tentée. Notez que ce délai s'applique à
l'attente de l'apparition du dispositif de sécurité - il ne s'applique pas
ne s'applique pas à la demande de code PIN pour le dispositif (le cas échéant)
ou autre. Passez 0 pour désactiver le délai et attendre indéfiniment.
Configurer /etc/crypttab pour la prise en charge des clés
sudo nano /etc/crypttab
# <name> <device> <password> <options>
#cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b /crypto_keyfile.bin luks
cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b - fido2-device=auto,token-timeout=20s
token-timeout=20s
–> Si aucune clé n’est connectée , le mot de passe devra être saisi après 20 secondes de délai
Sauvegarder et quitter.
Réinitialiser
sudo reinstall-kernels
Redémarrer la machine
Plymouth - Processus de démarrage graphique
Plymouth - Processus de démarrage graphique
Installation Paquets
On commence par tout ce qui est graphique : gimp, cups (gestion de l’imprimante) et hplip (si vous avez une imprimante scanner Hewlett Packard). Le paquet python-pyqt5 est indispensable pour l’interface graphique de HPLIP+scan. Webkigtk2 étant indispensable pour la lecture de l’aide en ligne de Gimp. outil rsync, Retext éditeur markdown, firefox fr, thunderbird, libreoffice, gdisk, bluefish, Double Commander , Menulibre pour la gestion des menus , outils android clementine
yay -S cups system-config-printer gimp hplip libreoffice-fresh-fr thunderbird-i18n-fr jq figlet p7zip tmux calibre retext bluefish gedit doublecmd-gtk2 terminator filezilla minicom zenity android-tools yt-dlp qrencode zbar xclip nmap jre-openjdk-headless openbsd-netcat borg xterm gparted tigervnc xournalpp qbittorrent ldns strawberry
# Autres avec compilation
yay -S freetube-bin signal-desktop xsane
# Gestion des menus du bureau, construction du paquet avant installation
yay -S menulibre
- System-config-printer est une interface graphique écrite en Python et qui utilise Gtk+ pour configurer un serveur CUPS. Son but premier est de configurer le système d’impression sur l’hôte local, mais il peut également configurer une imprimante distante.
- HPLIP est un ensemble de pilotes pour l’impression sous GNU / Linux des imprimantes Hewlett Packard.
- FIGlet est un logiciel qui crée des bannières textuelles dans différentes polices d’écriture
- Jq est un programme qui permet de filtrer, découper, transformer et grouper des données JSON facilement.
- p7zip est le portage en ligne de commande Unix de 7-Zip, un archiveur de fichier qui compresse avec des gros ratios de compression.
- Tmux est un outil qui permet d’exploiter plusieurs terminaux au sein d’un seul affichage.
- calibre est un logiciel gratuit et open source qui vous permet de gérer, convertir et synchroniser vos livres numériques.
- ReText est multiplateforme et écrit en Python. Il permet d’éditer des documents au balisage léger, en particulier le Markdown, et peut afficher le rendu HTML, en écran partagé
- Bluefish est un éditeur de texte dédié à la programmation informatique. Il se distingue notamment par ses nombreux outils et par la longue liste de langages de développement compatibles.
- Double Commander est un gestionnaire de fichiers multiplateforme au source ouvert avec deux panneaux côte à côte.
- Terminator est un terminal virtuel qui a la particularité de permettre de partager la fenêtre selon vos envies et ainsi organiser plus simplement vos différentes fenêtres.
- FileZilla est un logiciel qui vous permet de transférer des fichiers entre votre ordinateur et un serveur distant. Il est compatible avec Windows, Mac, Linux et les protocoles FTP, FTPS et SFTP.
- Minicom est un programme de contrôle de modem et d’émulation de terminal pour les Unix-like. Il permet de configurer des équipements réseaux via leur port console, comme les routeurs Cisco.
- Zenity est un outil qui permet d’afficher des boîtes de dialogue GTK+ depuis la ligne de commandes ou au travers de scripts shell
- Android SDK Platform-Tools (ADB) est l’outil officiel de Google qui permet d’utiliser les commandes ADB sur les appareils Android.
- yt-dlp, script écrit en Python, est un logiciel open source qui permet de télécharger des vidéos à partir de plusieurs sites de partage de vidéos, notamment YouTube
- Qrencode est une bibliothèque rapide et compacte pour l’encodage de données en QR Code, un symbole 2D qui peut être scanné par un téléphone portable
- ZBar est un logiciel de lecture de codes-barres à partir de diverses sources, telles que les flux vidéo, les fichiers d’images et les capteurs d’intensité brute. Il prend en charge de nombreuses symbologies courantes, dispose d’une mise en œuvre souple et en couches et d’un code de petite taille, et convient à une utilisation embarquée.
- Xournal est un outil open source permettant d’annoter des fichiers PDF. Il prend en charge la saisie au stylo, à la souris et au clavier. Il est couramment utilisé, avec Xournal++, pour ajouter des annotations et des signatures électroniques aux fichiers PDF, en particulier sur les ordinateurs de bureau Linux.
- TigerVNC (de l’anglais, « Tiger Virtual Network Computing ») est un système pour le partage de bureau graphique vous permettant de contrôler d’autres ordinateurs à distance.
- Borg Backup (Borg en abrégé) est un programme de sauvegarde incrémentielle en ligne de commande.
- qBittorrent est un client Bittorrent gratuit et fiable qui vous permet de télécharger et de partager des fichiers via le protocole BitTorrent
- Xclip Cette application permet d’utiliser le presse-papier en ligne de commande. Elle permet notamment de rediriger la sortie standard d’une commande directement vers le presse-papier, afin de pouvoir s’en servir immédiatement.
- ldns est une bibliothèque DNS rapide avec le but de simplifier la programmation DNS et pour permettre aux développeurs de facilement créer des programmes qui soient conformes aux RFC actuelles et aux brouillons Internet.
- Nmap (« Network Mapper ») est un outil open source d’exploration réseau et d’audit de sécurité. Il a été conçu pour rapidement scanner de grands réseaux, mais il fonctionne aussi très bien sur une cible unique.
- GParted est une application de gestion et d’organisation de partitions distribuée sous licence libre GPLv2. Elle permet de créer, d’effacer et de modifier les partitions de vos disques durs, clés USB, cartes SD, etc.
- openbsd-netcat L’utilitaire nc (ou netcat) est utilisé pour tout ce qui concerne TCP, UDP ou les sockets du domaine UNIX. Il peut ouvrir des connexions TCP, envoyer des paquets UDP, écouter sur des ports TCP et UDP arbitraires, effectuer un balayage des ports et gérer à la fois IPv4 et IPv6.
- xterm est l’émulateur de terminal standard pour l’environnement graphique X Window System. Un utilisateur peut disposer de plusieurs instances de xterm simultanément dans le même écran, chacune d’entre elles offrant des entrées/sorties indépendantes pour les processus qui s’y exécutent
- Strawberry Music Player excelle par la richesse de ses fonctionnalités. Outre la lecture de musique, l’utilisateur peut créer et gérer des playlists, organiser aisément sa collection selon divers critères, et même éditer les tags des pistes audio.
- FreeTube est un client privé multiplateforme qui vous permet de regarder YouTube sur votre ordinateur en toute tranquillité.
- Signal, l’équivalent libre de WhatsApp. Signal est une application de messagerie similaire à WhatsApp, mais étant plus indépendante. Elle permet aux utilisateurs de se transmettre des messages, des photos, des vidéos et des documents. La transmission des messages est chiffrée de bout en bout.
- XSane a été conçu pour l’acquisition d’images avec votre scanner. Vous pouvez scanner un fichier, faire une photocopie, créer un fax, créer un courriel, et enfin démarrer xSane à partir de GIMP avec un greffon spécifique.
- MenuLibre est un éditeur de menu pour les environnements de bureau tels que Budgie, LXDE (Lubuntu), XFCE (Xubuntu), et également GNOME ou Unity.
ReText
Fichier de configuration ~/.config/ReText project/ReText.conf
[General]
appStyleSheet=/home/yann/.config/ReText project/retext.qss
defaultPreviewState=normal-preview
recentFileList=
styleSheet=/home/yann/.config/ReText project/retext.css
useWebEngine=true
useWebKit=true
Les fichiers retext.css et retext.qss
Etendre Réduire retext.css
Fichier retext.qss
QTextEdit {
color: black;
background-color: white;
}
Tmux
Etendre Réduire fichier de configuration "~/.tmux.conf"
Minicom
Paramétrage de l’application terminale minicom
sudo minicom -s
Seul les paramètres à modifier sont cités
Configuration du port série
A - Port série : /dev/ttyUSB0
F - Contrôle de flux matériel : Non
Echap
Enregistrer config. sous dfl
Sortir de Minicom
Flameshot (copie écran)
Copie écran (flameshot)
Flameshot c’est un peu THE TOOL pour faire des captures d’écrans
yay -S flameshot
Lancer l’application XFCE Flameshot et l’icône est visible dans la barre des tâches
Paramétrage de flameshot, clic droit sur icône , Configuration
Paramétrage de flameshot
scrpy émulation android
Utilise adb et le port USB
yay -S scrcpy
Client Nextcloud
Installation client nextcloud
yay -S nextcloud-client libgnome-keyring gnome-keyring
Démarrer le client nextcloud , après avoir renseigné l’url ,login et mot de passe pour la connexion
Trousseau de clé avec mot de passe idem connexion utilisateur
Paramétrage
- Menu → Lancer Client de synchronisation nextcloud
- Adresse du serveur : https://cloud.xoyaz.xyz
- Nom d’utilisateur : yann
- Mot de passe : xxxxx
- Sauter les dossiers à synchroniser, Ignorer la configuration des dossiers
- Trousseau de clés = mot de passe connexion utilisateur
- Paramètres nextcloud
Saisir les différents dossiers à synhroniser
Au prochain redémarrage, il faudra confirmer le mot de passe du trousseau
Gestion mot de passe (keepassxc)
Ajouter une synchronisation de dossier nextcloud : /home/yann/.keepassx (local) → Home/.keepasx (serveur)
Installer keepassxc
yay -S keepassxc
Ajouter aux favoris “KeepassXC” et lancer l’application → Ouvrir une base de données existante
Base de données –> Ouvrir une base de données (afficher les fichiers cachés) : ~/.keepassx/yannick_xc.kdbx –> Ouvrir
Affichage → Thème : Sombre
Affichage → Mode compact , un redémarrage de l’application est nécessaire
Déverrouillage avec clé matérielle
SSHFS (facultatif)
SSHFS sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion SSH, le tout avec des droits utilisateur.
Installer paquet SSHFS
sudo pacman -S sshfs
sshfs est installé par défaut sur la distribution EndeavourOS
Création des partages utilisés par sshfs (facultatif)
mkdir -p $HOME/vps/{borgbackup,lxc,vdb,xoyaz.xyz,xoyize.xyz}
Exemple de montage manuel
sshfs -oIdentityFile=<clé privée> utilisateur@domaine.tld:<dossier distant> <dossier local> -C -p <port si dfférent de 22>
Gestionnaire de fichiers
Double Commander est un gestionnaire de fichiers open source multiplateforme avec deux panneaux côte à côte. Il s’inspire de Total Commander
Application GTK
yay -S doublecmd-gtk2
Les paramètres sont stockés dans le dossier ~/.config/doublecmd
Thunderbird
Lancer thunderbird à l’ouverture de session xfce
Paramètres → Session et démarrage → Démarrage automatique d’application
Ajouter thunderbird aux favoris et lancer
bashrc alias
Dans le fichier ~/.bashrc
alias
alias ls='ls --color=auto'
alias ll='ls -lav --ignore=..' # show long listing of all except ".."
alias l='ls -lav --ignore=.?*' # show long listing but no hidden dotfiles except "."
alias aide='xdg-open https://static.rnmkcy.eu/aide-jekyll-text-theme.html#autres-styles'
alias android='/home/yann/virtuel/KVM/bliss.sh'
alias audio='yt-dlp --extract-audio --audio-format m4a --audio-quality 0 --output "~/Musique/%(title)s.%(ext)s"'
alias audiomp3='yt-dlp --extract-audio --audio-format mp3 --audio-quality 0 --output "~/Musique/%(title)s.%(ext)s"'
alias borglist='/home/yann/scripts/borglist.sh'
alias calibreraz='adb -s CNBT80D20191101145 shell -x rm /sdcard/Document/metadata.calibre'
alias certok='/home/yann/scripts/ssl-cert-check'
alias compress='/home/yann/scripts/compress'
alias dnsleak='/home/yann/scripts/dnsleaktest.py'
alias findh='cat /home/yann/scripts/findhelp.txt'
alias homer="ssh bookvm@192.168.0.225 -p 55215 -i /home/yann/.ssh/vm-debian12 '/home/bookvm/homer/remoh.py'"
alias iceyanwg="sh /mnt/sharenfs/pc1/scripts/wgiceyan.sh"
alias ipleak='curl https://ipv4.ipleak.net/json/'
alias l='ls -lav --ignore=.?*'
alias ll='ls -lav --ignore=..'
alias ls='ls --color=auto'
alias mediasync='/home/yann/scripts/sav-yann-media.sh'
alias mediajour='/usr/bin/journalctl --no-pager -t sauvegardes --since today'
alias nmapl='sudo nmap -T4 -sP 192.168.0.0/24'
alias odt2html='/home/yann/scripts/_odt2html+index'
alias odtprivate='/home/yann/scripts/_odt2html+index_private'
alias orphelin='sudo pacman -Rsn $(pacman -Qdtq)'
alias otp='/home/yann/scripts/generer-code-2fa-vers-presse-papier-toutes-les-30s.sh'
alias ovh="ssh leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519 'cd /home/leno/ovh_api/; /home/leno/ovh_api/ApiOvh/bin/python domain.py xoyize.xyz cinay.eu xoyaz.xyz ouestline.xyz rnmkcy.eu yanfi.net icevps.xyz xoyize.net iceyan.xyz; cd /home/leno'"
alias rename='/home/yann/scripts/remplacer-les-espaces-accents-dans-une-expression.sh'
alias service='systemctl --type=service'
alias sshm='/home/yann/scripts/ssh-manager.sh'
alias ssl='/home/yann/scripts/ssl-cert-check'
alias static='cd /home/yann/media/yannstatic; /home/yann/.rbenv/shims/bundle exec jekyll build -d /home/yann/media/yannstatic/static; cd ~'
alias status='/home/yann/scripts/status.sh'
alias synchro='journalctl --user -u media_yannstatic_site.service --no-pager --since today'
alias toc='/home/yann/scripts/toc/toc.sh'
alias tocplus='/home/yann/scripts/toc/tocplus.sh'
alias tracesgpx="ssh bookvm@192.168.0.225 -p 55215 -i /home/yann/.ssh/vm-debian12 'tracesgpxnew /home/bookvm/media/osm-new/file'"
alias traduc='/usr/local/bin/trans'
alias vncasus='sh /home/yann/scripts/vncasus.sh'
alias vncdell='sh /home/yann/scripts/vncdell.sh'
alias vncmarina='sh /home/yann/scripts/vncmarina.sh'
alias wgiceyan='sh /home/yann/scripts/wgiceyan.sh'
alias x96='adb connect 192.168.0.22:5555'
alias youtube='yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --output "~/Vidéos/%(title)s.%(ext)s" --ignore-errors'
nous rechargeons le fichier pour appliquer les modifications
source ~/.bashrc
Imprimante et scanner
Prérequis , paquets cups cups-filters cups-pdf system-config-printer hplip installés (Pilotes HP pour DeskJet, OfficeJet, Photosmart, Business Inkjet et quelques modèles de LaserJet aussi bien qu’un certain nombre d’imprimantes Brother)…
Installer graphiquement l’imprimante
Pour contourner le problème , éditer le fichier /etc/nsswitch.conf
Ajouter mdns_minimal [NOTFOUND=return]
avant resolve
hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
Après correctif
Avec cups : http://localhost:631/
Installation du scanner
Coté logiciel il vous faudra sane et son interface graphique xsane, ainsi qu’éventuellement xsane-gimp le plugin pour gimp.
yay -S xsane xsane-gimp
Vérifier si le scaner est reconnu : sudo scanimage -L
device `escl:https://192.168.0.24:443' is a HP OfficeJet 7510 series [C22036] platen,adf scanner
device `hpaio:/net/officejet_7510_series?ip=192.168.0.24&queue=false' is a Hewlett-Packard officejet_7510_series all-in-one
Test scan, placer un original pour photocopie
scanimage --device hpaio:/net/officejet_7510_series?ip=192.168.0.24 --format=png > test.png
Navigateur Floorp
Floorp est un navigateur basé sur Firefox qui bloque les traceurs malveillants, offre une mise en page flexible et personnalisable, et ne collecte pas les données des utilisateurs. Découvrez ses fonctionnalités, ses thèmes, ses mises à jour et son code source ouvert.
yay -S floorp-bin
Application Mullvad
Générateur site statique
Ensemble d’applications basé sur ruby et jekyll qui permet la génération de site statique à partir de fichiers markdown
Installation sur archlinux
sudo pacman -S ruby ruby-erb base-devel
Pour ne pas installer les paquets RubyGems (appelés gems) en tant qu’utilisateur root. A la place, mettez en place un répertoire d’installation de gem pour votre compte utilisateur.
Les commandes suivantes ajoutent des variables d’environnement à votre fichier ~/.bashrc pour configurer le chemin d’installation des gems
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Puis, installer Jekyll et Bundler
gem install jekyll bundler
Les versions installées
Suite installation –> yannstatic - générateur site statique
Ntfy
Ntfy, qui se prononce “notify”, est un service de notification ultra léger, permettant d’envoyer des messages vers un smartphone ou un ordinateur via de simples scripts, sans besoin de compte et totalement gratuitement !
yay -S ntfy-bin
FreeTuxTv
FreetuxTV est une application qui permet de regarder et enregistrer facilement les chaînes de télévision sous GNU/Linux et les chaînes de télévision de votre fournisseur d’accès internet.
En mode su
echo "192.168.0.254 mafreebox.freebox.fr" >> /etc/hosts
Installation
sudo pacman -S freetuxtv
Paramétrage du parefeu firewalld (Configuration de firewalld pour le multicast VLC freebox)
Créer les services /etc/firewalld/services//mafreebox.xml et /etc/firewalld/services//vlc.xml pour firewalld
mafreebox.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>mafreebox</short>
<description>Permission pour mafreebox et vlc</description>
<port protocol="udp" port=""/>
</service>
vlc.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>vlc2</short>
<description>Permission pour mafreebox et vlc</description>
<port protocol="udp" port="15947"/>
<destination ipv4="228.67.43.91"/>
</service>
Les ajouter à la zone public pour rendre ces règles permanentes
/etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="ipp-client"/>
<service name="mdns"/>
<service name="ipp"/>
<service name="mafreebox"/>
<service name="vlc"/>
<forward/>
</zone>
Recharger le parefeu
firewall-cmd --reload
Virtuel QEMU KVM VMM
Installation Virt-Manager
- Virt-Manager Complete Edition - Installation simplifiée
- Accés aux machines virtuelles KVM distantes via virt-manager
- Pont réseau virtuel “host-bridge”
- Gestionnaire de machine virtuelles, activer “xml editing”
- Restaurer les configurations de VM
sudo cp ~/virtuel/etc-libvirt-qemu/*.xml /etc/libvirt/qemu/
Déclarer le pont (bridge) à KVM
Créer un fichier de définition de réseau au format XML : nano router-tenda.xml
<network>
<name>router-tenda</name>
<forward mode="bridge"/>
<bridge name="bridge0" />
</network>
Appliquer la configuration :
sudo virsh net-define router-tenda.xml # -> Réseau host-tenda défini depuis router-tenda.xml
sudo virsh net-start router-tenda # -> Réseau router-tenda démarré
sudo virsh net-autostart router-tenda # -> Réseau router-tenda marqué en démarrage automatique
Vérification
sudo virsh net-list --all
Nom État Démarrage automatique Persistant
-------------------------------------------------------------
router-tenda actif oui oui
La structure libvirt
# Les configurations xml
[root@pc1 yann]# tree -L 2 /etc/libvirt/qemu
/etc/libvirt/qemu
├── autostart
│ └── vm-debian12.xml -> /etc/libvirt/qemu/vm-debian12.xml
├── EndeavourOS.xml
├── networks
│ ├── autostart
│ ├── default.xml
│ └── router-tenda.xml
└── win11.xml
# les images sous KVM
[yann@pc1 ~]$ tree -L 2 ~/virtuel/
/home/yann/virtuel/
├── eos
│ └── eos-chiffre_luks_backup.bin
├── KVM
│ ├── eos-lvm-luks-1.qcow2
│ └── wineleven.qcow2
├── KVM_SAV
│ ├── etc-libvirt-qemu
│ └── images_qcow2
└── nspawn
└── nspbullseye
Développement
Wing personal python IDE
Wing personal python IDE → Téléchargement
# Décompression de la version téléchargée
tar xjvf wing-personal-10.0.6.0-linux-x64.tar.bz2
# Passage en root
sudo -s
# Lancement procédure installation
cd wing-personal-10.0.6.0-linux-x64
./wing-install.py
Déroulement de la commande
Where do you want to install the support files for Wing Personal (default
= /usr/local/lib/wing-personal9)?
/usr/local/lib/wing-personal9 does not exist, create it (y/N)? y
Where do you want to install links to the Wing Personal startup scripts
(default = /usr/local/bin)?
[...]
Writing file-list.txt
Icon/menu install returned err=0
Done installing. Make sure that /usr/local/bin is in your path and type
"wing-personal9" to start Wing Personal.
Effacer les fichiers
# Suppression dossier et fichier
cd ..
rm -rf wing-personal*
# sortie root
exit
Go et NodeJS
Archlinux Go
yay -S go
go version
go version go1.23.2 linux/amd64
Archlinux Node.js npm
yay -S nodejs npm
node --version && npm --version
v22.9.0
10.8.3
NVM, également appelé « Node Version Manager », est un outil utilisé pour installer et gérer plusieurs versions de Node.js sur le système.
Installer la dernière version de NVM à l’aide de la commande suivante
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
source ~/.bashrc
Vérifier
nvm --version
0.39.2
Installer Node.js avec NVM
Pour lister toutes les versions disponibles Node.js
nvm list-remote
Vous obtiendrez une liste de toutes les versions
v20.17.0 (LTS: Iron)
v20.18.0 (Latest LTS: Iron)
v22.2.0
v22.3.0
v22.4.0
v22.4.1
v22.5.0
v22.5.1
v22.6.0
v22.7.0
v22.8.0
v22.9.0
Pour installer la dernière version de Node.js
nvm install node
Pour installer la dernière version stable de Node.js
nvm install --lts
Pour installer une version spécifique de Node.js
nvm install 18.10.0
Pour lister toutes les versions installées de Node.js
nvm ls
Pour modifier la version Node.js par défaut à 19.0.0
nvm utilisation 19.0.0
Dbeaver
DBeaver est basé sur le framework Eclipse, il est open source et il supporte plusieurs types de serveurs de bases de données comme : MySQL, SQLite, DB2, PostgreSQL, Oracle…
Version java si installé : java --version
openjdk 22.0.2 2024-07-16
OpenJDK Runtime Environment (build 22.0.2+9)
OpenJDK 64-Bit Server VM (build 22.0.2+9, mixed mode, sharing)
Installation
yay -S dbeaver
Sync Explicit (1): dbeaver-24.2.1-1
résolution des dépendances…
:: Il y a 6 fournisseurs disponibles pour java-runtime>=17 :
:: Dépôt extra
1) jdk-openjdk 2) jdk17-openjdk 3) jdk21-openjdk 4) jre-openjdk 5) jre17-openjdk 6) jre21-openjdk
Entrer un nombre (par défaut, 1 est sélectionné): 4
recherche des conflits entre paquets…
:: jre-openjdk - 22.0.2.u9-1 et jre-openjdk-headless - 22.0.2.u9-1 sont en conflit. Supprimer jre-openjdk-headless ? [o/N] o
MariaDB
Résumé des commandes en mode su
pacman -S mariadb
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl enable mariadb --now
systemctl status --no-pager --full mariadb --full
Sécuriser
sudo mysql_secure_installation
PostgreSQL
Création d’un bash nommé articles_remarquables_ttrss
pour exécuter les opérations suivantes:
- Connexion ssh à la machine virtuelle Alpine Linux et exécution d-un dump de la base de données
- La commande dump :
sudo docker exec -i aluser-db-1 /bin/bash -c "PGPASSWORD=Mot_Passe_Base pg_dump --username postgres postgres" > dump_ttrss.sql
- Note: La commande est dans un fichier nommé
import_base.sh
- La commande dump :
- Importer localement la base au format SQL
- Recréer la base PostgreSQL (PostgreSQL installé sur la machine où s’exécute le bash)
- Exécuter une requête qui génére un fichier markdown qui sera automatiquement intégré dans le site statique
Le bash articles_remarquables_ttrss
#!/bin/bash
set -euo pipefail
trap 'echo "Une erreur est survenue."; exit 1' ERR
# Connexion SSH VM Alpine ttrss, récupération base postgresql ttrss sous forme de fichier SQL
ssh -p 55217 -i /home/yann/.ssh/ttrss_alpine-vm aluser@192.168.0.217 'sh import_base.sh'
scp -P 55217 -i /home/yann/.ssh/ttrss_alpine-vm aluser@192.168.0.217:/home/aluser/dump_ttrss.sql /home/yann/media/devel/psql/
# Localement, supprimer et recréer base vide postgresql ttrss
psql -U postgres -c "DROP DATABASE ttrss"
psql -U postgres -c "CREATE DATABASE ttrss"
# Import fichier SQL dans la base
psql -U postgres ttrss < /srv/media/devel/psql/dump_ttrss.sql
# Générer le fichier markdown
psql ttrss -U postgres -c "\COPY (
select concat('<li><a href=\"' || ttrss_entries.link || '\">', ttrss_entries.title || ' (' ,ttrss_feeds.title || ')</a></li> ' )
from ttrss_entries
join ttrss_user_entries
on ttrss_entries.id = ttrss_user_entries.int_id
join ttrss_feeds
on ttrss_feeds.id = ttrss_user_entries.feed_id
where ttrss_user_entries.marked = true
order by ttrss_entries.updated DESC)
TO '/srv/media/devel/psql/ttrss.md'"
# Créer le fichier liens_ttrss.md dans le dossier yannstatic
# cat /srv/media/devel/psql/Entete_liens_ttrss.txt /srv/media/devel/psql/ttrss.md /srv/media/devel/psql/Pied_liens_ttrss.txt > /srv/media/yannstatic/liens_ttrss.md
LIENS_TTRSS="/srv/media/yannstatic/liens_ttrss.md"
cat << EOF > $LIENS_TTRSS
---
layout: article
titles: Liens ttrss au format HTML
---
<html lang="fr">
<body>
<head>
<meta charset="utf-8">
<title>Doc Html</title>
</head>
<div class="search-bar">
<div class="search-box js-search-box">
<input type="text" id="saisie-recherche" onkeyup="rechercheFonction()" placeholder="Rechercher..." title="Saisir" autofocus>
</div>
</div>
<ul id="articlesTTRSS">
EOF
cat /srv/media/devel/psql/ttrss.md >> $LIENS_TTRSS
cat << EOF >> $LIENS_TTRSS
</ul>
<button onclick="topFunction()" id="myBtn" title="Haut de page">↑</button>
<script>
//Get the button
var mybutton = document.getElementById("myBtn");
// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
mybutton.style.display = "none";
}
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
function rechercheFonction() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("saisie-recherche");
filter = input.value.toUpperCase();
ul = document.getElementById("articlesTTRSS");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
// Cacher le champ de recherche
var mysearchbox = document.getElementById("searchbox");
mysearchbox.style.visibility = "hidden";
</script>
</body>
</html>
EOF
Maintenance
Sauvegardes locales
Sauvegardes locales avec systemd utilisateur service et timer
La sauvegarde démarre 3 minutes après la mise sous tension de PC1
Les logs : journalctl --user -u savyann.service
Liste des timers : systemctl --user list-timers --all
Pacman Hooks
- Pacman hooks for setting up certain system identification files of EndeavourOS (eos-hooks)
- Pacman hooks
Liste paquets installés
Ce hook sauvegardera une liste de vos paquets natifs et étrangers (AUR) installés. Cela garantit que vous aurez toujours une liste à jour de tous vos paquets que vous pourrez réinstaller.
Prérequis pour la création du hook et des scripts, créez des sous-répertoires
sudo mkdir -p /etc/pacman.d/{hooks,hooks.bin}
Créez le hook
sudo nano /etc/pacman.d/hooks/50-pacman-list.hook
#/etc/pacman.d/hooks/50-pacman-list.hook
[Trigger]
Type = Package
Operation = Install
Operation = Upgrade
Operation = Remove
Target = *
[Action]
Description = Création liste des paquets installés
When = PostTransaction
Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /mnt/sharenfs/pc1/PC1_eos_pkg_list.txt'
Pour installer des paquets depuis une sauvegarde antérieure de la liste des paquets, tout en ne réinstallant pas ceux qui sont déjà installés et à jour, lancer:
sudo pacman -S --needed - < PC1_eos_pkg_list.txt
sudo pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
Changer Nvme ou SSD chiffré
Remplacer M.2 2280 NVMe 1To par une 2To
Boot sur usb live EndeavourOS
Passer en mode su
Les partitions du disque chiffré nvme0n1
nvme0n1 259:0 0 931.5G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part
├─nvme0n1p2 259:2 0 920G 0 part
│ └─crypttemp 254:3 0 920G 0 crypt
│ ├─vg0-lvroot 254:4 0 70G 0 lvm
│ ├─vg0-lvhome 254:5 0 120G 0 lvm
│ └─vg0-lvmedia 254:6 0 600G 0 lvm
└─nvme0n1p3 259:3 0 11G 0 part
Déchiffrer la partition nvme0n1p2
cryptsetup luksOpen /dev/nvme0n1p2 crypttemp
Créer et monter le système à sauvegarder sur /media
mkdir -p /media
mkdir -p /media/home
mkdir -p /media/efi
mount /dev/vg0/lvroot /media
mount /dev/vg0/lvhome /media/home
mount /dev/nvme0n1p1 /media/efi
Monter le système qui va recevoir la sauvegarde
mount /dev/vg-nas-one/sav /mnt
mkdir -p /mnt/pc1
mkdir -p /mnt/pc1/efi
mkdir -p /mnt/pc1/home
Sauvegarder le système actuel (racine,home et efi)
rsync -avA /media/ /mnt/pc1
Patienter plusieurs minutes, suivant la taille
Arrêter la machine PC1
Remplacer la carte SSD M2
Redémarrer la machine sur un USB Live EndeavourOS
Zapper le nouveau disque SSD M.2
sgdisk --zap-all /dev/nvme0n1
Partitionnement du disque NVME 2To GPT + LVM
gdisk /dev/nvme0n1
Créer 2 partitions
Partition 1 : 512M EFI (code ef00) système de fichier FAT32
Partition 2 : le reste LVM (code 8e00) système de fichier EXT4
Formater partition EFI
mkfs.fat -F32 /dev/nvme0n1p1
Chiffrer la partition /dev/nvme0n1p2
cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
Ouvrir la partition chiffrée
cryptsetup luksOpen /dev/nvme0n1p2 crypt
Créer LVM
pvcreate /dev/mapper/crypt
vgcreate vg0 /dev/mapper/crypt
Créer les volumes
lvcreate -L 60G vg0 -n lvroot # Logical volume "lvroot" created.
lvcreate -L 120G vg0 -n lvhome # Logical volume "lvhome" created.
Système de fichier
mkfs.ext4 -L root /dev/mapper/vg0-lvroot
mkfs.ext4 -L home /dev/mapper/vg0-lvhome
Monter le nouveau système sur /mnt
mount /dev/mapper/vg0-lvroot /mnt
mkdir -p /mnt/home
mount /dev/mapper/vg0-lvhome /mnt/home
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
Monter la sauvegarde sur media
mount /dev/vg-nas-one/sav /media
Restaurer le système
rsync -avA /media/pc1/ /mnt
Patienter plusieurs minutes, suivant la taille
Création volume logique LVM media et montage
lvcreate -L 800G vg0 -n lvmedia
mkfs.ext4 -L media /dev/mapper/vg0-lvmedia
mkdir -p /mnt/srv/media
mount /dev/vg0/lvmedia /mnt/srv/media
Restaurer la sauvegarde multimedia
rsync -avA /media/pc1_20240201/media/srv/media/ /mnt/srv/media
Démonter le système de sauvegarde
umount /media
Ajouter un fichier de clé existant LUKS
cryptsetup luksAddKey /dev/nvme0n1p2 /mnt/crypto_keyfile.bin
Il faut saisir le phrase mot de passe
Configuration /etc/crypttab
cryptsetup luksUUID /dev/nvme0n1p2
Renvoie UUID ae37e59d-35f7-4920-8428-be8be8d15243
Modifier /mnt/etc/crypttab
Contenu
# <name> <device> <password> <options>
cryptlvm UUID=ae37e59d-35f7-4920-8428-be8be8d15243 /crypto_keyfile.bin luks
Passer en chroot
arch-chroot /mnt
Relever les UUID
blkid -s UUID -o value /dev/mapper/vg0-lvroot
renvoie l’UUID du volume racine : 2a6cab35-6c52-4382-9aee-06a376a8acc0
blkid -s UUID -o value /dev/mapper/vg0-lvhome
renvoie l’UUID du volume d’accueil : b4e52069-a8c9-459e-b39f-6ac1b682b0d6
blkid -s UUID -o value /dev/mapper/vg0-lvmedia
renvoie l’UUID du volume media : 1ca4bfc7-3d31-4859-aeb3-656214fab490
blkid -s UUID -o value /dev/nvme0n1p1
renvoie l’UUID du volume media : E5E4-A4AE
Configurer /etc/fstab
nano /etc/fstab
UUID=E5E4-A4AE /efi vfat defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
UUID=2a6cab35-6c52-4382-9aee-06a376a8acc0 / ext4 defaults,acl,noatime,discard 0 0
UUID=b4e52069-a8c9-459e-b39f-6ac1b682b0d6 /home ext4 defaults,acl,noatime,discard 0 0
/swapfile none swap defaults,pri=-2 0 0
# /dev/mapper/vg0-lvmedia
UUID=86a7c58c-8f30-42e2-bd39-d1ae7464c837 /srv/media ext4 rw,relatime 0 2
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /virtuel ext4 defaults 0 2
# /dev/mapper/vg--nas--one-sav
UUID=c5b9eefc-1daa-4a0d-8a72-6169b3c8c91f /sauvegardes ext4 defaults 0 2
# /dev/vg-nas-one/iso - Volume logique 200G du disque 4To
UUID=58f4b6c7-3811-41d5-9964-f47ac32375f6 /iso ext4 defaults 0 2
options du noyau
blkid -s UUID -o value /dev/nvme0n1p2 # --> ae37e59d-35f7-4920-8428-be8be8d15243
Modifier /etc/kernel/cmdline
nano /etc/kernel/cmdline
nvme_load=YES nowatchdog rw rd.luks.uuid=ae37e59d-35f7-4920-8428-be8be8d15243 root=/dev/mapper/vg0-lvroot
Réinstaller noyau
reinstall-kernels
Sortie du chroot , retirer la clé USB Live et reboot de la machine
Mise à jour , si erreur de paquet ou signature PGP
En cas d’erreur de paquet ou signature PGP
sudo pacman -S endeavouros-keyring archlinux-keyring
Redémarrer la machine
Etat des lieux
Ajouter un alias dans le fichier ~/.bashrc
alias etat='$HOME/scripts/etat_des_lieux.sh'
Recharger et exécuter
source ~/.bashrc
etat
Ajout disque LVM
Exemple disque SSD 120Go
Disque sda
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
gdisk
sudo gdisk /dev/sda
o : nouvelle partion dos
n : nouvelle partition typt LVM 8e00
Format fichier ext4
sudo mkfs.ext4 /dev/sda1
LVM (Logical Volume Manager, ou gestionnaire de volumes logiques en français) permet la création et la gestion de volumes logiques sous Linux. L’utilisation de volumes logiques remplace en quelque sorte le partitionnement des disques.
Volume physique : sudo pvcreate /dev/sda1
GroupevVolumes : sudo vgcreate ssd-120 /dev/sda1
Volume logique : sudo lvcreate -n lv120 -l +100%FREE ssd-120
Fichier ext4 : sudo mkfs.ext4 /dev/ssd-120/lv120
Relever UUID sudo blkid |grep lv120
/dev/mapper/ssd--120-lv120: UUID="6b48e98c-9b85-461b-9371-040765aae682" BLOCK_SIZE="4096" TYPE="ext4"
Création point de montage
sudo mkdir -p /mnt/ssd
Ajouter les lignes suivantes au fichier /etc/fstab
# /dev/mapper/ssd--120-lv120
UUID=6b48e98c-9b85-461b-9371-040765aae682 /mnt/ssd ext4 defaults 0 2
Rechargement et montage
sudo systemctl daemon-reload
sudo mount -a
Vérification : df -h /mnt/ssd/
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/ssd--120-lv120 110G 2,1M 104G 1% /mnt/ssd
Droits en écriture à l’utilisateur
sudo chown $USER:$USER /mnt/ssd/
Synchro serveurs
Dossier “BiblioCalibre”
Le but est de synchroniser le dossier /srv/media/BiblioCalibre avec le(s) serveur(s) web distant(s)
Avec les unités de chemin, vous pouvez surveiller les fichiers et les répertoires pour certains événements. Si un événement spécifique se produit, une unité de service est exécutée, et elle porte généralement le même nom que l’unité de chemin
Nous allons surveiller dans le dossier /srv/media/BiblioCalibre/ toute modification du fichier metadata.db qui entrainera l’exécution d’un script
Dans le répertoire systemd utilisateur nous créons une unité de cheminement media_BiblioCalibre_site.path
nano ~/.config/systemd/user/media_BiblioCalibre_site.path
[Unit]
Description=Surveiller metadata.db pour les changements
[Path]
PathChanged=/srv/media/BiblioCalibre/metadata.db
Unit=media_BiblioCalibre_site.service
[Install]
WantedBy=default.target
Dans la section [Path]
, PathChanged=
indique le chemin absolu du fichier à surveiller, tandis que Unit=
indique l’unité de service à exécuter si le fichier change. Cette unité (media_BiblioCalibre_site.path) doit être lancée lorsque le système est en mode multi-utilisateur.
Ensuite, nous créons l’unité de service correspondante, media_BiblioCalibre_site.service, dans le répertoire ~/.config/systemd/user/
Si le fichier metadata.db change (c’est-à-dire qu’il est à la fois écrit et fermé), l’unité de service suivante sera appelée pour exécuter le script spécifié :
nano ~/.config/systemd/user/media_BiblioCalibre_site.service
[Unit]
Description="Exécute le script si metadata.db a été modifié."
[Service]
ExecStart=/mnt/sharenfs/scripts/media_BiblioCalibre_site.sh
[Install]
WantedBy=default.target
Le script media_BiblioCalibre_site.sh
lance une synchronisation locale distante via rsync ssh
Etendre Réduire media_BiblioCalibre_site.sh
Activer et lancer
systemctl --user enable media_BiblioCalibre_site.path --now
Voir le fichier journal
journalctl --user -f -u media_BiblioCalibre_site.service
juin 06 09:39:32 yann-pc1 systemd[1537]: Started "Exécute le script si metadata.db a été modifié.".
juin 06 09:39:32 yann-pc1 media_BiblioCalibre_site.sh[11100]: ***DEPART*** Exécution script /home/yann/scripts/media_BiblioCalibre_site.sh
juin 06 09:39:32 yann-pc1 media_BiblioCalibre_site.sh[11100]: rsync -avz --progress --stats --human-readable --delete -e "ssh -p 55215 -i /home/yann/.ssh/lenovo-ed25519" /srv/media/BiblioCalibre leno@192.168.0.215:/sharenfs/multimedia/Divers/
juin 06 09:39:33 yann-pc1 media_BiblioCalibre_site.sh[11100]: ***FIN*** /home/yann/scripts/media_BiblioCalibre_site.sh exécuté en 0 mn 1 s
juin 06 09:44:40 yann-pc1 systemd[1537]: Started "Exécute le script si metadata.db a été modifié.".
juin 06 09:44:40 yann-pc1 media_BiblioCalibre_site.sh[11278]: ***DEPART*** Exécution script /home/yann/scripts/media_BiblioCalibre_site.sh
juin 06 09:44:40 yann-pc1 media_BiblioCalibre_site.sh[11278]: rsync -avz --progress --stats --human-readable --delete -e "ssh -p 55215 -i /home/yann/.ssh/lenovo-ed25519" /srv/media/BiblioCalibre leno@192.168.0.215:/sharenfs/multimedia/Divers/
juin 06 09:44:41 yann-pc1 media_BiblioCalibre_site.sh[11278]: ssh leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519 'sudo systemctl restart calibreweb'
juin 06 09:44:42 yann-pc1 media_BiblioCalibre_site.sh[11278]: ***FIN*** /home/yann/scripts/media_BiblioCalibre_site.sh exécuté en 0 mn 2 s
On peut créer un accès graphique sur le poste archlinux
~/.local/share/applications/suivi_BiblioCalibre_site.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=Synchro BiblioCalibre
Comment=synchro site rnmkcy.eu
Icon=xterm-color_48x48
Exec=xterm -rv -geometry 250x30+10+50 -T suivi_BiblioCalibre_site -e 'journalctl --user -u media_BiblioCalibre_site.service --no-pager; read -p "Touche Entrée pour sortir..."'
Actions=
Categories=Utility;
Path=
Terminal=false
StartupNotify=false