Installation de Linux Mint 21.1 sur Lenovo ThinkPad T540P

Configuration de UEFI/BIOS

Reçu le PC avec un UEFI à la version 2.17.

1. Mise à jour du pilote USB 3.0 à la version 5.0.4.43 (mai 2020), tel que recommandé par Lenovo.

2. Mise à jour du BIOS/UEFI à la version 2.39 (juin 2021).

3. Pour entrer dans le BIOS : F1

4. Pour le Boot Order Menu : F12

Par prudence, j'ai laissé ces options de BIOS :

- `Boot Priority` est sur *Legacy first*

- `CSM Support` est sur *Yes*

Partitionnement

- 32 Go swap

- 220 Go / en btrfs

- 500 Go /data en btrfs

Configuration après redémarrage

tmpfs /tmp tmpfs defaults,mode=1777,nosuid,size=2048M 0 0
tmpfs /var/tmp tmpfs defaults,mode=1777,nosuid,size=2048M 0 0
language-bash
sudo bash -c 'echo "vm.swappiness=5" >> /etc/sysctl.conf'
language-bash
sudo btrfs filesystem defragment -r -v -czstd /
REGDOMAIN=FR

* dans `/etc/fstab` (avec `xed admin:///etc/fstab` ) :tmpfs /tmp tmpfs defaults,mode=1777,nosuid,size=2048M 0 0 tmpfs /var/tmp tmpfs defaults,mode=1777,nosuid,size=2048M 0 0

* ajout des options `noatime,nodiratime,compress=zstd,autodefrag` aux points de montage btrfs (compression)

* ajout de l'option `commit=60` à la partition `/data` et au home

* `/tmp` dans la RAM :

* pour que le swap ne s'active que s'il ne reste que 5% de RAM (par défaut : 60%) :sudo bash -c 'echo "vm.swappiness=5" >> /etc/sysctl.conf'

* vérification avec `cat /proc/sys/vm/swappiness`

* redémarrer pour prise en compte ou faire `sudo sysctl -p`

* dans `/etc/default/grub`, modifier la ligne `GRUB_TIMEOUT="3" ` puis faire un `sudo update-grub`

* GRUB attend donc avec un écran noir pendant 3 secondes avant de lancer le système, et l'on peut accéder au menu avec Échap

* rebooter pour prise en compte

* Type d'instantanné: BTRFS

* Garder la partition par défaut > Suivant

* Cocher *Hebdomadaire*, en garder 4

* Garder *Quotidien* coché, en garder 7

* Cliquer Suivant > Suivant > Terminer

* Cliquer *Créer* pour créer un premier snapshot.

* En cas de problème, dans l'écran de GRUB choisir "Options avancées…" > …(recovery mode) > "root (Passer sur une console administrateur)" et une fois dans la console taper `timeshift --restore` pour restaurer un ancien snapshot système.

* installation de zram pour compresser la RAM : `sudo apt install zram-config`

* redémarrer pour prise en compte si `cat /proc/swaps` ne montre pas de `/dev/zram0`

* pour voir l'utilisation des segments zram, tapez `zramctl`

* dans le fichier `/etc/default/crda`, modifier :REGDOMAIN=FR

language-bash
sudo systemctl disable NetworkManager-wait-online.service
# Configuration par défaut de yomli
server:
  do-ip6: yes
  interface: 127.0.0.1
  interface: "::1"
  access-control: 0.0.0.0/0 refuse
  access-control: ::0 refuse
  access-control: 127.0.0.0/8 allow
  access-control: ::1 allow
  cache-min-ttl: 3600


forward-zone:
  name: "."
  forward-addr: 80.67.169.12
  forward-addr: 80.67.169.40
  forward-addr: 2001:910:800::12
  forward-addr: 2001:910:800::40
  forward-addr: 194.242.2.3
  forward-addr: 193.19.108.3
  forward-addr: 2a07:e340::3
  forward-addr: 9.9.9.9
  forward-addr: 149.112.112.112
  forward-addr: 2620:fe::fe
  forward-addr: 2620:fe::9


remote-control:
		control-enable: yes
UUID=3464	/mnt/pocket	exfat	noatime,nodiratime,defaults,umask=000,nofail	0	0
language-bash
#!/bin/bash
sleep 10
sudo bash -c "echo '85' > /sys/class/power_supply/BAT0/charge_control_end_threshold"
@reboot /usr/local/bin/limit-battery-85
language-bash
#!/bin/bash
sleep 10
echo "schedutil" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
@reboot /usr/local/bin/schedutil.sh
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=putYourSwapUUIDhere"
language-bash
sudo touch /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
xed admin:///etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes


