Compile the kernel of RPI from source code

Source: Internet
Author: User

Kernel Building

Https://www.raspberrypi.org/documentation/linux/kernel/building.md

There is the main methods for building the kernel. You can build locally on a Raspberry Pi which would take a long time; Or you can cross-compile, which are much quicker, but requires more setup.

Local Building

On a Raspberry Pi first install the latest version of Raspbian from the downloads page. Then boot your Pi, plug in Ethernet to give you access to the sources, and log in.

First get the sources, which'll take some time:

$ git clone --depth=1 https://github.com/raspberrypi/linux

ADD Missing dependencies:

$ sudo apt-get install bc

Configure the Kernel-as well as the default configuration you may wish to Configure your kernel in more detail or apply Patches from another source to add or remove required functionality:

Run the following commands depending on your Raspberry Pi version.

Raspberry Pi 1 (or Compute Module) Default Build Configuration
$ cd linux$ KERNEL=kernel$ make bcmrpi_defconfig
Raspberry Pi 2 Default Build Configuration
$ cd linux$ KERNEL=kernel7$ make bcm2709_defconfig

Build and install the kernel, modules and Device Tree blobs; This step takes a lot of time ...

$ make zImage modules dtbs$ sudo make modules_install$ sudo cp arch/arm/boot/dts/*.dtb /boot/$ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/$ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/$ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img
Cross-compiling

First you is going to require a suitable Linux cross-compilation host. We tend to use Ubuntu; Since Raspbian is also a Debian distribution it means using similar command lines and so on.

You can either does this using the VirtualBox (or VMWare) on Windows, or install it directly onto your computer. For reference your can follow instructions online at Wikihow.

Install Toolchain

Use the following command:

$ git clone https://github.com/raspberrypi/tools

You can then copy the toolchain-a common location such /tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian as, and add to /tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin your $PATH in the. BASHRC in your Hom E directory. For 64bit, Use/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin. While this step isn't strictly necessary, it does make it easier for later command lines!

Get sources

To get the sources, refer to the original GitHub repository for the various branches.

$ git clone --depth=1 https://github.com/raspberrypi/linux
Build sources

To build the sources-cross-compilation there may is extra dependencies beyond those you ' ve installed by default with U Buntu. If you find your need other things, submit a pull request to change the documentation.

Enter the following commands to build the sources and Device Tree files.

For Pi 1 or Compute Module:

$ cd linux$ KERNEL=kernel$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig

For Pi 2:

$ cd linux$ KERNEL=kernel7$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

Then for both:

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

Note:to speed up compilation in multiprocessor systems, and get some improvement on single processor ones, use -j n wher e n is number of processors * 1.5. Alternatively, feel free to experiment and see what works!

Install directly onto the SD card

Have built the kernel you need to copy it onto your Raspberry Pi and install the modules; This is the best-done directly using a SD card reader.

First use lsblk before and after plugging in your SD card to identify which one it is; You should end and something like this:

sdb   sdb1   sdb2

If It is a NOOBS card you should see something like this:

sdb  sdb1  sdb2  sdb3  sdb5  sdb6

In the first case sdb1/sdb5 was the FAT partition, and is the sdb2/sdb6 ext4 filesystem image (NOOBS).

Mount These first:

$ mkdir mnt/fat32$ mkdir mnt/ext4$ sudo mount /dev/sdb1 mnt/fat32$ sudo mount /dev/sdb2 mnt/ext4

Adjust the partition numbers for the NOOBS images.

Next, install the modules:

$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install

Finally, copy the kernel and Device Tree blobs onto the SD card, making sure to back up your old kernel:

$ sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img$ sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/$KERNEL.img$ sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/$ sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/$ sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/$ sudo umount mnt/fat32$ sudo umount mnt/ext4

Another option is to copy the kernel into the same place, but with a different filename-for instance, kernel-myconfig.im G-rather than overwriting the kernel.img file. You can then edit the Config.txt file to select the kernel, the Pi would boot into:

kernel=kernel-myconfig.img

This have the advantage of keeping your kernel separate from the kernel image managed by the system and any automatic Updat e tools, and allowing easily revert to a stock kernel in the event that your kernel cannot boot.

Finally, plug the card into the Pi and boot it!

Links

Building/cross-compiling On/for Other operating systems

    • Pidora
    • ArchLinux
    • Raspbmc
    • OpenELEC

Compile the kernel of RPI from source code

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.