Cross-compiling a kernel module

Ok, I have rebuilt all with the updated toolchain, this is what i did on my fedora laptop:

on laptop

retrieve kernel config from mod dwarf

scp root@192.168.50.1:/proc/config.gz /home/giorgio
gunzip /home/giorgio/config.gz ; mv /home/giorgio/config /home/giorgio/config.moddwarf

build docker image (see https://wiki.mod.audio/wiki/How_To_Use_Docker_Toolbox_With_MPB)

git clone --depth 1 GitHub - mod-audio/mod-plugin-builder: MOD Plugin Builder · GitHub
cd mod-plugin-builder/docker
docker build -t mpb --build-arg “platform=moddwarf-new minimal” .

Run docker

sudo docker run -ti -p 9000:9000 -v /home/giorgio/:/home/giorgio mpb

download, patch and build kernel with the mod config

install missing deps

sudo apt install libssl-dev

download kernel

git clone GitHub - mod-audio/linux-mainline: Linux kernel source tree · GitHub -b linux-6.1.y-patches

apply runtime patches

wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.1/older/patch-6.1.12-rt7.patch.gz
gunzip patch-6.1.12-rt7.patch.gz
cat patch-6.1.12-rt7.patch | patch -p1 --verbose

apply dwarf config

cp /home/giorgio/config.moddwarf .config

build kernel

make ARCH=arm64 CROSS_COMPILE=/home/builder/mod-workdir/moddwarf-new/toolchain/bin/aarch64-modaudio-linux-gnu- oldconfig
make ARCH=arm64 CROSS_COMPILE=/home/builder/mod-workdir/moddwarf-new/toolchain/bin/aarch64-modaudio-linux-gnu-
echo ‘#define UTS_RELEASE “6.1.15-rt7-moddwarf”’ > include/generated/utsrelease.h
echo “6.1.15-rt7-moddwarf” > include/config/kernel.release
cd ..

download and build driver

clone GitHub - lwfinger/rtl8188eu: Repository for stand-alone RTL8188EU driver. · GitHub
cd rtl8188eu/
make ARCH=arm64 CROSS_COMPILE=/home/builder/mod-workdir/moddwarf-new/toolchain/bin/aarch64-modaudio-linux-gnu- KSRC=../linux-mainline/

copy rtl8188eufw.bin and 8188eu.ko to dwarf , configure wpa_supplicant.conf according to WiFi - MOD Wiki

TODO: load driver at boot

Hope it helps

4 Likes