Stable Release Build linux-wsl-stable-6.10.9 #104
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Stable Kernel CI | |
on: | |
push: | |
tags: | |
- 'linux-wsl-stable-6.10.[0-9]+' | |
run-name: Stable Release Build ${{ github.ref_name }} | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: nevuly/nevuly-dev-base:arch | |
outputs: | |
X86_IMAGE_SHA: ${{ steps.gen-sha-256.outputs.X86_IMAGE_SHA }} | |
X86_MODULE_SHA: ${{ steps.gen-sha-256.outputs.X86_MODULE_SHA }} | |
X86_OPTIONAL_SHA: ${{ steps.gen-sha-256.outputs.X86_OPTIONAL_SHA }} | |
ARM64_IMAGE_SHA: ${{ steps.gen-sha-256.outputs.ARM64_IMAGE_SHA }} | |
ARM64_MODULE_SHA: ${{ steps.gen-sha-256.outputs.ARM64_MODULE_SHA }} | |
ARM64_OPTIONAL_SHA: ${{ steps.gen-sha-256.outputs.ARM64_OPTIONAL_SHA }} | |
strategy: | |
matrix: | |
include: | |
- arch: x86 | |
image-name: bzImage-x86_64 | |
- arch: arm64 | |
image-name: Image-arm64 | |
steps: | |
- name: Trust this directory | |
run: git config --global --add safe.directory /__w/WSL2-Linux-Kernel-Rolling/WSL2-Linux-Kernel-Rolling | |
- uses: actions/checkout@main | |
- name: Download WSL2 stable kernel | |
run: | | |
git clone https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling.git --depth 1 -b ${{ github.ref_name }} linux | |
- name: Build WSL2 stable kernel | |
run: | | |
cd linux | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
make KCONFIG_CONFIG=arch/x86/configs/config-wsl-x86 -j$(echo `nproc` + 1 | bc) | |
cp arch/x86/boot/bzImage ../${{ matrix.image-name }} | |
else | |
export ARCH=arm64 && export CROSS_COMPILE=aarch64-linux-gnu- | |
make KCONFIG_CONFIG=arch/arm64/configs/config-wsl-arm64 -j$(echo `nproc` + 1 | bc) | |
cp arch/arm64/boot/Image ../${{ matrix.image-name }} | |
fi | |
echo "Done" | |
- name: Generate kernel modules package | |
run: | | |
echo "Check kernel version" | |
IFS=- read -r var1 var2 var3 version <<< ${{ github.ref_name }} | |
echo "Kernel verison: $version" | |
cd linux | |
echo "Download kernel modules package installer script" | |
wget https://gist.githubusercontent.com/Nevuly/cf1d17db72cdfde6ed149461eef0215c/raw/a6144e829a9cb00066d0dabe4434397c6a4d5466/modules-install.sh | |
chmod 775 modules-install.sh | |
echo "Generate kernel modules tarball" | |
mkdir -p ${{ matrix.image-name }}-modules_install && make modules_install INSTALL_MOD_PATH=${{ matrix.image-name }}-modules_install | |
cp modules-install.sh ${{ matrix.image-name }}-modules_install/ | |
rm -rf ${{ matrix.image-name }}-modules_install/lib/modules/$version-WSL2-STABLE+/build | |
echo "$version" >> ${{ matrix.image-name }}-modules_install/kernel_version.txt | |
tar -czf ${{ matrix.image-name }}-modules_install.tar.gz ${{ matrix.image-name }}-modules_install && mv ${{ matrix.image-name }}-modules_install.tar.gz ../ | |
echo "Done" | |
- name: Generate kernel optional package (headers, docs) | |
run: | | |
echo "Check kernel version" | |
IFS=- read -r var1 var2 var3 version <<< ${{ github.ref_name }} | |
echo "Kernel verison: $version" | |
cd linux | |
echo "Download kernel optionals package installer script" | |
wget https://gist.githubusercontent.com/Nevuly/b203682442ba2c6cf4cad3b35afb6f4b/raw/72cffc2e83a6c9298667a79c91cfe53bbcfcc6e1/optionals-install.sh | |
chmod 775 optionals-install.sh | |
echo "Generate kernel headers tarball" | |
mkdir -p ${{ matrix.image-name }}-optional_install/build | |
export optional_path=${{ matrix.image-name }}-optional_install/build | |
install -Dt "$optional_path" -m644 Makefile Module.symvers System.map vmlinux | |
install -Dt "$optional_path/kernel" -m644 kernel/Makefile | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
install -Dt "$optional_path/arch/x86" -m644 arch/x86/Makefile | |
else | |
install -Dt "$optional_path/arch/arm64" -m644 arch/arm64/Makefile | |
fi | |
cp -t "$optional_path" -a scripts | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
install -Dt "$optional_path/tools/objtool" tools/objtool/objtool | |
install -Dt "$optional_path/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids | |
fi | |
cp -t "$optional_path" -a include | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
cp -t "$optional_path/arch/x86" -a arch/x86/include | |
install -Dt "$optional_path/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s | |
else | |
cp -t "$optional_path/arch/arm64" -a arch/arm64/include | |
install -Dt "$optional_path/arch/arm64/kernel" -m644 arch/arm64/kernel/asm-offsets.s | |
mkdir -p "$optional_path/arch/arm" | |
cp -t "$optional_path/arch/arm" -a arch/arm/include | |
fi | |
install -Dt "$optional_path/drivers/md" -m644 drivers/md/*.h | |
install -Dt "$optional_path/net/mac80211" -m644 net/mac80211/*.h | |
install -Dt "$optional_path/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h | |
install -Dt "$optional_path/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h | |
install -Dt "$optional_path/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h | |
install -Dt "$optional_path/drivers/media/tuners" -m644 drivers/media/tuners/*.h | |
install -Dt "$optional_path/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h | |
find . -name 'Kconfig*' -exec install -Dm644 {} "$optional_path/{}" \; | |
export arch | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
for arch in "$optional_path"/arch/*/; do | |
[[ $arch = */x86/ ]] && continue | |
echo "Removing $(basename "$arch")" | |
rm -r "$arch" | |
done | |
else | |
for arch in "$optional_path"/arch/*/; do | |
[[ $arch = */arm64/ ]] && continue | |
echo "Removing $(basename "$arch")" | |
rm -r "$arch" | |
done | |
fi | |
rm -r $optional_path/Documentation | |
find -L "$optional_path" -type l -printf 'Removing %P\n' -delete | |
find -L "$optional_path" -type f -name '*.o' -printf 'Removing %P\n' -delete | |
export file | |
export STRIP_SHARED | |
export STRIP_STATIC | |
export STRIP_BINARIES | |
while read -rd '' $file; do | |
case "$(file -Sib "$file")" in | |
application/x-sharedlib\;*) | |
strip -v $STRIP_SHARED $file ;; | |
application/x-archive\;*) | |
strip -v $STRIP_STATIC $file ;; | |
application/x-executable\;*) | |
strip -v $STRIP_BINARIES $file ;; | |
application/x-pie-executable\;*) | |
strip -v $STRIP_SHARED $file ;; | |
esac | |
done < <(find "$optional_path" -type f -perm -u+x ! -name vmlinux -print0) | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
strip -v $STRIP_STATIC "$optional_path/vmlinux" | |
fi | |
echo "Generate kernel documentations tarball" | |
cp -r Documentation $optional_path/Documentation | |
cp optionals-install.sh ${{ matrix.image-name }}-optional_install/ | |
echo "$version" >> ${{ matrix.image-name }}-optional_install/kernel_version.txt | |
tar -czf ${{ matrix.image-name }}-optional_install.tar.gz ${{ matrix.image-name }}-optional_install && mv ${{ matrix.image-name }}-optional_install.tar.gz ../ | |
echo "Done" | |
- name: Generate SHA-256 Checksum | |
id: gen-sha-256 | |
run: | | |
if [ ${{ matrix.arch }} == "x86" ] | |
then | |
read -r x86ImageSHA rest <<< "$(sha256sum ${{ matrix.image-name }})" | |
read -r x86ModuleSHA rest <<< "$(sha256sum ${{ matrix.image-name }}-modules_install.tar.gz)" | |
read -r x86OptionalSHA rest <<< "$(sha256sum ${{ matrix.image-name }}-optional_install.tar.gz)" | |
echo "X86_IMAGE_SHA=$x86ImageSHA" >> $GITHUB_OUTPUT | |
echo "X86_MODULE_SHA=$x86ModuleSHA" >> $GITHUB_OUTPUT | |
echo "X86_OPTIONAL_SHA=$x86OptionalSHA" >> $GITHUB_OUTPUT | |
else | |
read -r arm64ImageSHA rest <<< "$(sha256sum ${{ matrix.image-name }})" | |
read -r arm64ModuleSHA rest <<< "$(sha256sum ${{ matrix.image-name }}-modules_install.tar.gz)" | |
read -r arm64OptionalSHA rest <<< "$(sha256sum ${{ matrix.image-name }}-optional_install.tar.gz)" | |
echo "ARM64_IMAGE_SHA=$arm64ImageSHA" >> $GITHUB_OUTPUT | |
echo "ARM64_MODULE_SHA=$arm64ModuleSHA" >> $GITHUB_OUTPUT | |
echo "ARM64_OPTIONAL_SHA=$arm64OptionalSHA" >> $GITHUB_OUTPUT | |
fi | |
echo "Done" | |
- name: Upload kernel Images | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ matrix.image-name }} | |
path: | | |
${{ matrix.image-name }} | |
${{ matrix.image-name }}-modules_install.tar.gz | |
${{ matrix.image-name }}-optional_install.tar.gz | |
release: | |
runs-on: ubuntu-latest | |
needs: build | |
env: | |
X86_IMAGE_SHA: ${{ needs.build.outputs.X86_IMAGE_SHA }} | |
X86_MODULE_SHA: ${{ needs.build.outputs.X86_MODULE_SHA }} | |
X86_OPTIONAL_SHA: ${{ needs.build.outputs.X86_OPTIONAL_SHA }} | |
ARM64_IMAGE_SHA: ${{ needs.build.outputs.ARM64_IMAGE_SHA }} | |
ARM64_MODULE_SHA: ${{ needs.build.outputs.ARM64_MODULE_SHA }} | |
ARM64_OPTIONAL_SHA: ${{ needs.build.outputs.ARM64_OPTIONAL_SHA }} | |
steps: | |
- uses: actions/checkout@main | |
- uses: actions/download-artifact@main | |
with: | |
path: release_images/ | |
- name: Release Kernel | |
uses: softprops/action-gh-release@master | |
with: | |
name: ${{ github.ref_name }} | |
tag_name: ${{ github.ref_name }} | |
body: | | |
**NOTICE** | |
* If you use `Docker Desktop`, You must install kernel modules in `docker-desktop` WSL2 image. More information is [here](https://github.com/Nevuly/WSL2-Rolling-Kernel-Issue/issues/21#issuecomment-2293228925). | |
**WARNING** | |
ARM64 kernel has not been tested. If you have any issues, please leave an issue on the [Issues tab](https://github.com/Nevuly/WSL2-Rolling-Kernel-Issue/issues)! | |
**Hash Information** | |
| File Name | SHA-256 Checksum | | |
|:--------------:|:------:| | |
| bzImage-x86_64 | ${{ env.X86_IMAGE_SHA }} | | |
| bzImage-x86_64-modules_install.tar.gz | ${{ env.X86_MODULE_SHA }} | | |
| bzImage-x86_64-optional_install.tar.gz | ${{ env.X86_OPTIONAL_SHA }} | | |
| Image-arm64 | ${{ env.ARM64_IMAGE_SHA }} | | |
| Image-arm64-modules_install.tar.gz | ${{ env.ARM64_MODULE_SHA }} | | |
| Image-arm64-optional_install.tar.gz | ${{ env.ARM64_OPTIONAL_SHA }} | | |
**How to apply this kernel?** | |
Before you try to apply this kernel, You **MUST** shutdown your WSL. (wsl --shutdown) | |
Check this [document](https://learn.microsoft.com/en-us/windows/wsl/wsl-config). | |
**How to install kernel module and optional packages in WSL2?** | |
Please check this [guideline](https://github.com/Nevuly/WSL2-Linux-Kernel-Rolling/wiki#kernel-modules-and-kernel-headers-installation-guide). | |
**This kernel built on ArchLinux.** | |
files: | | |
release_images/*/* | |
token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} | |
fail_on_unmatched_files: true |