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

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://tssr.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

Processeur

Mémoire

Stockage

Réseau

Autres périphériques

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

Optimiser la configuration pour intégrer directement les pilotes dans le noyau

make localyesconfig

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%.


⬆️ Retour en haut de la page