Project

General

Profile

Support #686

Updated by Daniel Curtis about 9 years ago

This is a guide on how I compile a kernel module for Raspbian on a Raspberry Pi 2. 

 h2. Prepare the Environment 

 * Make sure the system is up to date: 
 <pre> 
 apt-get update && apt-get upgrade 
 </pre> 

 * Install a few dependencies: 
 <pre> 
 apt-get install build-essential bc automake autoconf libtool gawk alien fakeroot zlib1g-dev uuid-dev libblkid-dev libselinux-dev parted lsscsi wget ncurses-dev 
 </pre> 

 h2. Download the Kernel 

 * Clone the latest raspberry pi toolchain: 
 <pre> 
 cd /usr/src 
 git clone https://github.com/raspberrypi/tools 
 </pre> 

 * Export the toolchain path: 
 <pre> 
 export CCPREFIX=/usr/src/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi- 
 </pre> 

 * Download the latest linux kernel for the raspberry pi: 
 <pre> 
 cd /usr/src 
 git clone https://github.com/raspberrypi/linux 
 </pre> 

 * Then checkout the current kernel version: 
 <pre> 
 cd /usr/src/linux 
 zgrep "* firmware as of" /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | head -1 | awk '{ print $5 }' | git checkout - 
 </pre> 

 * Then export the kernel source path: 
 <pre> 
 export KERNEL_SRC=/usr/src/linux 
 </pre> 

 h2. Compile the Kernel Modules 

 * Load the configs kernel module: 
 <pre> 
 modprobe configs 
 </pre> 

 * Load the current config into the kernel source directory: 
 <pre> 
 zcat /proc/config.gz > /usr/src/linux/.config 
 </pre> 

 * Prepare the kernel build environment: 
 <pre> 
 cd /usr/src/linux 
 make mrproper 
 </pre> 

 * Use the previous kernel config with the new kernel build environment: 
 <pre> 
 make oldconfig 
 </pre> 

 * Build the kernel: 
 <pre> 
 make -j4 
 </pre> 

 * Now use a make file that references the kernel source directory to built the kernel module only, use a line like: 
 <pre> 
 PREFIX = /usr/src/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi- 
 make -C /usr/src/linux M=$(SRC) modules 
 </pre> 

 h2. Resources 

 * http://lostindetails.com/blog/post/Compiling-a-kernel-module-for-the-raspberry-pi-2 
 * http://openstack.prov12n.com/openstack-on-raspberry-pi-part-2-getting-started/ 
 * https://raspberrypicloud.wordpress.com/2013/03/12/building-an-lxc-friendly-kernel-for-the-raspberry-pi/ 
 * http://elinux.org/Raspberry_Pi_Kernel_Compilation

Back