04-02-2020, 07:07 PM
Finally got this working.
The kernel is arm64 and the userland is armhf, so anything to do with the kernel has to be cross-compiled.
First compile the aarch64 cross-compiling binutils & gcc from source, as they're not available in Debian stretch for armhf.
Follow this howto: https://www.tal.org/tutorials/raspberry-...bit-kernel
(Add any other packages it needs; I needed texinfo.)
Next get the source for your running kernel.
$ uname -a
Look at https://github.com/mrfixit2001/rockchip-...elease-4.4 and find the corresponding commit.
Currently that's 209da1a which is 15th from the top.
$ mkdir kernel-out
$ gunzip -c /proc/config.gz | sed s/CONFIG_LOCALVERSION_AUTO=y/CONFIG_LOCALVERSION_AUTO=n/ > kernel-out/.config
Make the output directory & copy the config from the running kernel into it ("As a generated output, the .config file must be in $KBUILD_OUTPUT") with one change. The change is necessary to get the kernel version number to exactly line up so the module can be loaded.
Now we get the kernel sources.
$ git clone --depth=15 https://github.com/mrfixit2001/rockchip-kernel.git
$ cd rockchip-kernel
$ git checkout 209da1a
It only needs modules_prepare, we don't need to build the whole kernel.
(See: https://www.kernel.org/doc/html/latest/k...dules.html)
$ LOCALVERSION="" make -j6 O=../kernel-out ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- modules_prepare
Create the symlink that the linux-headers package normally does.
$ sudo ln -s /home/rock/build-area/kernel-out/ /lib/modules/$(uname -r)/build
(Using the actual pathname of your output directory.)
Now get the WireGuard source & build it according to the usual instructions, with one change.
https://www.wireguard.com/compilation/
The kernel module needs to be cross-compiled:
$ make -C wireguard-linux-compat/src -j$(nproc) ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
The rest of the make lines are the same.
The kernel is arm64 and the userland is armhf, so anything to do with the kernel has to be cross-compiled.
First compile the aarch64 cross-compiling binutils & gcc from source, as they're not available in Debian stretch for armhf.
Follow this howto: https://www.tal.org/tutorials/raspberry-...bit-kernel
(Add any other packages it needs; I needed texinfo.)
Next get the source for your running kernel.
$ uname -a
Code:
Linux Debian-Desktop 4.4.213 #1 SMP Fri Feb 7 13:03:55 EST 2020 aarch64 GNU/Linux
Look at https://github.com/mrfixit2001/rockchip-...elease-4.4 and find the corresponding commit.
Currently that's 209da1a which is 15th from the top.
$ mkdir kernel-out
$ gunzip -c /proc/config.gz | sed s/CONFIG_LOCALVERSION_AUTO=y/CONFIG_LOCALVERSION_AUTO=n/ > kernel-out/.config
Make the output directory & copy the config from the running kernel into it ("As a generated output, the .config file must be in $KBUILD_OUTPUT") with one change. The change is necessary to get the kernel version number to exactly line up so the module can be loaded.
Now we get the kernel sources.
$ git clone --depth=15 https://github.com/mrfixit2001/rockchip-kernel.git
$ cd rockchip-kernel
$ git checkout 209da1a
It only needs modules_prepare, we don't need to build the whole kernel.
(See: https://www.kernel.org/doc/html/latest/k...dules.html)
$ LOCALVERSION="" make -j6 O=../kernel-out ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- modules_prepare
Create the symlink that the linux-headers package normally does.
$ sudo ln -s /home/rock/build-area/kernel-out/ /lib/modules/$(uname -r)/build
(Using the actual pathname of your output directory.)
Now get the WireGuard source & build it according to the usual instructions, with one change.
https://www.wireguard.com/compilation/
The kernel module needs to be cross-compiled:
$ make -C wireguard-linux-compat/src -j$(nproc) ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
The rest of the make lines are the same.