# Compilation de kernel pour serveur Debian avec processeur Intel

Récupération, décompression des sources du Kernel linux sur kernel.org, optimisation des réglages pour utilisation dans une VM ou en serveur.

## Prérequis

- (Hyperviseur Proxmox)
- Machine hôte avec processeur Intel
- Système d’exploitation sous Debian
- Disposer du fichier de configuration noyeau de type Cloud

## Usage

```bash
sudo bash kernel.sh [branch] [version] [compile]
```

- branch : la branche majeur du kernel
- version : la version du kernel à utiliser
- compile : **optionnel**, utilisé pour passer la récupération des sources et leur décompression

Exemple :

```bash
sudo bash kernel.sh 6.x 6.14.3
```

## Résultats

- linux-headers-6.14.3-secure-clang-amd64_6.14.3-1_amd64.deb: 8.6 Mo
- linux-image-6.14.3-secure-clang-amd64-dbg_6.14.3-1_amd64.deb: 192 Mo
- linux-image-6.14.3-secure-clang-amd64_6.14.3-1_amd64.deb: 53 Mo
- linux-libc-dev_6.14.3-1_amd64.deb: 1.3 Mo

## TODO

- ~~voir s'il est possible d'optimiser encore plus les disable/enable en restant stable~~
- ~~trouver comment rendre compatible le kernel pour une VM avec drivers Nvidia~~
- ajouter le test de la signature du kernel après téléchargement

## CHANGELOG

### 2025-04-29

- try to enable 'kernel.sched_migration_cost_ns'

### 2025-04-24

- split 'debug' options in speparate file
- validated 'bare-metal' disabled options

### 2025-04-22

- try to find 'disable options' for a bare-metal kernel

### 2025-04-19

- Kernel 6.14.2 stable en bare metal Debian + NVIDIA

### 2025-04-15

- Kernel: 6.14.2
- Corrections, updates and improved error handling

### 2025-04-12

- Kernel: 6.14.1
- Correct for NVIDIA dkms driver support

### 2025-04-10

- Kernel: 6.14.1
- Cloud config: 6.12.21

### 2024-05-16

- 'NOP'

### 2024-05-07

- Ajout de CONFIG_MULTIUSER, CONFIG_TASKSTATS et CONFIG_TASK_XACCT pour Victoria Metrics

### 2024-05-06

- Ajout de CONFIG_TASK_IO_ACCOUNTING pour Victoria Metrics

### 2024-04-29

- Corrections bug de copier/coller (manque d'appel de doDownload & doUncompress)
- Suppression du paramètre STEPS
- Ajout du paramètre TARGET (afin de spécifier une distribution cible, ex: debian)
- Cibles de compilation: debian, ubuntu
- Corrections pour la compilation à destination d'Ubuntu

### 2024-04-26

- Gestion des versions du kernel
- Tag dans le nom du kernel définissant sécurisé/non sécurisé

### 2024-04-19

- Ajustements de la configuration RCU
- Ajustement des options de sécurité

### 2024-04-09

- Mise en place de dossiers spécifiques _(configs, options, patches)_
- Renommage de 'more uarch' et 'cloud-amd64'
- Déplacement des options dans des fichiers spécifiques _(lisibilité du code et maintenance)_
- Corrections cosmétiques _(indentations, espaces...)_

### 2024-03-20

- Suppression du 'Fast Kernel Headers' _(provoque de nombreuses erreurs de compilation)_
- Corrections de flags _(empêchant notamement l'exécution de dmesg)_
- Corrections de chemins

### 2024-03-19

- Corrections mineures
- Déplacement du dépôt
- Modification du répertoire de contruction (build)

### 2024-03-16

- Mise à jour Kernel 6.8.1
- Utilisation par défaut de Clang (fonctionnel y compris pour Nvidia)
- Désactication des mitigations par défaut

### 2024-03-11

- Mise à jour Kernel 6.8
- Mise à jour de la configuration du patch 'more uarch' (6.8-rc4+)

### 2024-03-02

- Modularisation des options par variable de conditionnement
- Ajout du 'Fast Kernel Headers' _(désactivé pour le moment)_
- Ajustment des options permettant l'installation de pilote Nvidia
- IPv6 remis (sinon certains conteneurs déconnent)

### 2024-02-23

- Correction de problèmes de configuration produisant un kernel défaillant

### 2024-02-22

- Mise à jour de la configuration du patch 'more uarch' (6.1.79-6.8-rc3)
- Compilation en modules par défaut

### 2024-02-10

- Mise à jour de la configuration cloud du kernel (config-cloud-amd64 v6.6.9)
- Retour au compilateur GCC par défaut (compatibilité)
- Correction de bugs liés aux **\_ACL** et **\_XATTR** (réactivation des options)
- Intégration des _crypto_ dans le kernel

### 2024-01-07

- Mise à jour de la configuration cloud du kernel (config-cloud-amd64 v6.5.13)
- Mise à jour du patch pour ajouter des configurations processeurs (more-uarches-for-kernel.patch)
- Mise à jour et optimisation du script (kernel.sh)
- Passage de GCC à CLang pour les compilations

### 2023-11-30

- Amélioration des sélections dans les options (enable/disable)
- Ajout d'un flag TESTING conditionnant l'appel de la fonction doDefaultsTesting _(pour tester d'autres options...)_

### 2023-11-24

- Correction de bugs liés aux disable/enable _(options du .config)_
- Test ok avec v6.6.1 et v6.6.2 du kernel sur VM Debian sous Proxmox

### 2023-11-22

- Commit initial