Skip to content

Instantly share code, notes, and snippets.

@kyokuheki
Last active September 17, 2024 09:22
Show Gist options
  • Save kyokuheki/a754b756eaaa9a3f1de51ee3a32a4e45 to your computer and use it in GitHub Desktop.
Save kyokuheki/a754b756eaaa9a3f1de51ee3a32a4e45 to your computer and use it in GitHub Desktop.
Synology DSM kernel module build

Synology DSM kernel module build

env

build

mkdir build
sudo docker run -it --name syno-kmod-build -v $PWD/build:/build debian

# install packages
apt update
apt install wget tar file xz-utils bc kmod build-essential libncurses-dev libssl-dev

# get src
cd /build
wget -O apollolake-gcc493_glibc220_linaro_x86_64-GPL.txz https://sourceforge.net/projects/dsgpl/files/Tool%20Chain/DSM%206.2.4%20Tool%20Chains/Intel%20x86%20Linux%204.4.59%20%28Apollolake%29/apollolake-gcc493_glibc220_linaro_x86_64-GPL.txz/download
wget https://global.synologydownload.com/download/ToolChain/Synology%20NAS%20GPL%20Source/6.2-25556/apollolake/linux-4.4.x.txz

# install tool chain
tar -xvf apollolake-gcc493_glibc220_linaro_x86_64-GPL.txz -C /usr/local/
export PATH=/usr/local/x86_64-pc-linux-gnu/bin:$PATH
export CROSS_COMPILE=x86_64-pc-linux-gnu-
export LOCALVERSION=+
## ARCH will be selected according to the target device
## get kernel version magic from `uname -r`...4.4.59+
## get ARCH from `uname -m`...x86_64

# extract src
tar -xvf linux-4.4.x.txz -C /build

# kernel config
cd /build/linux-4.4.x
cp -vi synoconfigs/apollolake .config
make olddefconfig

## enable ixgbe driver
### Linux Kernel Configuration
### └─>Device Drivers
###   └─>Network device support
###     └─>Ethernet driver support
###       └─>PCI support
###         └─>Intel(R) 10GbE PCI Express adapters support
make menuconfig

## prepare
make prepare

## check kernel version magic. if do not match modify LOCALVERSION
make ARCH=x86_64 kernelrelease

## build
make ARCH=x86_64 modules
# make ARCH=x86_64 CROSS_COMPILE=x86_64-pc-linux-gnu- CC=${CROSS_COMPILE}gcc modules

## get .ko
modinfo /build/linux-4.4.x/drivers/net/ethernet/intel/ixgbe/mdio.ko
modinfo /build/linux-4.4.x/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
cp -iv /build/linux-4.4.x/drivers/net/ethernet/intel/ixgbe/mdio.ko /build/
cp -iv /build/linux-4.4.x/drivers/net/ethernet/intel/ixgbe/ixgbe.ko /build/

refs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment