Skip to content

Build and Release WSL2 Kernel #4

Build and Release WSL2 Kernel

Build and Release WSL2 Kernel #4

Workflow file for this run

name: Build WSL2 Kernel
on:
workflow_dispatch:
inputs:
kernel_version:
description: "WSL2 kernel version (e.g. 5.15.150.1)"
required: true
default: "5.15.150.1"
extra_config:
description: "Extra kernel config options (e.g. CONFIG_USB_VIDEO_CLASS=y)"
required: false
default: ""
env:
ARTIFACT_NAME: wsl2-kernel
jobs:
build:
runs-on: ubuntu-latest
env:
ARTIFACT_NAME: wsl2-kernel
KERNEL_DIR: linux-${{ github.event.inputs.kernel_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up build environment
run: |
sudo apt-get update
sudo apt-get install -y build-essential flex bison dwarves libssl-dev libelf-dev libncurses-dev
- name: Download kernel source
run: |
mkdir kernel
cd kernel
wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-${{ github.event.inputs.kernel_version }}.tar.gz
tar -xzf linux-msft-wsl-${{ github.event.inputs.kernel_version }}.tar.gz
mv WSL2-Linux-Kernel-linux-msft-wsl-${{ github.event.inputs.kernel_version}} linux-${{ github.event.inputs.kernel_version }}
echo "KERNEL_SRC=$(pwd)/linux-${{ github.event.inputs.kernel_version }}" >> $GITHUB_ENV
- name: Configure kernel
run: |
cd $KERNEL_SRC
cp Microsoft/config-wsl .config
# Apply extra config if provided
if [ -n "${{ github.event.inputs.extra_config }}" ]; then
echo "${{ github.event.inputs.extra_config }}" >> .config
fi
make olddefconfig
- name: Build kernel
run: |
cd ${{ env.KERNEL_DIR }}
make -j$(nproc)
- name: Verify bzImage exists
run: |
ls -lh ${{ env.KERNEL_DIR }}/arch/x86/boot/bzImage || echo "Error: bzImage not found!"
- name: Package artifact
run: |
mkdir -p ${{ env.ARTIFACT_NAME }}
cp ${{ env.KERNEL_DIR }}/arch/x86/boot/bzImage ${{ env.ARTIFACT_NAME }}/
cp ${{ env.KERNEL_DIR }}/.config ${{ env.ARTIFACT_NAME }}/
echo "Version: ${{ github.event.inputs.kernel_version }}" > ${{ env.ARTIFACT_NAME }}/info.txt
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}-${{ github.event.inputs.kernel_version }}
path: ${{ env.ARTIFACT_NAME }}