SSD, Arch Linux, LVM, GPT

Je me suis accordé un petit plaisir : un SSD (Samsung 840 Pro chez LDLC) à greffer aux entrailles de mon Samsung N210 acheté d'occasion à une amie (qui a honteusement croqué une pomme), qui maintenant galope tel un bon petit diable. J'en ai profité pour refaire une installation de base, ayant la flemme de cloner le disque et n'ayant pas le matériel idoine non plus. Pour ne pas changer, j'ai installé Arch Linux, cette distribution qui n'en finit pas de me convenir. À ce propos, je suis tombé sur ce gist reprenant un peu tout ce qu'il y a à savoir quant à une installation d'Arch Linux, à garder sous le coude (merci alphazo d'agréger tant d'informations) pour ceux qui ont des questions quant à l'installation de la bête. Comique, d'ailleurs, j'ai reconnu des passages de mon cru, je suis content de voir que mes articles peuvent servir. Pourquoi encore Arch Linux ? Raison première : parce que. Ensuite, j'ai pris l'habitude du confort des distributions en rolling release : on installe et on configure, on ajoute le flux RSS de la page d'accueil à son agrégateur ou on s'inscrit à la liste d'annonce, et c'est stable, à jour, perpétuellement à jour, et pas de mauvaise surprise si on fait un tant soit peu attention. L'installation est résolument simple, je serai intraitable là dessus, simple comme KISS. Pour cette nouvelle configuration que je pouvais triturer comme un adolescent son premier bouton, je me suis amusé : GPT et LVM, LUKS ça sera pour une prochaine fois. On procède d'abord au formatage du disque, j'ai suivi à peu près cette méthode, à la différence du système de fichiers que j'ai changé pour ext4, créant un gros LVM avec des conteneurs boot, swap, root et home, monté dans /mnt pour que tout soit rendu accessible depuis le système live. Ensuite, installation de la panoplie de base avec pacstrap /mnt base base-devel, à laquelle on j'ai ajouté grub-bios gnome gnome-extra gnome-tweak-tool gnome-shell-extensions firefox firefox-i18n-fr abiword abiword-plugins gnumeric meld minetest wireshark firewalld cpupower ntp cups redshift devilspie rhythmbox mlocate redshift seahorse seahorse-nautilus, chacun rajoutera les paquets qui lui font plaisir, j'en ai bien quelques autres, plein d'autres très certainement, mais là n'est pas le propos. Création du fstab avec un genfstab -U -p /mnt >> /mnt/etc/fstab qui va bien, j'ai ajouté au mien les options relatime et discard :

UUID=8bf23251-41dc-44fa-aef0-e166cef2d651	/	ext4	defaults,relatime,discard	0 1

UUID=4b188e53-0fb2-4807-af58-605fa6da97f9	/home	ext4	defaults,relatime,discard	0 2

UUID=17e4a517-2dc9-44c2-89c6-7207d506d0a8	/boot	ext4	defaults,relatime,discard	0 2

UUID=851b7cd7-e207-469d-a498-6b92696e0f0b	none	swap	defaults			0 0

