Skip to content

Instantly share code, notes, and snippets.

@valorisa
Last active March 9, 2025 19:47
Show Gist options
  • Save valorisa/0e555caf7c351c6cdcef2584e6030604 to your computer and use it in GitHub Desktop.
Save valorisa/0e555caf7c351c6cdcef2584e6030604 to your computer and use it in GitHub Desktop.
Memo_build_kernel_WSL2.md

Récapitulatif des commandes que vous devrez saisir pour construire un noyau WSL2, créer un fichier VHDX contenant les modules, et configurer le fichier .wslconfig pour utiliser ce noyau personnalisé.

Étapes pour Construire le Noyau WSL2

  1. Cloner le Dépôt du Noyau WSL2 :

    git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
    cd WSL2-Linux-Kernel
  2. Installer les Dépendances de Construction :

    sudo apt update
    sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils
  3. Modifier les Configurations du Noyau (Optionnel) :

    make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
  4. Construire le Noyau et Installer les Modules :

    make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl && make INSTALL_MOD_PATH="$PWD/modules" modules_install
  5. Créer un VHDX pour les Modules :

    sudo ./Microsoft/scripts/gen_modules_vhdx.sh "$PWD/modules" modules.vhdx
  6. Nettoyer les Artéfacts de Compilation (Optionnel) :

    make clean && rm -r "$PWD/modules"

Étapes pour Créer Manuellement le VHDX (Optionnel)

Si vous préférez créer le VHDX manuellement, voici les commandes :

  1. Calculer la Taille des Modules en octets et afficher leur taille en Mo :
    modules_size=$(du -s "$PWD/modules" | awk '{print $1;}')
    modules_size=$((modules_size * 1024 + 1024))
    echo "Taille des modules : $modules_size_mb Mo"

1.1. Conversion de la talle en mégaoctets

modules_size_mb=$((modules_size / 1024 / 1024))
  1. Créer un Fichier d'Image Vide avec une jauge de progression :

    dd if=/dev/zero of="$PWD/modules.img" bs=100M count=$((modules_size / (100 * 1024 * 1024) + 1)) status=progress
  2. Configurer le Système de Fichiers et Monter le Fichier d'Image :

    lo_dev=$(sudo losetup --find --show "$PWD/modules.img")
    sudo mkfs -t ext4 "$lo_dev"
    mkdir -p "$PWD/modules_img"
    sudo mount "$lo_dev" "$PWD/modules_img"
  3. Copier les Modules dans l'Image Montée :

    sudo cp -r "$PWD/modules" "$PWD/modules_img"
  4. Démonter l'Image :

    sudo umount "$PWD/modules_img"
  5. Convertir l'Image en VHDX :

    qemu-img convert -O VHDX "$PWD/modules.img" "$PWD/modules.vhdx"
  6. Nettoyer (Optionnel) :

    rm modules.img
    # Optionnel : supprimer le répertoire des modules
    # rm -r "$PWD/modules"

Configuration du Fichier .wslconfig

  1. Créer ou Modifier le Fichier .wslconfig : Ouvrez ou créez le fichier .wslconfig dans votre répertoire utilisateur Windows (par exemple, C:\Users\VotreNomUtilisateur\.wslconfig) et ajoutez le contenu suivant :

    [wsl2]
    kernel=C:\\Users\\VotreNomUtilisateur\\path\\to\\WSL2-Linux-Kernel\\arch\\x86\\boot\\bzImage

    Remplacez C:\\Users\\VotreNomUtilisateur\\path\\to\\WSL2-Linux-Kernel\\arch\\x86\\boot\\bzImage par le chemin correct vers le noyau que vous avez construit.

Conclusion

Ces commandes vous guideront à travers le processus de construction d'un noyau WSL2, de création d'un fichier VHDX pour les modules, et de configuration de votre environnement pour utiliser ce noyau personnalisé. Si vous avez des questions ou avez besoin d'aide supplémentaire, n'hésitez pas à demander !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment