Arch Linux

Kernel Setup

J'utilise trois kernels en parallele. aegis-offensive au quotidien pour le lab et les CTF - c'est le defaut. Je boote sur aegis-hardened quand je suis chez un client. linux-lts est la en secours si un module DKMS part en vrille. Le Secure Boot tourne via sbctl - un hook pacman re-signe tout automatiquement a chaque update, donc c'est transparent une fois en place.

KernelUsageScheduler
linux-aegis-offensiveDefault - Lab / CTF / PentestBORE + sched-ext
linux-aegis-hardenedClient / audit formelBORE
linux-ltsFallback / compatibilité DKMSStandard

Installation des kernels

Les trois kernels du setup : aegis-offensive (default), aegis-hardened, lts

Copy command
sudo pacman -S linux-aegis-offensive linux-aegis-offensive-headers
sudo pacman -S linux-aegis-hardened linux-aegis-hardened-headers
sudo pacman -S linux-lts linux-lts-headers

Description: J'installe les trois d'un coup avec leurs headers. Les headers sont indispensables pour DKMS - sans ca, scap et les autres modules out-of-tree ne compilent pas.

Copy command
ls /boot/vmlinuz*

Description: Je verifie que les trois vmlinuz sont bien la avant de toucher a GRUB. Si un manque, l'install a rater quelque part.

GRUB - Kernel par défaut

Méthode persistante : GRUB mémorise le dernier kernel sélectionné au démarrage

Copy command
# Dans /etc/default/grub :
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Description: Ces deux lignes font que GRUB retient le dernier kernel choisi au demarrage. Je selectionne aegis-offensive une fois, et il reboot dessus par defaut ensuite. A coller dans /etc/default/grub.

Copy command
sudo grub-mkconfig -o /boot/grub/grub.cfg

Description: A relancer a chaque fois qu'on touche a /etc/default/grub ou qu'on installe un nouveau kernel. Sans ca, les changements ne sont pas pris en compte.

Copy command
grep -E "^menuentry|submenu" /boot/grub/grub.cfg | head -20

Description: Si la methode saved ne marche pas, cette commande donne le nom exact des entrees GRUB. Pratique pour forcer le defaut directement par nom dans le fichier de config.

GRUB - Reset

Si GRUB a un comportement anormal ou boucle sur un mauvais kernel

Copy command
sudo rm /boot/grub/grubenv
sudo grub-mkconfig -o /boot/grub/grub.cfg

Description: Le grubenv stocke le kernel selectionne. Si GRUB boucle sur le mauvais kernel ou a un comportement bizarre, je supprime ce fichier et je regenere - ca repart propre.

Secure Boot

sbctl

sbctl genere mes cles de signature et les inscrit dans le firmware UEFI. Un hook pacman (zz-sbctl.hook) re-signe tout automatiquement a chaque update - une fois le setup fait, je n'y touche plus jamais.

Étape 0 - BIOS : Setup Mode

Étape manuelle dans le BIOS/UEFI

  1. 1. Redémarrer dans le BIOS (ASUS : touche Del ou F2)
  2. 2. Section Security ou Boot → désactiver Secure Boot si actif
  3. 3. Chercher "Reset to Setup Mode" ou "Clear Secure Boot Keys" → confirmer
  4. 4. Sauvegarder (F10) et rebooter

Vérifier ensuite : sbctl status → Setup Mode: ✓ Enabled

Prérequis

Copy command
sudo pacman -S sbctl
sbctl status

Description: J'installe sbctl et je verifie l'etat avant de commencer. Setup Mode doit etre Enabled - si ce n'est pas le cas, c'est que le passage en Setup Mode dans le BIOS n'a pas ete fait.

Créer les clés

Copy command
sudo sbctl create-keys

Description: Ca genere mes cles de signature perso (PK, KEK, db) dans /var/lib/sbctl/keys/. C'est ces cles qui vont signer tous les binaires EFI.

Monter la partition EFI

Vérifier que la partition EFI est bien montée avant de continuer

Copy command
lsblk -f | grep -i efi
sudo mount /dev/nvme0n1p1 /boot/efi

Description: La partition EFI n'est pas toujours montee automatiquement. La premiere commande permet de la reperer (type vfat), la deuxieme la monte si ce n'est pas deja fait.

Copy command
find /boot/efi -name "*.efi" 2>/dev/null

Description: Je liste tous les .efi de la partition pour savoir exactement quels chemins je dois signer. Ca evite de rater un fichier et d'avoir une surprise au reboot.