On poursuit avec un chroot dans le disque avec arch-chroot /mnt, histoire d'installer Grub sur les premiers secteurs du disque (grub-install /dev/sda), configurer le mot de passe du compte root avec passwd, créer un utilisateur tout de suite ajouté aux groupes qui vont bien (dans mon cas sys disk lp wheel locate network audio storage scanner power users wireshark), puis passwd pour cet utilisateur nouvellement créé, configuration de la locale et du fuseau horaire, etc. À ce stade, la marche à suivre ne diffère pas des multiples tutoriels qui pullulent sur Internet, dont le wiki d'Arch Linux (RTFW, relis ton foutu wiki) pour ne citer qu'une seule source. Tant qu'on y est, autant ajouter de nouveaux répertoires à /etc/pacman.conf (et ne pas oublier les options Color et ILoveCandy), repo-ck pour installer linux-ck et les drivers liés (broadcom-wl-ck-atom et linux-ck-atom-headers sélectionnés à partir d'un seul pacman -S ck-atom), archlinuxfr pour installer yaourt afin d'aller chercher dans AUR gpaste electrum latexila samsung-tools profile-sync-daemon hplip-plugin, pour ne retenir que les plus notables. J'en ai profité pour copier quelques fichiers personnels dans /etc/{modprobe.d, modules-load.d, udev/rules.d, sysctl.d} :

  • /etc/modprobe.d/i915.conf
options i915 i915_enable_rc6=7 i915_enable_fbc=1 lvds_downclock=1
  • /etc/modprobe.d/powersave.conf
# USB
options usbcore autosuspend=1
# SOUNDCARD
options snd-hda-intel enable_msi=1
options snd-hda-intel power_save=1
options snd-hda-intel power_save_controller=Y
  • /etc/modprobe.d/nobeep.conf
blacklist pcspkr
  • /etc/modules-load.d/cpufreq.conf
## cpufreq driver
acpi_cpufreq
## cpufreq governors
cpufreq_performance
cpufreq_conservative
cpufreq_ondemand
cpufreq_powersave
cpufreq_stats
cpufreq_userspace
  • /etc/udev/rules.d/99-powersave.rules
# pcie_aspm=force
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/bin/sh -c 'echo powersave > /sys/module/pcie_aspm/parameters/policy'"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/bin/sh -c 'echo performance > /sys/module/pcie_aspm/parameters/policy'"
# usb / pci / sata
ACTION=="add", SUBSYSTEM=="usb", TEST=="power/autosuspend", ATTR{power/autosuspend}="2"
ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="add", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}="min_power"
# network, substitute en* and wl* with your interface name
ACTION=="add", SUBSYSTEM=="net", KERNEL=="en*", RUN+="/usr/bin/ethtool -s %k wol d"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", RUN+="/usr/bin/iw dev %k set power_save on"
  • /etc/sysctl.d/powersave.conf
vm.laptop_mode=5
vm.vfs_cache_pressure=50
vm.dirty_writeback_centisecs=1500
vm.swappiness = 1

Configuration nécessaire : le noyau, et la configuration de grub, donc dans /etc/mkinitcpio.conf et /etc/default/grub :

  • /etc/mkinitcpio.conf
(...)
MODULES="intel_agp i915"
(...)
HOOKS="base udev autodetect modconf block lvm2 filesystems keyboard fsck consolefont keymap timestamp"
(...)
  • /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=851b7cd7-e207-469d-a498-6b92696e0f0b"
GRUB_CMDLINE_LINUX="elevator=deadline pcie_aspm=force nmi_watchdog=0"

On applique le tout d'un mkinitcpio -p linux-ck, et d'un grub-mkconfig -o /boot/grub/grub.cfg. N'oublions pas non plus un petit issue_discards = 1 dans /etc/lvm/lvm.conf. Ne reste plus qu'à activer les services essentiels (ou non) avec un bon systemctl enable ntpd cups avahi-daemon avahi-dnsconfd cpupower cronie firewalld gdm graphical NetworkManager ntpd samsung-tools psd psd-resync, qu'on clôt d'un exit après avoir vérifié que tout est bien configuré. Une fois de retour au système live, on démonte tout (umount -a), et on redémarre. Ça merde ? J'ai peut-être oublié l'une ou l'autre manipulation, vérifiez dans la documentation si tout est bien configuré et installé, comme les drivers graphiques (xf86-video-intel intel-dri, en ce qui me concerne, avec SNA comme méthode d'accélération graphique) ou le serveur X.Org sans lequel vous n'irez pas bien loin (xorg-server xf86-input-synaptics, dans mon cas). Certes, celui qui n'aime pas consacrer un peu (beaucoup, admettons) de temps à installer et configurer une distribution pour qu'elle lui convienne au mieux, le choix d'Arch Linux peut paraître saugrenu voire rédhibitoire, même sur une machine assez puissante pour faire tourner un bloatware tel qu'Ubuntu ou toute la clique qui y ressemble. Je ne cracherai pas sur les Ubunteros, ceux-ci sont du même côté que moi, celui du free software. Je taquine cette distribution en la qualifiant de bloatware alors que je l'ai pourtant longtemps aimée et utilisée, m'ayant mis le pied à l'étrier du monde de GNU / Linux, lorsqu'elle réinstalle toute sa panoplie tous les 6 mois au prix d'une pénible mise à jour, j'en ai gardé des séquelles. Enfin, tous les 6 mois ou tous les 2 ans, que l'on préfère les versions au long terme, les LTS, ces versions qui ne prennent pas les utilisateurs pour des testeurs commis d'office, ou les quelques versions de test qui les séparent. J'ai goûté au fruit du rolling release, et j'en suis encore tout fébrile, comme lors de ma première installation d'Arch Linux, quand j'ai malencontreusement écrasé tout mon disque, partition Windows comprise. Je ne l'ai jamais réinstallée depuis, c'est tout ce que j'en retiens.