Optimiser le noyau d'un serveur Debian 12.6.1 sur Kamatera
Introduction
Pour ce tuto, nous allons installer une VM Debian 12.6.1 sur Kamatera et recompiler son noyau afin de le dépoussiérer de tout ce qui n'est pas strictement nécessaire à l'installation d'un serveur SFTP (par exemple) et à la mise en place d'NFTABLES pour nous protéger un peu.
Nous allons passer d'un noyau avec modules de 440 Mo (c'est la taille par défaut sur une image debian standard) à un noyau + modules de seulement 20 Mo !
Nous réaliserons également des benchmark AVANT et APRES optimisation pour bien comprendre la différence.
(Allez voir tout en bas pour les résultats si vous êtes pressés).
Il est possible d'aller encore plus loin bien sûr, mais l'optimisation obtenue ici est déjà très importante.
PREPARATION
1) Créer une VM
- Choix d'une VM Debian 12.6.1 64bit
- TYPE : Dedicated
- CPU : 2
- RAM : 8GB
- SSD : 50GB
- Hostname : OPTIM-DEB
- Hourly Billing Cycle (pour ne pas être facturés de 80€ pour 2h de tests !)
2) Envoyer notre clef publique au nouveau serveur
Pour pouvoir se connecter à root sans mot de passe :
ssh-copy-id -i /emplacement/local/clef_publique.pub root@IP-OPTIM-DEB
3) Se connecter à la VM
ssh root@IP-OPTIM-DEB
4) N'autoriser que les connexions à root via SSH
sed -i 's/PermitRootLogin yes/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
systemctl restart sshd
PRENEZ A PRESENT UN SNAPSHOT DEPUIS LA CONSOLE KAMATERA !!
NOMMEZ-LE "INSTALLATION" (par exemple)
Lorsqu'on fait des optimisations, on a souvent besoin de revenir rapidement en arrière en cas de pépin.
PREMIERE ETAPE : Réaliser des benchmark du système AVANT optimisation
1) Exécuter un script de benchmark
Vous pouvez exécuter mon script ou tout autre outil :
http://.eklablog.fr/effectuer-un-benchmark-avec-sysbench-a216366267
2) Résultats des bench AVANT optimisation
Bench no.1
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2040.27 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 6440.12 reads/sec
| I/O Sequential Read : 100.63 MiB/sec
| I/O Sequential Write : 67.08 MiB/sec
|-----------------------------------------------------
| Note globale : 72.004260 %
-----------------------------------------------------
Bench no.2
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2026.39 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 6414.20 reads/sec
| I/O Sequential Read : 100.22 MiB/sec
| I/O Sequential Write : 66.81 MiB/sec
|-----------------------------------------------------
| Note globale : 71.920400 %
-----------------------------------------------------
Bench no.3
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2029.63 events/sec
| Mémoire : 101055.36 MiB/sec
| I/O Random R/W : 6547.27 reads/sec
| I/O Sequential Read : 102.30 MiB/sec
| I/O Sequential Write : 68.20 MiB/sec
|-----------------------------------------------------
| Note globale : 71.677940 %
-----------------------------------------------------
Bench no.4
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2034.81 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 6661.92 reads/sec
| I/O Sequential Read : 104.09 MiB/sec
| I/O Sequential Write : 69.40 MiB/sec
|-----------------------------------------------------
| Note globale : 72.720720 %
-----------------------------------------------------
Moyenne des bench
CPU : 2032.78 events/sec
Mémoire : 102063.84 MiB/sec
I/O Random R/W : 6515.88 reads/sec
I/O Sequential Read : 101.81 MiB/sec
I/O Sequential Write : 67.87 MiB/sec
Note globale : 72.08 %
DEUXIEME ETAPE : Tout connaître du matériel sur lequel est installé notre système !
Générer un fichier d'analyse
mkdir system_info ; cd system_info
for cmd in "uname -a" "lscpu" "free -h" "lsblk" "lspci -v" "ip a" "lsmod" "dmidecode"
do
$cmd >> "resultats.txt" 2>&1
done
Analyse des résultats
Voici ce que vous pourrez en extraire :
Environnement de Virtualisation
- Il s'agit d'une machine virtuelle KVM/QEMU
- Utilise une émulation de chipset Intel 440FX + PIIX (architecture PC classique)
Processeur
- 2 CPU virtuels (vCPUs)
- Architecture x86_64 (64-bit)
- Basé sur Intel Xeon Platinum 8358P
- Support des instructions avancées (AVX, AVX2, SSE, etc.)
- 1 cœur par socket, 2 sockets
- Pas d'hyperthreading (1 thread par cœur)
Mémoire
- 8 GB RAM total
- Très peu utilisée : 292 MB utilisés, 7.5 GB libres
- Pas de swap configuré
- Cache L1d/L1i : 64 KB par CPU
- Cache L2 : 8 MB par CPU
- Cache L3 : 32 MB par CPU
Stockage
- Un disque dur virtuel (sda) de 50 GB
- Une partition unique (sda1) montée sur /
- Un lecteur CD-ROM virtuel (sr0) de 1024 MB
Réseau
- Une interface réseau virtuelle (eth0)
- Utilise le driver virtio-net
Autres périphériques
- Contrôleur graphique Bochs/QXL
- Contrôleur USB UHCI
- Contrôleur SCSI virtio
- Console virtio
Une VM classique en somme, dont les caractéristiques répondent bien à ce que nous avons loué.
Mais a priori, il y a des choses qui n'ont rien à faire sur notre serveur (contrôleurs USB, CD-ROM) !!
TROISIEME ETAPE : virer le superflu !
Installer les paquets nécessaires
apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev git -y
Télécharger et décompresser les sources du noyau
cd /usr/src
apt-get source linux-image-$(uname -r) -y
apt-get install linux-source -y
cd /usr/src
tar xf linux-source-6.1.tar.xz
cd linux-source-6.1
cp /boot/config-$(uname -r) .config
Installer les paquets pour le build
apt install build-essential bc kmod cpio flex libncurses5-dev libelf-dev libssl-dev dwarves bison -y
Optimiser la configuration pour les modules
make localmodconfig
- Tappez ENTRER pour BUILD_SALT
- Tappez Y pour MODULE_SIG_ALL
- Tappez n pour GPIO_BT8XX (vieux matériel)
- Tappez n pour SENSORS_ADM1021 (car environnement virtualisé)
- Tappez n pour SENSORS_MAX6642 (car environnement virtualisé)
- Tappez ENTRER pour File name or PKCS#11 URI of module signing key (MODULE_SIG_KEY)
- Tappez ENTRER (surtout pas Y) pour Additional X.509 keys for default system keyring (SYSTEM_TRUSTED_KEYS)
Optimiser la configuration pour intégrer directement les pilotes dans le noyau
make localyesconfig
- DM "dm-mod.create=" parameter support (DM_INIT) [N/y/?] (NEW) y
- Insert extra checks and debug info into the DRM range managers (DRM_DEBUG_MM) [N/y/?] (NEW) n
- Enable carrying the IMA measurement list across a soft boot (IMA_KEXEC) [N/y/?] n
- Default template : choice[1-2?]: 2
- Default integrity hash algorithm : choice[1-3?]: 2
Optimisations complètes
Voici toutes les optimisations qui peuvent être faîtes d'un coup (on peut certainement aller encore plus loin !) :
# Désactiver les fonctionnalités audio/vidéo inutiles
sed -i 's/CONFIG_SOUND=.*/CONFIG_SOUND=n/' .config
sed -i 's/CONFIG_AGP=.*/CONFIG_AGP=n/' .config
sed -i 's/CONFIG_DRM=.*/CONFIG_DRM=n/' .config
# Désactiver les périphériques d'entrée inutiles
sed -i 's/CONFIG_INPUT_JOYSTICK=.*/CONFIG_INPUT_JOYSTICK=n/' .config
sed -i 's/CONFIG_INPUT_TABLET=.*/CONFIG_INPUT_TABLET=n/' .config
sed -i 's/CONFIG_INPUT_TOUCHSCREEN=.*/CONFIG_INPUT_TOUCHSCREEN=n/' .config
# Désactiver le support wireless inutile pour un serveur
sed -i 's/CONFIG_WLAN=.*/CONFIG_WLAN=n/' .config
# Optimiser pour la performance
sed -i 's/CONFIG_PREEMPT_VOLUNTARY=.*/CONFIG_PREEMPT_VOLUNTARY=n/' .config
sed -i 's/CONFIG_PREEMPT=y/CONFIG_PREEMPT=n/' .config
# Désactiver le debug superflu
sed -i 's/CONFIG_DEBUG_KERNEL=.*/CONFIG_DEBUG_KERNEL=n/' .config
sed -i 's/CONFIG_DEBUG_INFO=.*/CONFIG_DEBUG_INFO=n/' .config
sed -i 's/CONFIG_DYNAMIC_DEBUG=.*/CONFIG_DYNAMIC_DEBUG=n/' .config
# Optimiser la mémoire
sed -i 's/CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=.*/CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y/' .config
sed -i 's/CONFIG_COMPACTION=.*/CONFIG_COMPACTION=y/' .config
# Activer les fonctionnalités de cryptographie nécessaires pour SFTP
sed -i 's/CONFIG_CRYPTO_AES=.*/CONFIG_CRYPTO_AES=y/' .config
sed -i 's/CONFIG_CRYPTO_SHA256=.*/CONFIG_CRYPTO_SHA256=y/' .config
sed -i 's/CONFIG_CRYPTO_SHA512=.*/CONFIG_CRYPTO_SHA512=y/' .config
# Désactiver les fonctionnalités multimédia inutiles
sed -i 's/CONFIG_MEDIA_SUPPORT=.*/CONFIG_MEDIA_SUPPORT=n/' .config
sed -i 's/CONFIG_MEDIA_CONTROLLER=.*/CONFIG_MEDIA_CONTROLLER=n/' .config
# Désactiver les fonctionnalités de test et debug restantes
sed -i 's/CONFIG_RUNTIME_TESTING_MENU=.*/CONFIG_RUNTIME_TESTING_MENU=n/' .config
sed -i 's/CONFIG_MEMTEST=.*/CONFIG_MEMTEST=n/' .config
sed -i 's/CONFIG_BOOT_PRINTK_DELAY=.*/CONFIG_BOOT_PRINTK_DELAY=n/' .config
# Désactiver les fonctionnalités d'entrée inutiles
sed -i 's/CONFIG_INPUT_MOUSEDEV=.*/CONFIG_INPUT_MOUSEDEV=n/' .config
sed -i 's/CONFIG_INPUT_JOYDEV=.*/CONFIG_INPUT_JOYDEV=n/' .config
sed -i 's/CONFIG_INPUT_EVDEV=.*/CONFIG_INPUT_EVDEV=n/' .config
sed -i 's/CONFIG_INPUT_KEYBOARD=.*/CONFIG_INPUT_KEYBOARD=n/' .config
sed -i 's/CONFIG_INPUT_MOUSE=.*/CONFIG_INPUT_MOUSE=n/' .config
# Désactiver les fonctionnalités réseau non nécessaires
sed -i 's/CONFIG_HAMRADIO=.*/CONFIG_HAMRADIO=n/' .config
sed -i 's/CONFIG_FDDI=.*/CONFIG_FDDI=n/' .config
sed -i 's/CONFIG_HIPPI=.*/CONFIG_HIPPI=n/' .config
sed -i 's/CONFIG_ISDN=.*/CONFIG_ISDN=n/' .config
# Désactiver les systèmes de fichiers non utilisés
sed -i 's/CONFIG_AUTOFS_FS=.*/CONFIG_AUTOFS_FS=n/' .config
# Désactiver les fonctionnalités de traçage non nécessaires
sed -i 's/CONFIG_FTRACE=.*/CONFIG_FTRACE=n/' .config
sed -i 's/CONFIG_FUNCTION_TRACER=.*/CONFIG_FUNCTION_TRACER=n/' .config
sed -i 's/CONFIG_FUNCTION_GRAPH_TRACER=.*/CONFIG_FUNCTION_GRAPH_TRACER=n/' .config
sed -i 's/CONFIG_STACK_TRACER=.*/CONFIG_STACK_TRACER=n/' .config
sed -i 's/CONFIG_MMIOTRACE=.*/CONFIG_MMIOTRACE=n/' .config
# Désactiver les fonctionnalités de virtualisation non utilisées
sed -i 's/CONFIG_XEN_BALLOON=.*/CONFIG_XEN_BALLOON=n/' .config
sed -i 's/CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=.*/CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=n/' .config
# Désactiver les fonctionnalités d'accessibilité non nécessaires
sed -i 's/CONFIG_ACCESSIBILITY=.*/CONFIG_ACCESSIBILITY=n/' .config
sed -i 's/CONFIG_A11Y_BRAILLE_CONSOLE=.*/CONFIG_A11Y_BRAILLE_CONSOLE=n/' .config
# Désactiver les fonctionnalités de surveillance matérielle non essentielles
sed -i 's/CONFIG_WATCHDOG=.*/CONFIG_WATCHDOG=n/' .config
# Désactiver les drivers réseau non utilisés (seul virtio_net est nécessaire)
sed -i 's/CONFIG_NET_VENDOR_3COM=.*/CONFIG_NET_VENDOR_3COM=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ADAPTEC=.*/CONFIG_NET_VENDOR_ADAPTEC=n/' .config
sed -i 's/CONFIG_NET_VENDOR_AGERE=.*/CONFIG_NET_VENDOR_AGERE=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ALACRITECH=.*/CONFIG_NET_VENDOR_ALACRITECH=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ALTEON=.*/CONFIG_NET_VENDOR_ALTEON=n/' .config
sed -i 's/CONFIG_NET_VENDOR_AMAZON=.*/CONFIG_NET_VENDOR_AMAZON=n/' .config
sed -i 's/CONFIG_NET_VENDOR_AMD=.*/CONFIG_NET_VENDOR_AMD=n/' .config
sed -i 's/CONFIG_NET_VENDOR_AQUANTIA=.*/CONFIG_NET_VENDOR_AQUANTIA=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ARC=.*/CONFIG_NET_VENDOR_ARC=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ATHEROS=.*/CONFIG_NET_VENDOR_ATHEROS=n/' .config
sed -i 's/CONFIG_NET_VENDOR_BROADCOM=.*/CONFIG_NET_VENDOR_BROADCOM=n/' .config
sed -i 's/CONFIG_NET_VENDOR_INTEL=.*/CONFIG_NET_VENDOR_INTEL=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MARVELL=.*/CONFIG_NET_VENDOR_MARVELL=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MICREL=.*/CONFIG_NET_VENDOR_MICREL=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MICROCHIP=.*/CONFIG_NET_VENDOR_MICROCHIP=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MYRI=.*/CONFIG_NET_VENDOR_MYRI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_NATSEMI=.*/CONFIG_NET_VENDOR_NATSEMI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_NVIDIA=.*/CONFIG_NET_VENDOR_NVIDIA=n/' .config
sed -i 's/CONFIG_NET_VENDOR_OKI=.*/CONFIG_NET_VENDOR_OKI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_QUALCOMM=.*/CONFIG_NET_VENDOR_QUALCOMM=n/' .config
sed -i 's/CONFIG_NET_VENDOR_REALTEK=.*/CONFIG_NET_VENDOR_REALTEK=n/' .config
sed -i 's/CONFIG_NET_VENDOR_RENESAS=.*/CONFIG_NET_VENDOR_RENESAS=n/' .config
sed -i 's/CONFIG_NET_VENDOR_RDC=.*/CONFIG_NET_VENDOR_RDC=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ROCKER=.*/CONFIG_NET_VENDOR_ROCKER=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SAMSUNG=.*/CONFIG_NET_VENDOR_SAMSUNG=n/' .config
# Désactiver les contrôleurs non présents
sed -i 's/CONFIG_MEGARAID_NEWGEN=.*/CONFIG_MEGARAID_NEWGEN=n/' .config
sed -i 's/CONFIG_FUSION=.*/CONFIG_FUSION=n/' .config
# Désactiver les contrôleurs USB non utilisés
sed -i 's/CONFIG_USB_EHCI_HCD=.*/CONFIG_USB_EHCI_HCD=n/' .config
sed -i 's/CONFIG_USB_OHCI_HCD=.*/CONFIG_USB_OHCI_HCD=n/' .config
# Désactiver les contrôleurs I2C non utilisés
sed -i 's/CONFIG_I2C_DESIGNWARE_CORE=.*/CONFIG_I2C_DESIGNWARE_CORE=n/' .config
sed -i 's/CONFIG_I2C_DESIGNWARE_PLATFORM=.*/CONFIG_I2C_DESIGNWARE_PLATFORM=n/' .config
sed -i 's/CONFIG_I2C_DESIGNWARE_BAYTRAIL=.*/CONFIG_I2C_DESIGNWARE_BAYTRAIL=n/' .config
# Désactiver les contrôleurs PINCTRL non utilisés
sed -i 's/CONFIG_PINCTRL_AMD=.*/CONFIG_PINCTRL_AMD=n/' .config
sed -i 's/CONFIG_PINCTRL_BAYTRAIL=.*/CONFIG_PINCTRL_BAYTRAIL=n/' .config
sed -i 's/CONFIG_PINCTRL_CHERRYVIEW=.*/CONFIG_PINCTRL_CHERRYVIEW=n/' .config
sed -i 's/CONFIG_PINCTRL_BROXTON=.*/CONFIG_PINCTRL_BROXTON=n/' .config
sed -i 's/CONFIG_PINCTRL_CANNONLAKE=.*/CONFIG_PINCTRL_CANNONLAKE=n/' .config
sed -i 's/CONFIG_PINCTRL_DENVERTON=.*/CONFIG_PINCTRL_DENVERTON=n/' .config
sed -i 's/CONFIG_PINCTRL_GEMINILAKE=.*/CONFIG_PINCTRL_GEMINILAKE=n/' .config
sed -i 's/CONFIG_PINCTRL_ICELAKE=.*/CONFIG_PINCTRL_ICELAKE=n/' .config
# Désactiver les fonctionnalités ACPI non nécessaires
sed -i 's/CONFIG_ACPI_DOCK=.*/CONFIG_ACPI_DOCK=n/' .config
sed -i 's/CONFIG_ACPI_PROCESSOR_AGGREGATOR=.*/CONFIG_ACPI_PROCESSOR_AGGREGATOR=n/' .config
sed -i 's/CONFIG_ACPI_HOTPLUG_MEMORY=.*/CONFIG_ACPI_HOTPLUG_MEMORY=n/' .config
sed -i 's/CONFIG_ACPI_BGRT=.*/CONFIG_ACPI_BGRT=n/' .config
# Désactiver les fonctionnalités de platform devices non utilisées
sed -i 's/CONFIG_X86_PLATFORM_DEVICES=.*/CONFIG_X86_PLATFORM_DEVICES=n/' .config
sed -i 's/CONFIG_X86_PLATFORM_DRIVERS_DELL=.*/CONFIG_X86_PLATFORM_DRIVERS_DELL=n/' .config
sed -i 's/CONFIG_X86_PLATFORM_DRIVERS_HP=.*/CONFIG_X86_PLATFORM_DRIVERS_HP=n/' .config
# Désactiver les systèmes de fichiers non utilisés
sed -i 's/CONFIG_ACORN_PARTITION=.*/CONFIG_ACORN_PARTITION=n/' .config
sed -i 's/CONFIG_OSF_PARTITION=.*/CONFIG_OSF_PARTITION=n/' .config
sed -i 's/CONFIG_AMIGA_PARTITION=.*/CONFIG_AMIGA_PARTITION=n/' .config
sed -i 's/CONFIG_ATARI_PARTITION=.*/CONFIG_ATARI_PARTITION=n/' .config
sed -i 's/CONFIG_MAC_PARTITION=.*/CONFIG_MAC_PARTITION=n/' .config
sed -i 's/CONFIG_BSD_DISKLABEL=.*/CONFIG_BSD_DISKLABEL=n/' .config
sed -i 's/CONFIG_MINIX_SUBPARTITION=.*/CONFIG_MINIX_SUBPARTITION=n/' .config
sed -i 's/CONFIG_SOLARIS_X86_PARTITION=.*/CONFIG_SOLARIS_X86_PARTITION=n/' .config
sed -i 's/CONFIG_UNIXWARE_DISKLABEL=.*/CONFIG_UNIXWARE_DISKLABEL=n/' .config
sed -i 's/CONFIG_LDM_PARTITION=.*/CONFIG_LDM_PARTITION=n/' .config
sed -i 's/CONFIG_SGI_PARTITION=.*/CONFIG_SGI_PARTITION=n/' .config
sed -i 's/CONFIG_ULTRIX_PARTITION=.*/CONFIG_ULTRIX_PARTITION=n/' .config
sed -i 's/CONFIG_SUN_PARTITION=.*/CONFIG_SUN_PARTITION=n/' .config
sed -i 's/CONFIG_KARMA_PARTITION=.*/CONFIG_KARMA_PARTITION=n/' .config
# Désactiver les protocoles réseau non utilisés
sed -i 's/CONFIG_IPV6_MIP6=.*/CONFIG_IPV6_MIP6=n/' .config
sed -i 's/CONFIG_IPV6_SIT=.*/CONFIG_IPV6_SIT=n/' .config
sed -i 's/CONFIG_IPV6_TUNNEL=.*/CONFIG_IPV6_TUNNEL=n/' .config
sed -i 's/CONFIG_INET_TUNNEL=.*/CONFIG_INET_TUNNEL=n/' .config
sed -i 's/CONFIG_INET6_TUNNEL=.*/CONFIG_INET6_TUNNEL=n/' .config
sed -i 's/CONFIG_INET_DIAG=.*/CONFIG_INET_DIAG=n/' .config
sed -i 's/CONFIG_INET_TCP_DIAG=.*/CONFIG_INET_TCP_DIAG=n/' .config
sed -i 's/CONFIG_TCP_CONG_BIC=.*/CONFIG_TCP_CONG_BIC=n/' .config
sed -i 's/CONFIG_TCP_CONG_WESTWOOD=.*/CONFIG_TCP_CONG_WESTWOOD=n/' .config
sed -i 's/CONFIG_TCP_CONG_HTCP=.*/CONFIG_TCP_CONG_HTCP=n/' .config
# Désactiver les fonctionnalités de débogage supplémentaires
sed -i 's/CONFIG_DEBUG_BUGVERBOSE=.*/CONFIG_DEBUG_BUGVERBOSE=n/' .config
sed -i 's/CONFIG_DEBUG_MISC=.*/CONFIG_DEBUG_MISC=n/' .config
sed -i 's/CONFIG_DEBUG_MEMORY_INIT=.*/CONFIG_DEBUG_MEMORY_INIT=n/' .config
sed -i 's/CONFIG_SCHED_DEBUG=.*/CONFIG_SCHED_DEBUG=n/' .config
sed -i 's/CONFIG_SCHEDSTATS=.*/CONFIG_SCHEDSTATS=n/' .config
sed -i 's/CONFIG_DEBUG_LIST=.*/CONFIG_DEBUG_LIST=n/' .config
sed -i 's/CONFIG_RCU_TRACE=.*/CONFIG_RCU_TRACE=n/' .config
# Désactiver les fonctionnalités de virtualisation non utilisées
sed -i 's/CONFIG_XEN_PCIDEV_BACKEND=.*/CONFIG_XEN_PCIDEV_BACKEND=n/' .config
sed -i 's/CONFIG_XEN_BLKDEV_BACKEND=.*/CONFIG_XEN_BLKDEV_BACKEND=n/' .config
sed -i 's/CONFIG_XEN_NETDEV_BACKEND=.*/CONFIG_XEN_NETDEV_BACKEND=n/' .config
sed -i 's/CONFIG_XEN_SCSI_BACKEND=.*/CONFIG_XEN_SCSI_BACKEND=n/' .config
sed -i 's/CONFIG_XEN_ACPI_PROCESSOR=.*/CONFIG_XEN_ACPI_PROCESSOR=n/' .config
# Désactiver les fonctionnalités ACPI non nécessaires
sed -i 's/CONFIG_ACPI_AC=.*/CONFIG_ACPI_AC=n/' .config
sed -i 's/CONFIG_ACPI_BATTERY=.*/CONFIG_ACPI_BATTERY=n/' .config
sed -i 's/CONFIG_ACPI_FAN=.*/CONFIG_ACPI_FAN=n/' .config
sed -i 's/CONFIG_ACPI_DOCK=.*/CONFIG_ACPI_DOCK=n/' .config
sed -i 's/CONFIG_ACPI_PROCESSOR_AGGREGATOR=.*/CONFIG_ACPI_PROCESSOR_AGGREGATOR=n/' .config
# Désactiver les fonctionnalités USB non utilisées
sed -i 's/CONFIG_USB_PRINTER=.*/CONFIG_USB_PRINTER=n/' .config
sed -i 's/CONFIG_USB_STORAGE=.*/CONFIG_USB_STORAGE=n/' .config
sed -i 's/CONFIG_USB_SERIAL=.*/CONFIG_USB_SERIAL=n/' .config
# Désactiver les pilotes de périphériques série inutiles
sed -i 's/CONFIG_SERIAL_8250_EXTENDED=.*/CONFIG_SERIAL_8250_EXTENDED=n/' .config
sed -i 's/CONFIG_SERIAL_8250_MANY_PORTS=.*/CONFIG_SERIAL_8250_MANY_PORTS=n/' .config
sed -i 's/CONFIG_SERIAL_8250_SHARE_IRQ=.*/CONFIG_SERIAL_8250_SHARE_IRQ=n/' .config
sed -i 's/CONFIG_SERIAL_8250_DETECT_IRQ=.*/CONFIG_SERIAL_8250_DETECT_IRQ=n/' .config
sed -i 's/CONFIG_SERIAL_8250_RSA=.*/CONFIG_SERIAL_8250_RSA=n/' .config
sed -i 's/CONFIG_SERIAL_8250_DW=.*/CONFIG_SERIAL_8250_DW=n/' .config
sed -i 's/CONFIG_SERIAL_8250_FINTEK=.*/CONFIG_SERIAL_8250_FINTEK=n/' .config
# Désactiver les fonctionnalités crypto non utilisées
sed -i 's/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=.*/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/' .config
sed -i 's/CONFIG_CRYPTO_NULL=.*/CONFIG_CRYPTO_NULL=n/' .config
sed -i 's/CONFIG_CRYPTO_GF128MUL=.*/CONFIG_CRYPTO_GF128MUL=n/' .config
sed -i 's/CONFIG_CRYPTO_CTR=.*/CONFIG_CRYPTO_CTR=n/' .config
sed -i 's/CONFIG_CRYPTO_CTS=.*/CONFIG_CRYPTO_CTS=n/' .config
sed -i 's/CONFIG_CRYPTO_GCM=.*/CONFIG_CRYPTO_GCM=n/' .config
sed -i 's/CONFIG_CRYPTO_GHASH=.*/CONFIG_CRYPTO_GHASH=n/' .config
# Désactiver les fonctionnalités DMA inutiles
sed -i 's/CONFIG_DW_DMAC_CORE=.*/CONFIG_DW_DMAC_CORE=n/' .config
sed -i 's/CONFIG_DW_DMAC_PCI=.*/CONFIG_DW_DMAC_PCI=n/' .config
sed -i 's/CONFIG_HSU_DMA=.*/CONFIG_HSU_DMA=n/' .config
# Désactiver les fonctionnalités CXL non utilisées
sed -i 's/CONFIG_CXL_BUS=.*/CONFIG_CXL_BUS=n/' .config
sed -i 's/CONFIG_CXL_PCI=.*/CONFIG_CXL_PCI=n/' .config
sed -i 's/CONFIG_CXL_ACPI=.*/CONFIG_CXL_ACPI=n/' .config
sed -i 's/CONFIG_CXL_PMEM=.*/CONFIG_CXL_PMEM=n/' .config
sed -i 's/CONFIG_CXL_MEM=.*/CONFIG_CXL_MEM=n/' .config
sed -i 's/CONFIG_CXL_PORT=.*/CONFIG_CXL_PORT=n/' .config
sed -i 's/CONFIG_CXL_SUSPEND=.*/CONFIG_CXL_SUSPEND=n/' .config
# Désactiver les fonctionnalités de compatibilité legacy
sed -i 's/CONFIG_LEGACY_PTYS=.*/CONFIG_LEGACY_PTYS=n/' .config
sed -i 's/CONFIG_LEGACY_PTY_COUNT=.*/CONFIG_LEGACY_PTY_COUNT=0/' .config
sed -i 's/CONFIG_COMPAT_BRK=.*/CONFIG_COMPAT_BRK=n/' .config
# Désactiver les fonctionnalités RTC supplémentaires
sed -i 's/CONFIG_RTC_INTF_SYSFS=.*/CONFIG_RTC_INTF_SYSFS=n/' .config
sed -i 's/CONFIG_RTC_INTF_PROC=.*/CONFIG_RTC_INTF_PROC=n/' .config
sed -i 's/CONFIG_RTC_I2C_AND_SPI=.*/CONFIG_RTC_I2C_AND_SPI=n/' .config
# Désactiver les fonctionnalités de décompression non utilisées
sed -i 's/CONFIG_XZ_DEC_POWERPC=.*/CONFIG_XZ_DEC_POWERPC=n/' .config
sed -i 's/CONFIG_XZ_DEC_IA64=.*/CONFIG_XZ_DEC_IA64=n/' .config
sed -i 's/CONFIG_XZ_DEC_ARM=.*/CONFIG_XZ_DEC_ARM=n/' .config
sed -i 's/CONFIG_XZ_DEC_ARMTHUMB=.*/CONFIG_XZ_DEC_ARMTHUMB=n/' .config
sed -i 's/CONFIG_XZ_DEC_SPARC=.*/CONFIG_XZ_DEC_SPARC=n/' .config
# Désactiver les fonctionnalités de surveillance système non essentielles
sed -i 's/CONFIG_DETECT_HUNG_TASK=.*/CONFIG_DETECT_HUNG_TASK=n/' .config
sed -i 's/CONFIG_BOOTPARAM_HUNG_TASK_PANIC=.*/CONFIG_BOOTPARAM_HUNG_TASK_PANIC=n/' .config
sed -i 's/CONFIG_WQ_WATCHDOG=.*/CONFIG_WQ_WATCHDOG=n/' .config
# Désactiver les fonctionnalités PNP non utilisées
sed -i 's/CONFIG_PNP_DEBUG_MESSAGES=.*/CONFIG_PNP_DEBUG_MESSAGES=n/' .config
# Désactiver les fonctionnalités EDAC non nécessaires
sed -i 's/CONFIG_EDAC_DECODE_MCE=.*/CONFIG_EDAC_DECODE_MCE=n/' .config
sed -i 's/CONFIG_EDAC_LEGACY_SYSFS=.*/CONFIG_EDAC_LEGACY_SYSFS=n/' .config
sed -i 's/CONFIG_EDAC_DEBUG=.*/CONFIG_EDAC_DEBUG=n/' .config
# Désactiver les fonctionnalités de boot verbose
sed -i 's/CONFIG_X86_VERBOSE_BOOTUP=.*/CONFIG_X86_VERBOSE_BOOTUP=n/' .config
# Désactiver les fonctionnalités de débogage FPU
sed -i 's/CONFIG_X86_DEBUG_FPU=.*/CONFIG_X86_DEBUG_FPU=n/' .config
# Désactiver les drivers réseau inutiles (suite)
sed -i 's/CONFIG_NET_VENDOR_GOOGLE=.*/CONFIG_NET_VENDOR_GOOGLE=n/' .config
sed -i 's/CONFIG_NET_VENDOR_HUAWEI=.*/CONFIG_NET_VENDOR_HUAWEI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_ADI=.*/CONFIG_NET_VENDOR_ADI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_LITEX=.*/CONFIG_NET_VENDOR_LITEX=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MELLANOX=.*/CONFIG_NET_VENDOR_MELLANOX=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MICROSEMI=.*/CONFIG_NET_VENDOR_MICROSEMI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_MICROSOFT=.*/CONFIG_NET_VENDOR_MICROSOFT=n/' .config
sed -i 's/CONFIG_NET_VENDOR_NI=.*/CONFIG_NET_VENDOR_NI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_NETERION=.*/CONFIG_NET_VENDOR_NETERION=n/' .config
sed -i 's/CONFIG_NET_VENDOR_NETRONOME=.*/CONFIG_NET_VENDOR_NETRONOME=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SEEQ=.*/CONFIG_NET_VENDOR_SEEQ=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SILAN=.*/CONFIG_NET_VENDOR_SILAN=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SIS=.*/CONFIG_NET_VENDOR_SIS=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SOLARFLARE=.*/CONFIG_NET_VENDOR_SOLARFLARE=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SMSC=.*/CONFIG_NET_VENDOR_SMSC=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SOCIONEXT=.*/CONFIG_NET_VENDOR_SOCIONEXT=n/' .config
sed -i 's/CONFIG_NET_VENDOR_STMICRO=.*/CONFIG_NET_VENDOR_STMICRO=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SUN=.*/CONFIG_NET_VENDOR_SUN=n/' .config
sed -i 's/CONFIG_NET_VENDOR_SYNOPSYS=.*/CONFIG_NET_VENDOR_SYNOPSYS=n/' .config
sed -i 's/CONFIG_NET_VENDOR_TEHUTI=.*/CONFIG_NET_VENDOR_TEHUTI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_TI=.*/CONFIG_NET_VENDOR_TI=n/' .config
sed -i 's/CONFIG_NET_VENDOR_VERTEXCOM=.*/CONFIG_NET_VENDOR_VERTEXCOM=n/' .config
sed -i 's/CONFIG_NET_VENDOR_VIA=.*/CONFIG_NET_VENDOR_VIA=n/' .config
sed -i 's/CONFIG_NET_VENDOR_WANGXUN=.*/CONFIG_NET_VENDOR_WANGXUN=n/' .config
sed -i 's/CONFIG_NET_VENDOR_WIZNET=.*/CONFIG_NET_VENDOR_WIZNET=n/' .config
sed -i 's/CONFIG_NET_VENDOR_XILINX=.*/CONFIG_NET_VENDOR_XILINX=n/' .config
sed -i 's/CONFIG_USB_NET_DRIVERS=.*/CONFIG_USB_NET_DRIVERS=n/' .config
# Désactiver les fonctionnalités de sécurité redondantes
sed -i 's/CONFIG_SECURITY_SELINUX=.*/CONFIG_SECURITY_SELINUX=n/' .config
sed -i 's/CONFIG_SECURITY_SMACK=.*/CONFIG_SECURITY_SMACK=n/' .config
sed -i 's/CONFIG_SECURITY_TOMOYO=.*/CONFIG_SECURITY_TOMOYO=n/' .config
# Désactiver les fonctionnalités de monitoring système non essentielles
sed -i 's/CONFIG_PROC_PAGE_MONITOR=.*/CONFIG_PROC_PAGE_MONITOR=n/' .config
sed -i 's/CONFIG_PROC_CHILDREN=.*/CONFIG_PROC_CHILDREN=n/' .config
sed -i 's/CONFIG_PROC_PID_ARCH_STATUS=.*/CONFIG_PROC_PID_ARCH_STATUS=n/' .config
sed -i 's/CONFIG_PROC_CPU_RESCTRL=.*/CONFIG_PROC_CPU_RESCTRL=n/' .config
# Désactiver les fonctionnalités d'émulation inutiles
sed -i 's/CONFIG_X86_X32=.*/CONFIG_X86_X32=n/' .config
sed -i 's/CONFIG_IA32_EMULATION=.*/CONFIG_IA32_EMULATION=n/' .config
sed -i 's/CONFIG_X86_X32_ABI=.*/CONFIG_X86_X32_ABI=n/' .config
# Désactiver les fonctionnalités de performance debugging
sed -i 's/CONFIG_PERF_EVENTS_INTEL_UNCORE=.*/CONFIG_PERF_EVENTS_INTEL_UNCORE=n/' .config
sed -i 's/CONFIG_PERF_EVENTS_INTEL_RAPL=.*/CONFIG_PERF_EVENTS_INTEL_RAPL=n/' .config
sed -i 's/CONFIG_PERF_EVENTS_INTEL_CSTATE=.*/CONFIG_PERF_EVENTS_INTEL_CSTATE=n/' .config
sed -i 's/CONFIG_PERF_EVENTS_AMD_UNCORE=.*/CONFIG_PERF_EVENTS_AMD_UNCORE=n/' .config
# Désactiver les fonctionnalités de debug supplémentaires
sed -i 's/CONFIG_DEBUG_MEMORY_INIT=.*/CONFIG_DEBUG_MEMORY_INIT=n/' .config
sed -i 's/CONFIG_HAVE_DEBUG_KMEMLEAK=.*/CONFIG_HAVE_DEBUG_KMEMLEAK=n/' .config
sed -i 's/CONFIG_DEBUG_VIRTUAL=.*/CONFIG_DEBUG_VIRTUAL=n/' .config
sed -i 's/CONFIG_DEBUG_VM_PGTABLE=.*/CONFIG_DEBUG_VM_PGTABLE=n/' .config
# Désactiver les fonctionnalités de traçage non nécessaires
sed -i 's/CONFIG_FTRACE=.*/CONFIG_FTRACE=n/' .config
sed -i 's/CONFIG_FUNCTION_TRACER=.*/CONFIG_FUNCTION_TRACER=n/' .config
sed -i 's/CONFIG_FUNCTION_GRAPH_TRACER=.*/CONFIG_FUNCTION_GRAPH_TRACER=n/' .config
sed -i 's/CONFIG_STACK_TRACER=.*/CONFIG_STACK_TRACER=n/' .config
sed -i 's/CONFIG_TRACE_CLOCK=.*/CONFIG_TRACE_CLOCK=n/' .config
# Désactiver les fonctionnalités de débogage mémoire
sed -i 's/CONFIG_PAGE_POISONING=.*/CONFIG_PAGE_POISONING=n/' .config
sed -i 's/CONFIG_PAGE_EXTENSION=.*/CONFIG_PAGE_EXTENSION=n/' .config
sed -i 's/CONFIG_DEBUG_PAGE_REF=.*/CONFIG_DEBUG_PAGE_REF=n/' .config
# Désactiver les fonctionnalités de power management non essentielles
sed -i 's/CONFIG_PM_DEBUG=.*/CONFIG_PM_DEBUG=n/' .config
sed -i 's/CONFIG_PM_ADVANCED_DEBUG=.*/CONFIG_PM_ADVANCED_DEBUG=n/' .config
sed -i 's/CONFIG_PM_SLEEP_DEBUG=.*/CONFIG_PM_SLEEP_DEBUG=n/' .config
sed -i 's/CONFIG_PM_TRACE=.*/CONFIG_PM_TRACE=n/' .config
sed -i 's/CONFIG_PM_TRACE_RTC=.*/CONFIG_PM_TRACE_RTC=n/' .config
sed -i 's/CONFIG_ACPI_DEBUGGER=.*/CONFIG_ACPI_DEBUGGER=n/' .config
sed -i 's/CONFIG_ACPI_CONTAINER=.*/CONFIG_ACPI_CONTAINER=n/' .config
sed -i 's/CONFIG_ACPI_HOTPLUG_MEMORY=.*/CONFIG_ACPI_HOTPLUG_MEMORY=n/' .config
sed -i 's/CONFIG_ACPI_SBS=.*/CONFIG_ACPI_SBS=n/' .config
# Désactiver les fonctionnalités hotplug non essentielles
sed -i 's/CONFIG_HOTPLUG_PCI_PCIE=.*/CONFIG_HOTPLUG_PCI_PCIE=n/' .config
sed -i 's/CONFIG_HOTPLUG_PCI_CPCI=.*/CONFIG_HOTPLUG_PCI_CPCI=n/' .config
sed -i 's/CONFIG_HOTPLUG_PCI_SHPC=.*/CONFIG_HOTPLUG_PCI_SHPC=n/' .config
sed -i 's/CONFIG_MEMORY_HOTPLUG=.*/CONFIG_MEMORY_HOTPLUG=n/' .config
sed -i 's/CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=.*/CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=n/' .config
sed -i 's/CONFIG_MEMORY_HOTREMOVE=.*/CONFIG_MEMORY_HOTREMOVE=n/' .config
# Désactiver les fonctionnalités de monitoring hardware supplémentaires
sed -i 's/CONFIG_SENSORS_ACPI_POWER=.*/CONFIG_SENSORS_ACPI_POWER=n/' .config
sed -i 's/CONFIG_SENSORS_LM75=.*/CONFIG_SENSORS_LM75=n/' .config
sed -i 's/CONFIG_SENSORS_LM77=.*/CONFIG_SENSORS_LM77=n/' .config
sed -i 's/CONFIG_SENSORS_LM78=.*/CONFIG_SENSORS_LM78=n/' .config
sed -i 's/CONFIG_SENSORS_LM80=.*/CONFIG_SENSORS_LM80=n/' .config
sed -i 's/CONFIG_SENSORS_LM83=.*/CONFIG_SENSORS_LM83=n/' .config
sed -i 's/CONFIG_SENSORS_LM85=.*/CONFIG_SENSORS_LM85=n/' .config
sed -i 's/CONFIG_SENSORS_LM87=.*/CONFIG_SENSORS_LM87=n/' .config
# Désactiver les fonctionnalités NUMA non utilisées
sed -i 's/CONFIG_NUMA_BALANCING=.*/CONFIG_NUMA_BALANCING=n/' .config
sed -i 's/CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=.*/CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=n/' .config
sed -i 's/CONFIG_NUMA_EMU=.*/CONFIG_NUMA_EMU=n/' .config
# Désactiver les fonctionnalités de compatibilité supplémentaires
sed -i 's/CONFIG_COMPAT_32BIT_TIME=.*/CONFIG_COMPAT_32BIT_TIME=n/' .config
sed -i 's/CONFIG_COMPAT_FOR_U64_ALIGNMENT=.*/CONFIG_COMPAT_FOR_U64_ALIGNMENT=n/' .config
sed -i 's/CONFIG_COMPAT_NETLINK_MESSAGES=.*/CONFIG_COMPAT_NETLINK_MESSAGES=n/' .config
# Désactiver les fonctionnalités de débogage kernel supplémentaires
sed -i 's/CONFIG_DEBUG_SHIRQ=.*/CONFIG_DEBUG_SHIRQ=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS=.*/CONFIG_DEBUG_OBJECTS=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_FREE=.*/CONFIG_DEBUG_OBJECTS_FREE=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_TIMERS=.*/CONFIG_DEBUG_OBJECTS_TIMERS=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_WORK=.*/CONFIG_DEBUG_OBJECTS_WORK=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_RCU_HEAD=.*/CONFIG_DEBUG_OBJECTS_RCU_HEAD=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=.*/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=n/' .config
# Désactiver les fonctionnalités de performance monitoring inutiles
sed -i 's/CONFIG_HAVE_PERF_EVENTS_NMI=.*/CONFIG_HAVE_PERF_EVENTS_NMI=n/' .config
sed -i 's/CONFIG_HAVE_PERF_REGS=.*/CONFIG_HAVE_PERF_REGS=n/' .config
sed -i 's/CONFIG_HAVE_PERF_USER_STACK_DUMP=.*/CONFIG_HAVE_PERF_USER_STACK_DUMP=n/' .config
# Désactiver les fonctionnalités de crypto debug
sed -i 's/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=.*/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/' .config
sed -i 's/CONFIG_CRYPTO_TEST=.*/CONFIG_CRYPTO_TEST=n/' .config
sed -i 's/CONFIG_CRYPTO_STATS=.*/CONFIG_CRYPTO_STATS=n/' .config
# Désactiver les fonctionnalités RCU debug
sed -i 's/CONFIG_RCU_CPU_STALL_INFO=.*/CONFIG_RCU_CPU_STALL_INFO=n/' .config
sed -i 's/CONFIG_RCU_TRACE=.*/CONFIG_RCU_TRACE=n/' .config
sed -i 's/CONFIG_RCU_EQS_DEBUG=.*/CONFIG_RCU_EQS_DEBUG=n/' .config
# Désactiver les fonctionnalités de journalisation supplémentaires
sed -i 's/CONFIG_PRINTK_TIME=.*/CONFIG_PRINTK_TIME=n/' .config
sed -i 's/CONFIG_BOOT_PRINTK_DELAY=.*/CONFIG_BOOT_PRINTK_DELAY=n/' .config
sed -i 's/CONFIG_DYNAMIC_DEBUG=.*/CONFIG_DYNAMIC_DEBUG=n/' .config
sed -i 's/CONFIG_DEBUG_INFO_DWARF4=.*/CONFIG_DEBUG_INFO_DWARF4=n/' .config
sed -i 's/CONFIG_DEBUG_INFO_BTF=.*/CONFIG_DEBUG_INFO_BTF=n/' .config
# Désactiver les fonctionnalités de profiling non essentielles
sed -i 's/CONFIG_PROFILING=.*/CONFIG_PROFILING=n/' .config
sed -i 's/CONFIG_KPROBES=.*/CONFIG_KPROBES=n/' .config
sed -i 's/CONFIG_OPTPROBES=.*/CONFIG_OPTPROBES=n/' .config
sed -i 's/CONFIG_KRETPROBES=.*/CONFIG_KRETPROBES=n/' .config
sed -i 's/CONFIG_HAVE_KPROBES=.*/CONFIG_HAVE_KPROBES=n/' .config
# Désactiver les fonctionnalités de virtualisation non essentielles
sed -i 's/CONFIG_XEN_BALLOON=.*/CONFIG_XEN_BALLOON=n/' .config
sed -i 's/CONFIG_XEN_SCRUB_PAGES=.*/CONFIG_XEN_SCRUB_PAGES=n/' .config
sed -i 's/CONFIG_XEN_DEV_EVTCHN=.*/CONFIG_XEN_DEV_EVTCHN=n/' .config
sed -i 's/CONFIG_XEN_BACKEND=.*/CONFIG_XEN_BACKEND=n/' .config
sed -i 's/CONFIG_XEN_GNTDEV=.*/CONFIG_XEN_GNTDEV=n/' .config
sed -i 's/CONFIG_XEN_GRANT_DEV_ALLOC=.*/CONFIG_XEN_GRANT_DEV_ALLOC=n/' .config
# Désactiver les fonctionnalités de diagnostic supplémentaires
sed -i 's/CONFIG_DETECT_HUNG_TASK=.*/CONFIG_DETECT_HUNG_TASK=n/' .config
sed -i 's/CONFIG_WQ_WATCHDOG=.*/CONFIG_WQ_WATCHDOG=n/' .config
sed -i 's/CONFIG_SCHED_DEBUG=.*/CONFIG_SCHED_DEBUG=n/' .config
sed -i 's/CONFIG_SCHED_STACK_END_CHECK=.*/CONFIG_SCHED_STACK_END_CHECK=n/' .config
# Désactiver les fonctionnalités de mémoire debug
sed -i 's/CONFIG_DEBUG_PAGEALLOC=.*/CONFIG_DEBUG_PAGEALLOC=n/' .config
sed -i 's/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=.*/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=n/' .config
sed -i 's/CONFIG_DEBUG_VM=.*/CONFIG_DEBUG_VM=n/' .config
sed -i 's/CONFIG_DEBUG_VM_PGFLAGS=.*/CONFIG_DEBUG_VM_PGFLAGS=n/' .config
sed -i 's/CONFIG_DEBUG_MEMORY_INIT=.*/CONFIG_DEBUG_MEMORY_INIT=n/' .config
# Désactiver les fonctionnalités de performance counter inutiles
sed -i 's/CONFIG_PERF_EVENTS_INTEL_RAPL=.*/CONFIG_PERF_EVENTS_INTEL_RAPL=n/' .config
sed -i 's/CONFIG_PERF_EVENTS_INTEL_UNCORE=.*/CONFIG_PERF_EVENTS_INTEL_UNCORE=n/' .config
sed -i 's/CONFIG_PERF_EVENTS_AMD_POWER=.*/CONFIG_PERF_EVENTS_AMD_POWER=n/' .config
# Désactiver les fonctionnalités de compatibilité supplémentaires
sed -i 's/CONFIG_COMPAT_OLD_SIGACTION=.*/CONFIG_COMPAT_OLD_SIGACTION=n/' .config
sed -i 's/CONFIG_IA32_AOUT=.*/CONFIG_IA32_AOUT=n/' .config
sed -i 's/CONFIG_X86_X32=.*/CONFIG_X86_X32=n/' .config
# Désactiver les fonctionnalités de sécurité redondantes
sed -i 's/CONFIG_SECURITY_DMESG_RESTRICT=.*/CONFIG_SECURITY_DMESG_RESTRICT=n/' .config
sed -i 's/CONFIG_SECURITY_PERF_EVENTS_RESTRICT=.*/CONFIG_SECURITY_PERF_EVENTS_RESTRICT=n/' .config
sed -i 's/CONFIG_SECURITY_NETWORK_XFRM=.*/CONFIG_SECURITY_NETWORK_XFRM=n/' .config
# Désactiver les fonctionnalités de débogage matériel
sed -i 's/CONFIG_EARLY_PRINTK=.*/CONFIG_EARLY_PRINTK=n/' .config
sed -i 's/CONFIG_EARLY_PRINTK_DBGP=.*/CONFIG_EARLY_PRINTK_DBGP=n/' .config
sed -i 's/CONFIG_DEBUG_RODATA_TEST=.*/CONFIG_DEBUG_RODATA_TEST=n/' .config
OPTIMISATIONS DE SECOND NIVEAU
# Désactiver le debug qui est encore activé
sed -i 's/CONFIG_DEBUG_FS=y/CONFIG_DEBUG_FS=n/' .config
sed -i 's/CONFIG_DEBUG_FS_ALLOW_ALL=y/CONFIG_DEBUG_FS_ALLOW_ALL=n/' .config
# Désactiver les fonctionnalités de monitoring non nécessaires
sed -i 's/CONFIG_PROC_PAGE_MONITOR=n/CONFIG_PROC_PAGE_MONITOR=n/' .config
sed -i 's/CONFIG_PROC_CHILDREN=n/CONFIG_PROC_CHILDREN=n/' .config
sed -i 's/CONFIG_PROC_PID_ARCH_STATUS=n/CONFIG_PROC_PID_ARCH_STATUS=n/' .config
sed -i 's/CONFIG_PROC_CPU_RESCTRL=n/CONFIG_PROC_CPU_RESCTRL=n/' .config
# Désactiver les fonctionnalités de débogage non nécessaires
sed -i 's/CONFIG_DYNAMIC_DEBUG_CORE=y/CONFIG_DYNAMIC_DEBUG_CORE=n/' .config
sed -i 's/CONFIG_MAGIC_SYSRQ=y/CONFIG_MAGIC_SYSRQ=n/' .config
sed -i 's/CONFIG_SLUB_DEBUG=y/CONFIG_SLUB_DEBUG=n/' .config
sed -i 's/CONFIG_DEBUG_WX=y/CONFIG_DEBUG_WX=n/' .config
sed -i 's/CONFIG_GENERIC_PTDUMP=y/CONFIG_GENERIC_PTDUMP=n/' .config
sed -i 's/CONFIG_PTDUMP_CORE=y/CONFIG_PTDUMP_CORE=n/' .config
# Désactiver les fonctionnalités de traçage non essentielles
sed -i 's/CONFIG_TRACING=y/CONFIG_TRACING=n/' .config
sed -i 's/CONFIG_EVENT_TRACING=y/CONFIG_EVENT_TRACING=n/' .config
sed -i 's/CONFIG_CONTEXT_SWITCH_TRACER=y/CONFIG_CONTEXT_SWITCH_TRACER=n/' .config
sed -i 's/CONFIG_UPROBE_EVENTS=y/CONFIG_UPROBE_EVENTS=n/' .config
sed -i 's/CONFIG_PROBE_EVENTS=y/CONFIG_PROBE_EVENTS=n/' .config
# Désactiver les fonctionnalités de monitoring non nécessaires
sed -i 's/CONFIG_THERMAL_STATISTICS=y/CONFIG_THERMAL_STATISTICS=n/' .config
sed -i 's/CONFIG_STACKTRACE=y/CONFIG_STACKTRACE=n/' .config
sed -i 's/CONFIG_LOCK_DEBUGGING_SUPPORT=y/CONFIG_LOCK_DEBUGGING_SUPPORT=n/' .config
# Désactiver les fonctionnalités graphiques inutiles
sed -i 's/CONFIG_FB=y/CONFIG_FB=n/' .config
sed -i 's/CONFIG_FRAMEBUFFER_CONSOLE=y/CONFIG_FRAMEBUFFER_CONSOLE=n/' .config
sed -i 's/CONFIG_VGA_CONSOLE=y/CONFIG_VGA_CONSOLE=n/' .config
# Désactiver les fonctionnalités de comptabilité non essentielles
sed -i 's/CONFIG_TASK_XACCT=y/CONFIG_TASK_XACCT=n/' .config
sed -i 's/CONFIG_TASK_IO_ACCOUNTING=y/CONFIG_TASK_IO_ACCOUNTING=n/' .config
# Désactiver les fonctionnalités d'hibernation non nécessaires
sed -i 's/CONFIG_HIBERNATION=y/CONFIG_HIBERNATION=n/' .config
sed -i 's/CONFIG_PM_STD_PARTITION=""/CONFIG_PM_STD_PARTITION=n/' .config
# Désactiver les fonctionnalités de débogage matériel
sed -i 's/CONFIG_HARDLOCKUP_DETECTOR=y/CONFIG_HARDLOCKUP_DETECTOR=n/' .config
sed -i 's/CONFIG_SOFTLOCKUP_DETECTOR=y/CONFIG_SOFTLOCKUP_DETECTOR=n/' .config
# Désactiver les fonctionnalités ACPI non nécessaires
sed -i 's/CONFIG_ACPI_BUTTON=y/CONFIG_ACPI_BUTTON=n/' .config
sed -i 's/CONFIG_ACPI_THERMAL=y/CONFIG_ACPI_THERMAL=n/' .config
sed -i 's/CONFIG_ACPI_EXTLOG=y/CONFIG_ACPI_EXTLOG=n/' .config
sed -i 's/CONFIG_ACPI_ADXL=y/CONFIG_ACPI_ADXL=n/' .config
# Désactiver les fonctionnalités d'entrée inutiles
sed -i 's/CONFIG_INPUT_MISC=y/CONFIG_INPUT_MISC=n/' .config
sed -i 's/CONFIG_INPUT_PCSPKR=y/CONFIG_INPUT_PCSPKR=n/' .config
sed -i 's/CONFIG_SERIO=y/CONFIG_SERIO=n/' .config
sed -i 's/CONFIG_SERIO_I8042=y/CONFIG_SERIO_I8042=n/' .config
sed -i 's/CONFIG_SERIO_LIBPS2=y/CONFIG_SERIO_LIBPS2=n/' .config
sed -i 's/CONFIG_SERIO_RAW=y/CONFIG_SERIO_RAW=n/' .config
# Désactiver les fonctionnalités LED non essentielles
sed -i 's/CONFIG_LEDS_TRIGGER_DISK=y/CONFIG_LEDS_TRIGGER_DISK=n/' .config
sed -i 's/CONFIG_LEDS_TRIGGER_CPU=y/CONFIG_LEDS_TRIGGER_CPU=n/' .config
sed -i 's/CONFIG_LEDS_TRIGGER_PANIC=y/CONFIG_LEDS_TRIGGER_PANIC=n/' .config
# Désactiver les fonctionnalités de surveillance thermique superflues
sed -i 's/CONFIG_THERMAL_WRITABLE_TRIPS=y/CONFIG_THERMAL_WRITABLE_TRIPS=n/' .config
sed -i 's/CONFIG_THERMAL_GOV_FAIR_SHARE=y/CONFIG_THERMAL_GOV_FAIR_SHARE=n/' .config
sed -i 's/CONFIG_THERMAL_GOV_BANG_BANG=y/CONFIG_THERMAL_GOV_BANG_BANG=n/' .config
sed -i 's/CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y/CONFIG_THERMAL_GOV_POWER_ALLOCATOR=n/' .config
# Désactiver les fonctionnalités USB non nécessaires
sed -i 's/CONFIG_USB_DEFAULT_PERSIST=y/CONFIG_USB_DEFAULT_PERSIST=n/' .config
sed -i 's/CONFIG_USB_DYNAMIC_MINORS=y/CONFIG_USB_DYNAMIC_MINORS=n/' .config
# Désactiver les fonctionnalités RTC superflues
sed -i 's/CONFIG_RTC_NVMEM=y/CONFIG_RTC_NVMEM=n/' .config
sed -i 's/CONFIG_RTC_INTF_DEV=y/CONFIG_RTC_INTF_DEV=n/' .config
# Désactiver les fonctionnalités de performance non essentielles
sed -i 's/CONFIG_KALLSYMS_ALL=y/CONFIG_KALLSYMS_ALL=n/' .config
sed -i 's/CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y/CONFIG_KALLSYMS_ABSOLUTE_PERCPU=n/' .config
# Désactiver les fonctionnalités de comptabilité système superflues
sed -i 's/CONFIG_BSD_PROCESS_ACCT=y/CONFIG_BSD_PROCESS_ACCT=n/' .config
sed -i 's/CONFIG_BSD_PROCESS_ACCT_V3=y/CONFIG_BSD_PROCESS_ACCT_V3=n/' .config
sed -i 's/CONFIG_TASKSTATS=y/CONFIG_TASKSTATS=n/' .config
sed -i 's/CONFIG_TASK_DELAY_ACCT=y/CONFIG_TASK_DELAY_ACCT=n/' .config
# Désactiver les fonctionnalités de débogage mémoire supplémentaires
sed -i 's/CONFIG_MEMORY_FAILURE=y/CONFIG_MEMORY_FAILURE=n/' .config
sed -i 's/CONFIG_USERFAULTFD=y/CONFIG_USERFAULTFD=n/' .config
# Désactiver les fonctionnalités de virtualisation non utilisées
sed -i 's/CONFIG_VHOST_MENU=y/CONFIG_VHOST_MENU=n/' .config
# Désactiver les fonctionnalités de surveillance système non essentielles
sed -i 's/CONFIG_ENERGY_MODEL=y/CONFIG_ENERGY_MODEL=n/' .config
sed -i 's/CONFIG_POWERCAP=y/CONFIG_POWERCAP=n/' .config
# Désactiver les fonctionnalités de cryptographie non essentielles
sed -i 's/CONFIG_CRYPTO_MD5=y/CONFIG_CRYPTO_MD5=n/' .config
sed -i 's/CONFIG_CRYPTO_CRC64_ROCKSOFT=y/CONFIG_CRYPTO_CRC64_ROCKSOFT=n/' .config
sed -i 's/CONFIG_CRYPTO_BLAKE2S_X86=y/CONFIG_CRYPTO_BLAKE2S_X86=n/' .config
sed -i 's/CONFIG_CRYPTO_CRCT10DIF=y/CONFIG_CRYPTO_CRCT10DIF=n/' .config
# Désactiver les fonctionnalités de compression non utilisées
sed -i 's/CONFIG_DECOMPRESS_BZIP2=y/CONFIG_DECOMPRESS_BZIP2=n/' .config
sed -i 's/CONFIG_DECOMPRESS_LZO=y/CONFIG_DECOMPRESS_LZO=n/' .config
sed -i 's/CONFIG_DECOMPRESS_LZ4=y/CONFIG_DECOMPRESS_LZ4=n/' .config
sed -i 's/CONFIG_DECOMPRESS_ZSTD=y/CONFIG_DECOMPRESS_ZSTD=n/' .config
# Désactiver les fonctionnalités de polices non nécessaires
sed -i 's/CONFIG_FONTS=y/CONFIG_FONTS=n/' .config
sed -i 's/CONFIG_FONT_8x8=y/CONFIG_FONT_8x8=n/' .config
sed -i 's/CONFIG_FONT_8x16=y/CONFIG_FONT_8x16=n/' .config
sed -i 's/CONFIG_FONT_TER16x32=y/CONFIG_FONT_TER16x32=n/' .config
# Désactiver les fonctionnalités réseau non essentielles
sed -i 's/CONFIG_IP_MROUTE=y/CONFIG_IP_MROUTE=n/' .config
sed -i 's/CONFIG_IP_PIMSM_V1=y/CONFIG_IP_PIMSM_V1=n/' .config
sed -i 's/CONFIG_IP_PIMSM_V2=y/CONFIG_IP_PIMSM_V2=n/' .config
sed -i 's/CONFIG_IPV6_MROUTE=y/CONFIG_IPV6_MROUTE=n/' .config
sed -i 's/CONFIG_IPV6_PIMSM_V2=y/CONFIG_IPV6_PIMSM_V2=n/' .config
sed -i 's/CONFIG_NET_FC=y/CONFIG_NET_FC=n/' .config
sed -i 's/CONFIG_NETLABEL=y/CONFIG_NETLABEL=n/' .config
# Désactiver les fonctionnalités de bus non utilisées
sed -i 's/CONFIG_PCIEPORTBUS=y/CONFIG_PCIEPORTBUS=n/' .config
sed -i 's/CONFIG_PCIE_PME=y/CONFIG_PCIE_PME=n/' .config
sed -i 's/CONFIG_PCIE_DPC=y/CONFIG_PCIE_DPC=n/' .config
sed -i 's/CONFIG_PCIE_PTM=y/CONFIG_PCIE_PTM=n/' .config
# Désactiver les fonctionnalités de gestion d'énergie superflues
sed -i 's/CONFIG_CPU_FREQ_STAT=y/CONFIG_CPU_FREQ_STAT=n/' .config
sed -i 's/CONFIG_CPU_IDLE_GOV_LADDER=y/CONFIG_CPU_IDLE_GOV_LADDER=n/' .config
sed -i 's/CONFIG_INTEL_IDLE=y/CONFIG_INTEL_IDLE=n/' .config
# Désactiver les fonctionnalités de stockage non utilisées
sed -i 's/CONFIG_BLK_DEV_INTEGRITY_T10=y/CONFIG_BLK_DEV_INTEGRITY_T10=n/' .config
sed -i 's/CONFIG_BLK_DEV_ZONED=y/CONFIG_BLK_DEV_ZONED=n/' .config
sed -i 's/CONFIG_BLK_WBT=y/CONFIG_BLK_WBT=n/' .config
sed -i 's/CONFIG_BLK_SED_OPAL=y/CONFIG_BLK_SED_OPAL=n/' .config
# Désactiver les fonctionnalités de sécurité redondantes
sed -i 's/CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y/CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=n/' .config
sed -i 's/CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y/CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=n/' .config
sed -i 's/CONFIG_EVM_ATTR_FSUUID=y/CONFIG_EVM_ATTR_FSUUID=n/' .config
# Désactiver les fonctionnalités de virtualisation non utilisées
sed -i 's/CONFIG_XEN_512GB=y/CONFIG_XEN_512GB=n/' .config
sed -i 's/CONFIG_XEN_SAVE_RESTORE=y/CONFIG_XEN_SAVE_RESTORE=n/' .config
# Désactiver les fonctionnalités de débogage matériel
sed -i 's/CONFIG_EDAC_SKX=y/CONFIG_EDAC_SKX=n/' .config
sed -i 's/CONFIG_EDAC_I10NM=y/CONFIG_EDAC_I10NM=n/' .config
# Désactiver les fonctionnalités de gestion de la mémoire non essentielles
sed -i 's/CONFIG_MEMORY_ISOLATION=y/CONFIG_MEMORY_ISOLATION=n/' .config
sed -i 's/CONFIG_HUGETLBFS=y/CONFIG_HUGETLBFS=n/' .config
sed -i 's/CONFIG_TRANSPARENT_HUGEPAGE=y/CONFIG_TRANSPARENT_HUGEPAGE=n/' .config
# Désactiver les fonctionnalités de périphériques non utilisées
sed -i 's/CONFIG_MACINTOSH_DRIVERS=y/CONFIG_MACINTOSH_DRIVERS=n/' .config
sed -i 's/CONFIG_MAC_EMUMOUSEBTN=y/CONFIG_MAC_EMUMOUSEBTN=n/' .config
sed -i 's/CONFIG_CHROME_PLATFORMS=y/CONFIG_CHROME_PLATFORMS=n/' .config
sed -i 's/CONFIG_SURFACE_PLATFORMS=y/CONFIG_SURFACE_PLATFORMS=n/' .config
# Désactiver les fonctionnalités de bus supplémentaires
sed -i 's/CONFIG_SSB_POSSIBLE=y/CONFIG_SSB_POSSIBLE=n/' .config
sed -i 's/CONFIG_BCMA_POSSIBLE=y/CONFIG_BCMA_POSSIBLE=n/' .config
# Désactiver les fonctionnalités de pin control non nécessaires
sed -i 's/CONFIG_PINCTRL_CEDARFORK=y/CONFIG_PINCTRL_CEDARFORK=n/' .config
sed -i 's/CONFIG_PINCTRL_LEWISBURG=y/CONFIG_PINCTRL_LEWISBURG=n/' .config
sed -i 's/CONFIG_PINCTRL_SUNRISEPOINT=y/CONFIG_PINCTRL_SUNRISEPOINT=n/' .config
sed -i 's/CONFIG_PINCTRL_TIGERLAKE=y/CONFIG_PINCTRL_TIGERLAKE=n/' .config
# Désactiver les fonctionnalités GPIO superflues
sed -i 's/CONFIG_GPIO_SYSFS=y/CONFIG_GPIO_SYSFS=n/' .config
sed -i 's/CONFIG_GPIO_CDEV=y/CONFIG_GPIO_CDEV=n/' .config
sed -i 's/CONFIG_GPIO_CDEV_V1=y/CONFIG_GPIO_CDEV_V1=n/' .config
# Désactiver les fonctionnalités de gestion d'alimentation non essentielles
sed -i 's/CONFIG_POWER_SUPPLY=y/CONFIG_POWER_SUPPLY=n/' .config
sed -i 's/CONFIG_POWER_SUPPLY_HWMON=y/CONFIG_POWER_SUPPLY_HWMON=n/' .config
# Désactiver les fonctionnalités d'horloge non nécessaires
sed -i 's/CONFIG_HPET_EMULATE_RTC=y/CONFIG_HPET_EMULATE_RTC=n/' .config
sed -i 's/CONFIG_CLKEVT_I8253=y/CONFIG_CLKEVT_I8253=n/' .config
# Désactiver les fonctionnalités de stockage supplémentaires
sed -i 's/CONFIG_BLK_DEV_FD=y/CONFIG_BLK_DEV_FD=n/' .config
sed -i 's/CONFIG_BLK_DEV_SR=y/CONFIG_BLK_DEV_SR=n/' .config
sed -i 's/CONFIG_CDROM=y/CONFIG_CDROM=n/' .config
# Désactiver les fonctionnalités de virtualisation supplémentaires
sed -i 's/CONFIG_VMGENID=y/CONFIG_VMGENID=n/' .config
sed -i 's/CONFIG_VIRTIO_CONSOLE=y/CONFIG_VIRTIO_CONSOLE=n/' .config
# Désactiver les fonctionnalités ACPI supplémentaires
sed -i 's/CONFIG_ACPI_SPCR_TABLE=y/CONFIG_ACPI_SPCR_TABLE=n/' .config
sed -i 's/CONFIG_ACPI_LPIT=y/CONFIG_ACPI_LPIT=n/' .config
sed -i 's/CONFIG_ACPI_PRMT=y/CONFIG_ACPI_PRMT=n/' .config
# Désactiver les fonctionnalités de performance supplémentaires
sed -i 's/CONFIG_SCHED_MC_PRIO=y/CONFIG_SCHED_MC_PRIO=n/' .config
sed -i 's/CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y/CONFIG_CPU_FREQ_GOV_SCHEDUTIL=n/' .config
# Désactiver les fonctionnalités réseau supplémentaires
sed -i 's/CONFIG_NET_EMATCH=y/CONFIG_NET_EMATCH=n/' .config
sed -i 's/CONFIG_DCB=y/CONFIG_DCB=n/' .config
sed -i 's/CONFIG_MPLS=y/CONFIG_MPLS=n/' .config
sed -i 's/CONFIG_NET_SWITCHDEV=y/CONFIG_NET_SWITCHDEV=n/' .config
# Désactiver les fonctionnalités de sécurité redondantes
sed -i 's/CONFIG_SECURITY_YAMA=y/CONFIG_SECURITY_YAMA=n/' .config
sed -i 's/CONFIG_SECURITY_LANDLOCK=y/CONFIG_SECURITY_LANDLOCK=n/' .config
# Désactiver les fonctionnalités de débogage supplémentaires
sed -i 's/CONFIG_BLK_DEBUG_FS=y/CONFIG_BLK_DEBUG_FS=n/' .config
sed -i 's/CONFIG_BLK_DEBUG_FS_ZONED=y/CONFIG_BLK_DEBUG_FS_ZONED=n/' .config
# Désactiver les fonctionnalités de surveillance système supplémentaires
sed -i 's/CONFIG_THERMAL_NETLINK=y/CONFIG_THERMAL_NETLINK=n/' .config
sed -i 's/CONFIG_HWMON=y/CONFIG_HWMON=n/' .config
BUILD DU NOUVEAU NOYAU ET INSTALLATION
Validation de la configuration
make olddefconfig
Procéder à la compilation
make -j$(nproc) bindeb-pkg
Installer le nouveau noyau et updater le grub
cd ..
dpkg -i linux-image-*.deb linux-headers-*.deb
update-grub
reboot
Connaître le poids du nouveau noyau et des modules
Additionner les poids des fichiers trouvés :
ls -lh /boot/vmlinuz-$(uname -r)
ls -lh /boot/initrd.img-$(uname -r)
du -sh /lib/modules/$(uname -r)
Ici : 20,40 Mo ! ça commence à devenir intéressant non ?
ACCELERER LE DEMARRAGE A MORT
Optimisations du grub
Abaissement du niveau de logs lors du démarrage :
sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/' /etc/default/grub
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=0 splash"/' /etc/default/grub
update-grub
Supprimer les messages au démarrage
sed -i 's/#LogLevel=info/LogLevel=emerg/' /etc/systemd/system.conf
sed -i 's/#ShowStatus=yes/ShowStatus=no/' /etc/systemd/system.conf
Supprimer le message de log Debian
Et le remplacer par ce que vous voulez :
cp /etc/issue /etc/issue.BAK
echo "Bienvenue sur ce serveur sécurisé" > /etc/issue
printf "\n" >> /etc/issue
Désactiver l'accès console physique
ATTENTION ICI : Supprimer tout affichage du hostname et du login au démarrage (impossible de s'authentifier via la console proposée par l'hébergeur. Uniquement via SSH)
Il s'agît d'une sécurité importante pour une VM hébergée ! Désactiver l'accès à une console physique !
mkdir -p /etc/systemd/system/getty@tty1.service.d/
cat > /etc/systemd/system/getty@tty1.service.d/override.conf << EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --noclear --skip-hostname %I \$TERM
EOF
systemctl daemon-reload
systemctl restart getty@tty1
Désactiver les services non nécessaires
Lister d'abord les services :
systemctl list-unit-files --state=enabled
Désactiver les services inutiles habituels :
systemctl disable bluetooth.service
systemctl disable wpa_supplicant.service
systemctl disable apt-daily.timer
systemctl disable apt-daily-upgrade.timer
systemctl disable man-db.timer
systemctl disable dpkg-db-backup.timer
systemctl disable e2scrub_all.timer
systemctl disable fstrim.timer
systemctl disable anacron.service
systemctl disable anacron.timer
systemctl disable console-setup.service
systemctl disable keyboard-setup.service
Désactiver les services de journalisation non essentiels :
systemctl disable systemd-journal-flush.service
Désactiver IPv6 si non utilisé
echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf
update-initramfs -u
Nettoyer les fichiers temporaires et redémarrer
rm -rf /tmp/* ; rm -rf /var/tmp/*
reboot
NETTOYAGE : supprimer les précédents noyaux
Vérifier quel noyau est actuellement utilisé
Pour ne pas le supprimer :
uname -r
Lister tous les noyaux installés
dpkg --list | grep linux-image
Supprimer les anciens noyaux automatiquement
apt autoremove --purge
Suppression manuelle si nécessaire
Si certains noyaux restent, les supprimer manuellement :
apt remove --purge linux-image-6.1.0-26-amd64 -y
apt remove --purge linux-image-6.1.112-dbg -y
apt remove --purge linux-image-6.1.0-10-amd64 -y
apt remove --purge linux-image-6.1.0-25-amd64 -y
Nettoyer les fichiers résiduels
apt autoclean -y
apt clean -y
apt-get purge build-essential libncurses-dev bison flex libssl-dev libelf-dev git -y
apt purge build-essential bc kmod cpio flex libncurses5-dev libelf-dev libssl-dev dwarves bison -y
Mettre à jour GRUB et vérifier
update-grub
# Vérifier qu'il ne reste plus que le noyau actuel
dpkg --list | grep linux-image
# Redémarrer
reboot
Faire les maj et nettoyer encore
apt update
apt upgrade -y
apt autoremove -y
apt autoclean -y
apt clean -y
apt upgrade -y
DERNIERE ETAPE : Réaliser des benchmark du système APRES optimisation et comparer !
Résultats des benchmarks APRÈS optimisation
Bench no.1
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2046.56 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 8502.09 reads/sec
| I/O Sequential Read : 132.85 MiB/sec
| I/O Sequential Write : 88.56 MiB/sec
|-----------------------------------------------------
| Note globale : 78.662800 %
-----------------------------------------------------
Bench no.2
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2041.26 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 9066.11 reads/sec
| I/O Sequential Read : 141.66 MiB/sec
| I/O Sequential Write : 94.44 MiB/sec
|-----------------------------------------------------
| Note globale : 80.484220 %
-----------------------------------------------------
Bench no.3
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2051.45 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 8838.76 reads/sec
| I/O Sequential Read : 138.11 MiB/sec
| I/O Sequential Write : 92.07 MiB/sec
|-----------------------------------------------------
| Note globale : 79.750100 %
-----------------------------------------------------
Bench no.4
-----------------------------------------------------
| Résultats du benchmark système |
-----------------------------------------------------
| CPU : 2031.20 events/sec
| Mémoire : 102400.00 MiB/sec
| I/O Random R/W : 8317.11 reads/sec
| I/O Sequential Read : 129.95 MiB/sec
| I/O Sequential Write : 86.64 MiB/sec
|-----------------------------------------------------
| Note globale : 78.065480 %
-----------------------------------------------------
Moyenne des nouveaux benchmarks
CPU : 2042.62 events/sec
Mémoire : 102400.00 MiB/sec
I/O Random R/W : 8681.02 reads/sec
I/O Sequential Read : 135.64 MiB/sec
I/O Sequential Write : 90.43 MiB/sec
Note globale : 79.24 %
Moyenne des benchmarks AVANT optimisation (pour rappel)
CPU : 2032.78 events/sec
Mémoire : 102063.84 MiB/sec
I/O Random R/W : 6515.88 reads/sec
I/O Sequential Read : 101.81 MiB/sec
I/O Sequential Write : 67.87 MiB/sec
Note globale : 72.08 %
Comparatif entre les benchmarks AVANT et APRÈS optimisation
CPU : +0,48 %
Mémoire : +0,33 %
I/O Random R/W : +33,23 %
I/O Sequential Read : +33,23 %
I/O Sequential Write : +33,24 %
Note globale : +9,94 %
Les améliorations CPU et mémoire sont faibles, mais les différences en ce qui concerne les opérations IO sont absolument phénoménales.
Notre optimisation est bien plus performante que l'image originale.
Aller plus loin (juste un peu) !
Optimiser encore plus les I/O
Ajouter à /etc/sysctl.conf :
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.sched_migration_cost_ns=5000000
kernel.sched_autogroup_enabled=0
Changer les limites de ressources
Dans /etc/security/limits.conf :
* soft nofile 65535
* hard nofile 65535
Créer un fichier swap
Il n'y a pas de swap dans les images debian sur Kamatera...
Mieux vaut en créer un, même basique (simple fichier !). Libre à vous de faire une nouvelle partition dédiée.
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Conclusion
Félicitations ! Vous avez réussi à optimiser votre noyau Debian et à améliorer significativement les performances de votre serveur, en particulier pour les opérations I/O avec une amélioration de plus de 33%.
Le poids du noyau est passé de 440 Mo à environ 20 Mo, et la note globale de performance a augmenté de près de 10%.
↑ Haut de page