Réinstaller GRUB (TPM)

--modules="tpm" et --disable-shim-lock sont obligatoires pour sbctl sans shim

Copy command
sudo grub-install \
  --target=x86_64-efi \
  --efi-directory=/boot/efi \
  --bootloader-id=GRUB \
  --modules="tpm" \
  --disable-shim-lock

sudo grub-mkconfig -o /boot/grub/grub.cfg

Description: C'est l'etape qui se loupe le plus souvent. Sans --modules="tpm" et --disable-shim-lock, sbctl ne peut pas signer correctement. Autre piege : bien verifier le chemin --efi-directory avec lsblk avant de lancer.

Enrolle les clés

Copy command
sudo sbctl enroll-keys --microsoft

Description: J'enrolle mes cles dans le firmware EFI. Le flag --microsoft est obligatoire pour moi - dual-boot Windows et Option ROMs sur le firmware. Sans ce flag, Windows ne boot plus. Si le terminal affiche un warning rouge sur les Option ROMs, c'est encore plus important de le mettre.

Signer les fichiers

Le flag -s enregistre le chemin dans sbctl - le hook pacman re-signera automatiquement à chaque update

Copy command
sudo sbctl sign -s /boot/efi/EFI/GRUB/grubx64.efi
sudo sbctl sign -s /boot/efi/EFI/endeavouros/grubx64.efi
sudo sbctl sign -s /boot/efi/EFI/Boot/bootx64.efi
sudo sbctl sign -s /boot/vmlinuz-linux-aegis-offensive
sudo sbctl sign -s /boot/vmlinuz-linux-lts
sudo sbctl sign -s /boot/vmlinuz-linux-zen
sudo sbctl sign -s /boot/vmlinuz-linux

Description: Le -s est crucial. Sans lui le fichier est signe une fois mais pas enregistre, donc a la prochaine mise a jour kernel c'est plus signe et ca boot plus. Avec -s, le hook pacman s'en occupe tout seul.

Copy command
sudo sbctl list-files

Description: Je verifie que tous les fichiers sont bien dans la liste. Tout ce qui est la sera re-signe automatiquement a chaque pacman -Syu - plus besoin d'y toucher apres ca.

Vérifier après reboot

Après avoir réactivé Secure Boot dans le BIOS

Copy command
sbctl status

Description: Si tout s'est bien passe : Secure Boot: Enabled, Setup Mode: Disabled, Vendor Keys: microsoft. C'est exactement ce que j'ai apres setup. Si Secure Boot est encore Disabled, retour dans le BIOS.

Étape finale - BIOS : Activer Secure Boot

Étape manuelle dans le BIOS/UEFI

  1. 1. Retourner dans le BIOS/UEFI
  2. 2. Réactiver Secure Boot
  3. 3. Sauvegarder (F10) et rebooter

Vérifier ensuite : sbctl status → Secure Boot: ✓ Enabled / Vendor Keys: microsoft

Problèmes connus

DKMS / scap

Les modules scap (Sysdig/Falco) peuvent casser après une mise à jour de kernel aegis

Copy command
dkms status

Description: Premier reflexe quand quelque chose cloche avec les modules - ca donne l'etat de tout ce qui est installe et si c'est compatible avec les kernels actifs.

Copy command
sudo dkms remove scap/9.1.0 -k $(uname -r)

Description: scap a des problemes de compatibilite avec les kernels aegis. Je retire le module pour le kernel actif. Adapter la version (9.1.0) selon la sortie de dkms status.

Copy command
sudo dkms autoinstall -k $(uname -r)

Description: Si scap refuse de se rebuilder sur les kernels aegis, je boote sur linux-lts le temps de regler ca - c'est d'ailleurs pour ca qu'il est dans le setup.

CAP_PERFMON (aegis-hardened)

Sur linux-aegis-hardened, perf_event_open est restreint à CAP_PERFMON

Copy command
sudo setcap cap_perfmon+eip $(which hashcat)

Description: Sur aegis-hardened, hashcat, bcc et perf passent pas sans root a cause de la restriction perf_event_open. Cette commande accorde la capability directement sur le binaire - a refaire si hashcat est mis a jour.

Recovery

Ca boot plus apres l'activation du Secure Boot ? Pas de panique. Retour dans le BIOS, Secure Boot off, reboot. Aucun risque de brick - les cles restent dans le firmware, il suffit de diagnostiquer et de recommencer.

Diagnostiquer avec :

sbctl status
sudo sbctl list-files