WSL交叉编译arm64 kernel
建议在debian或ubuntu进行编译
安装编译需要的一些工具:apt install build-essential
还需要下载arm的工具链
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
编译内核,通常选择 aarch64-none-linux-gnu
解压后将bin目录添加到环境变量
export PATH=$PATH:/.../arm-gnu-toolchain-VERSION-x86_64-aarch64-none-linux-gnu/bin
内核配置菜单
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- menuconfig
编译内核(Image):
make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- Image
设备树(dts):
make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- dtbs
模块(modules)
make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- modules
WSL 的 /boot 和 /lib/modules默认一般都是空文件夹
直接在wsl本机 make install ,make modules_install
Image会被安装到 /boot/vmlinuz-版本号(一个文件)
模块会被安装到 /lib/modules/内核版本(一个文件夹)
直接手动提取出来,制作软件包
复制到目标机器的相应路径就好
安装好要重新生成initramfs
Debian: initramfs -u
RHEL: dracut -f
Archlinux: mkinitcpio -P
执行以上指令,如果新的内核版本号不同,需要指定版本号