[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

* dans le fichier `/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf` changer `wifi.powersave = 3` en `wifi.powersave = 2`

* vérifier sur batterie avec `iwconfig` qui doit retourner `Power Management:off`

* installation avec `sudo apt install unbound`

* configuration : créer le fichier `/etc/unbound/unbound.conf.d/yavin.conf` avec ce contenu :

* trouver l'UUID de la carte SD avec `blkid`

* créer un répertoire vide dans `/mnt/pocket`

* modifier `/etc/fstab` ainsi :

* création du fichier `/usr/local/bin/limit-battery-85` contenant :

* par défaut, c'est sur `ondemand` mais `schedutil` est meilleur

* création du fichier `/usr/local/bin/schedutil.sh` contenant :

* copier l'UUID de la partition de swap avec `inxi -u`

* ajouter grâce à `xed admin:///etc/default/grub` :

Installation de logiciels

language-bash
sudo apt install vlc ffmpeg htop gparted sshfs p7zip-rar gimp gimp-data gimp-data-extras gimp-plugin-registry gimp-gap gimp-texturize inkscape pngnq optipng jpegoptim filezilla qbittorrent libreoffice-help-fr libreoffice-l10n-fr easytag sqlitebrowser dconf-editor mkvtoolnix mkvtoolnix-gui imagemagick keepassxc mencoder lynx links gnome-games traceroute scrot sox picard dosbox ghex git soundconverter conky-all vim mc cheese aria2 hugo composer fontforge fontforge-common fontforge-extras sqlite sqlite3 thunar subtitlecomposer gpick chromium-browser ttf-mscorefonts-installer ttf-ancient-fonts ttfautohint texlive-full ghostwriter pandoc pdfarranger texworks texworks-help-fr blueman audacity shotcut steam-installer k3b sound-juicer php nestopia mupen64plus-qt pokemmo-installer sublime-text pigz pbzip2 rofi xclip zeal ncdu

* par défaut, il manque un certain nombre de pilotes d'imprimantes : `sudo apt install --install-recommends printer-driver-all printer-driver-oki`

* si Linux ne trouve pas le modèle, chercher le fichier `.ppd` de cette imprimante sur le site du constructeur

Logiciels hors dépôts

J'installe certains logiciels hors dépôts quand ils ne sont pas disponibles dans les dépôts ou quand la version dans les dépôts est trop ancienne. Inconvénient : Ils ne seront pas mis à jour automatiquement.

language-bash
sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme papirus-folders
sudo papirus-folders -C green --theme Papirus-Dark
language-bash
sudo add-apt-repository ppa:starws-box/deadbeef-player
sudo apt-get update
sudo apt install deadbeef
language-bash
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
language-bash
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
sudo ln -s /usr/local/bin/yt-dlp /usr/bin/yt-dlp
sudo ln -s /usr/bin/ytp-dlp /usr/bin/youtube-dl
language-bash
wget -qO- https://raw.githubusercontent.com/retorquere/zotero-deb/master/install.sh | sudo bash
sudo apt update
sudo apt install zotero
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 210
sudo update-alternatives --install /usr/bin/gnome-www-browser gnome-www-browser /usr/bin/firefox 210
language-bash
wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash
language-bash
sudo wget -O /etc/apt/trusted.gpg.d/drdteam.gpg https://debian.drdteam.org/drdteam.gpg
sudo apt-add-repository 'deb https://debian.drdteam.org/ stable multiverse'
language-bash
sudo add-apt-repository ppa:nextcloud-devs/client
sudo apt-get update
sudo apt install nextcloud-desktop
language-bash
sudo add-apt-repository ppa:gnumdk/lollypop
sudo apt update
sudo apt install lollypop
language-bash
sudo cp jdupes /usr/local/bin/jdupes
sudo chmod a+rx /usr/local/bin/jdupes
language-bash
sudo curl -L https://github.com/qarmin/czkawka/releases/latest/download/linux_czkawka_gui -o /usr/local/bin/cz
sudo chmod a+rx /usr/local/bin/cz
language-bash
sudo curl -L https://github.com/borgbackup/borg/releases/latest/download/borg-linux64 -o /usr/local/bin/borg
sudo chmod a+rx /usr/local/bin/borg

* la version dans les dépôts est vraiment trop vieille : https://calibre-ebook.com/download_linux

* prendre la version GUI pour Ubuntu 20.04 dans la page https://www.veracrypt.fr/en/Downloads.html (*veracrypt-1.x.x-Ubuntu-20.04-amd64.deb*)

* prendre le .deb disponible ici : https://www.google.fr/chrome/

* changer le navigateur par défaut du système pour éviter que Chrome ne s'en empare :sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 210 sudo update-alternatives --install /usr/bin/gnome-www-browser gnome-www-browser /usr/bin/firefox 210

* télécharger le .deb ici : https://discord.com/download

* télécharger le fichier pour Debian x64 ici : https://www.zettlr.com/download/deb64

* télécharger le .deb ici : https://schizoduckie.github.io/DuckieTV/

* télécharger le .deb : https://github.com/sharkdp/fd/releases

* télécharger le .run ici : https://privateinternetaccess.com/download/linux-vpn

* télécharger le .run ici : https://bitnami.com/stack/lamp/installer

* on peut mettre à jour en téléchargeant un autre paquet et en faisant `sudo /opt/lamp/uninstall`

* normalement, le désinstallateur ne touche pas aux dossier *htdocs*, *tmp* et *var*

* télécharger la *release* la plus récente (*Source code .tar.gz*) sur https://github.com/jbruchon/jdupes/releases et décompresser

* s'assurer que `g++` est installé : `sudo apt install g++`

* dans le répertoire, lancer : `make CFLAGS_EXTRA=-DENABLE_DEDUPE` (ce flag active la compilation avec l'option déduplication, utile pour l'option `-B` avec btrfs).

* puis :sudo cp jdupes /usr/local/bin/jdupes sudo chmod a+rx /usr/local/bin/jdupes

Installation de Wine

Les dépôts de Linux Mint n'ont qu'une ancienne version, je préfère suivre les versions *staging*. Nous allons ajouter les dépôts de WineHQ :

language-bash
sudo apt purge wine*
wget -qO- https://dl.winehq.org/wine-builds/winehq.asc | sudo tee /etc/apt/trusted.gpg.d/winehq.asc
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
sudo apt update
sudo apt install --install-recommends winehq-staging winetricks
WINEPREFIX=~/.wine WINEARCH=win32 wineboot    # Préparation du préfixe 32 bits
WINEPREFIX=~/.wine64 WINEARCH=win64 wineboot  # Préparation du préfixe 64 bits

* et mise à jour de *dxvk* : `winetricks -f dxvk`

Installation de autorandr

Trouvé une manière de sélectionner automatiquement l'écran principal pour l'ordinateur :

language-bash
sudo apt install autorandr

Sur le grand moniteur externe :

language-bash
xrandr --output HDMI-1 --primary --output eDP-1 --off
autorandr --save docked-aoc

Switcher sur le petit écran externe :

language-bash
xrandr --output HDMI-1 --rotate right --left-of eDP-1 --mode 1024x768 --rate 75 --auto
autorandr --save docked-philips

Débrancher la prise HDMI :

language-bash
autorandr --save mobile
autorandr --default mobile

Et voilà, changement automatique quand il y a une modification au niveau du KVM !

Suppression de logiciels

language-bash
sudo apt purge transmission-common transmission-gtk warpinator hexchat hexchat-common brltty sticky blueberry

Configurations diverses

language-bash
sudo sh -c "echo '\nHISTFILESIZE=20000\nHISTSIZE=20000\nHISTCONTROL=ignoredups' >> /etc/environment"

* faire un lien : `ln -s ~/.local/share/fonts ~/.fonts`

* placer mes polices dans `~/.fonts`

* actualiser le cache avec `fc-cache -fv`

* décocher *Show systray icon* et cocher *Allow only one instance* puisque sinon l'applet de son bug

* changer les raccourcis clavier pour la navigation courte

* mettre l'égaliseur graphique sur *Casque*

.bashrc

Linux Mint permet l'utilisation d'un fichier `.bash_ aliases` appelé par `.bashrc`. Il est ainsi plus simple de ne simplement sauvegarder qu'un fichier qui ne risque pas d'être réécrit :

language-bash
# Man pages in color
man() {
    env LESS_TERMCAP_mb=$'\E[01;31m' \
    LESS_TERMCAP_md=$'\E[01;38;5;74m' \
    LESS_TERMCAP_me=$'\E[0m' \
    LESS_TERMCAP_se=$'\E[0m' \
    LESS_TERMCAP_so=$'\E[38;5;246m' \
    LESS_TERMCAP_ue=$'\E[0m' \
    LESS_TERMCAP_us=$'\E[04;38;5;146m' \
    man "$@"
}

alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
alias gksudo='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'

alias gzip=pigz
alias bzip2=pbzip2

alias hg='history | grep'           # Search history for string

alias ..='cd ..'
alias ...='cd ../../'

alias mkdir='mkdir -pv'								# Make parents when needed
alias wget='wget -c'								 	# Continue unfinished downloads

Redshift

La localisation automatique est possible avec Geoclue2, mais pas par défaut. Pour cela, il faut éditer le fichier `/etc/geoclue/geoclue.conf` en ajoutant les lignes à la fin :

[redshift]
allowed=true
system=false
users=

Il suffit ensuite de créer le fichier `~/.config/redshift.conf` :

[redshift]

; Régler les températures de jour et de nuit de l'écran.
;
temp-day=6500
temp-night=3800

; Activer / Désactiver une transition en douceur entre le jour et la nuit.
; 0 provoquera un changement direct de jour à la température de l'écran de nuit.
; 1 va progressivement augmenter ou diminuer la température de l'écran.
;
transition=1

; Il est également possible d'utiliser des réglages différents pour le jour et la nuit
; depuis la version 1.8 :
;
brightness-day=1.0
brightness-night=0.8

; Réglez le gamma de l'écran pour toutes les couleurs :
;
gamma=1.0

; Sélectionner le service de localisation : 'geoclue', 'gnome-clock', 'manual'
; Tapez 'redshift -l list' pour voir les valeurs possibles.
; Les paramètres du service de localisation sont dans une section différente.
;
location-provider=geoclue2

; Sélectionner la méthode d'ajustement : 'randr', 'vidmode'
; Tapez 'redshift -m list' pour voir toutes les valeurs possibles.
; 'randr' est la méthode préférée, 'vidmode' est une ancienne API
; mais fonctionne dans certains cas où 'randr' fait défaut.
; Les paramètres de la méthode d'ajustement sont dans une section différente.
;
adjustment-method=randr

[manual]

; A changer en fonction de votre positionnement géographique / GPS :
;
lat=46.6
lon=0.33

DeadBeef

Pour que DeadBeef communique avec l'applet de son de Cinnamon, il faut installer le plugin MPRIS-2 : https://github.com/Serranya/deadbeef-mpris2-plugin

language-bash
sudo apt install build-essential libglib2.0-dev deadbeef-pluginq-dev
tar -xf deadbeef-mpris2-plugin-1.14.tar.xz
cd deadbeef-mpris-plugin-1.14
./configure
sudo make install

Lancer une fois DeadBeef pour le voir apparaître dans la liste des lecteurs de l'applet de son.

* Tant qu'à faire, autant faire Rythmbox dans la foulée : https://github.com/ToppleKek/discord-rhythmbox-plugin

DuckieTV avec Aria2c

Pour rendre DuckieTV compatible avec `aria2c` il faut créer le fichier `~/.aria/aria.conf` :

# Enable the JSON-RPC server
enable-rpc=true
# Set the RPC secret authorization token, to authorise usage of rpc commands
rpc-secret=Your-RPC-secret-Token
# The default directory to store downloaded files
dir=/data/buffer/

Clavier Asus ROG Falchion

Pour l'empêcher de mettre en veille le PC lorsqu'il est lui-même mis en veille :

* ajouter cette section à `/usr/share/X11/xorg.conf.d/40-libinput.conf` :
	Section "InputClass"
		Identifier         "disable asus falchioh sys control"
		MatchIsKeyboard    "on"
    MatchProduct       "ASUSTeK ROG FALCHION System Control"
    Option             "Ignore" "on"
  EndSection

Samba

* ajout de l'utilisateur au groupe `sambashare` : `sudo adduser nom_utilisateur sambashare`

* ajout d'un utilisateur Samba pour les cas où l'on demande un mot de passe : `sudo smbpasswd -a compte_utilisateur`

* redémarrer

Apache

post_max_size = 10M
upload_max_filesize = 200M
<IfModule mpm_prefork_module>
StartServers          2
MinSpareServers       1
MaxSpareServers       3
MaxClients           12
MaxRequestsPerChild   3
</IfModule>
export APACHE_RUN_USER=yomli
export APACHE_RUN_GROUP=yomli
language-bash
sudo rm /etc/apache2/mods-enabled/php7.4.load
sudo rm /etc/apache2/mods-enabled/php7.4.conf

* dans le fichier `/etc/php/8.1/apache2/php.ini` :

* ajouter à la fin du fichier `/etc/apache2/apache2.conf` :

* dans le fichier `/etc/apache2/envvars` :

* Si, suite à une mise à jour, cela ne fonctionne plus, vérifier qu'il n'y a pas un ancien php dans le dossier `/etc/apache2/mods-enabled/`:

Apparence

* Bordures de fenêtre : *Mint-Y*

* Icônes : *Mint-X-Dark*

* Contrôles : *Mint-Y-Dark*

* Pointeur de la souris : *DMZ-White*

* Bureau : *Mint-Y-Dark*

* penser à redémarrer Cinnamon pour que l'icône du panel soit réinitialisée

Sécurisation

Pare-feu

* *Menu* > *Préférences* > *Configuration du pare-feu*

* les ports des serveurs web : `8080` et `8000` en `tcp/udp`

* Avahi : `5353` en `udp`

* Jeux divers : `12345` en `tcp/udp`

* Minecraft : `25565` en `tcp`

* Samba :

* `135` en `tcp/udp` (localisateur de services RPC)

* `137` en `tcp/udp` (NetBIOS Name Service)

* `138` en `udp` (NetBIOS Datagram Service)

* `139` en `tcp` (NetBIOS Session Service)

* `445` en `tcp/udp` (services de dossiers partagés Windows)

Désactivation de l'interface web des imprimantes réseau

Par défaut, Cups démarre une interface web locale pour gérer les imprimantes réseau. On supprime ceci.

* dans `/etc/cups/cupsd.conf` :
WebInterface No

Maintenance

Anacron

Mon fichier `/etc/anacrontab` contient :

# Nettoyage des miniatures
32		30		wipe_thumbnails		find /home/yomli/.cache/thumbnails -type f -atime +30 -exec rm {} \;

# Nettoyage d'apt
7		21		apt_remove					apt autoremove --purge
7		31		apt_clean					apt autoclean

À faire de temps en temps

J'ai quelques scripts pour :

language-bash
ulimit -n 600000
sudo jdupes -r -B /etc /opt /root /var /usr
sudo jdupes -r -B /home
sudo jdupes -r -B /data
language-bash
find /home/yomli/.cache/thumbnails -type f -atime +30 -exec rm {} \;
find /home/yomli/.cache/deadbeef/covers -type f -atime +30 -exec rm {} \;
sudo apt autoremove --purge
sudo apt autoclean
language-bash
sudo btrfs filesystem defragment -r -v -czstd /
sudo btrfs filesystem defragment -r -v -czstd /data
sudo btrfs filesystem defragment -r -v -czstd /home
language-bash
sudo jdupes -r -z -s -B /etc /opt /root /var /usr
sudo jdupes -r -z -B /data
sudo jdupes -r -z -B /home

Particularités

* lancer : `sudo btrfs scrub start /`

* voir où il en est : `sudo btrfs scrub status /`

* Fn + F9 : ouvre le *Panneau de configuration* :

* Raccourci personnalisé : `cinnamon-settings`

* Fn + F10 : ouvre Cortana ou la *Recherche* :

* ouvre le menu Cinnamon (clic droit sur le *Menu* et configurer le second raccourci)

* Fn + F11 : équivalent d'un Alt + Tab : *

* associer à *Afficher l'écran de sélection de fenêtres* dans *Fenêtres*

* Lock : verrouille la session (équivaut à Super + L) :

* désactiver le raccourci *Looking Glass* dans *Général* > *Dépannage*

* associer à *Verrouiller l'écran* dans *Système*

* HomePage : ouvre le navigateur web

* associer à *Démarrer le navigateur Web* dans *Lanceurs*

* Néanmoins, un clavier branché sur le port USB Gauche 1e en partant du bas (que je suppose être de l'USB 2) empêche la mise en veille. Il semble que tous les ports USB 3 se déconnectent à la veille, ne gardant qu'un port USB 2 qui peut alimenter un périphérique.

Sources :

----

Permaliens :