ABSTRACT

  There are two main methods for building the kernel. You can build locally on a Raspberry Pi which will take a long time; or you can cross-compile, which is much quicker.There is an introduction about cross-compilation as follows.

  You need ubuntu as your development environment.So you can install VMWare on Windows and install ubuntu on VMWare.

  This link is the introduction from the official website :  https://www.raspberrypi.org/documentation/linux/kernel/building.md

CROSS COMPILING:

  Download the cross compiling tools.

  $ mkdir raspberry      //make a folder for use

  $ cd ./raspberry

  $ git clone https://github.com/raspberrypi/tools     // make a folder named "tools" in the "raspberry"

  

  Add the following directory "/home/god/Desktop/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin" to your $PATH in the .bashrc as a environment variable.For the 32-bit host systems,the directory is "/home/god/Desktop/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin".If you put the path to your account rather than "root",you had better execute the following in your account.Otherwise you will be reminded that command not found.

  $ sudo apt-get install gcc-arm-linux-gnueabihf      //if execute it, you can use this gcc-linaro-arm-linux-gnueabihf version,not the version downloaded from "https://github.com/raspberrypi/tools".

GET SOURCE:

  Enter the folder named "raspberry" ,then download the source:

  $ git clone --depth=1 https://github.com/raspberrypi/linux   //make a folder named "linux" in the "raspberry"

  The paramenter "--depth=1" means only downloading the lastest version

BUILD SOURCE:

  $ cd ./linux

  $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig   //bcm2709_defconfig作为一个输入参数给makefile,然后通过标准路径“arch/arm/configs/”得到bcm2709_defconfig这个文件,进而把一些参数复制给.config文件,

  $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs  //generate zImage,modules and dtbs

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

INSTALL ON THE SD CARD:

  Having built the kernel you need to copy it onto your raspberry pi and install modules.This is the best done directly using an sd card reader.

  Use lsblk before and after plugging in your sd card to identify which one is.

  $ lsblk

  $ mkdir /mnt/fat32

  $ mkdir /mnt/ext4

  $ mount /dev/sdc1 /mnt/fat32     //for example sdc1 is the FAT(boot) partition

  $ mount /dev/sdc2 /mnt/ext4      //for example sdc2 is the ext3 filesystem(root) partition

  execute the orders before enter the folder of "linux"

  $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/mnt/ext4 modules_install   //install the modules into the "lib/modules/XXXX" folder

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

  $ KERNEL=kernel7       //for Pi2 or 3, the kernel file is "kernel7.img" but for Pi 1,the kernel file is "kernel.img".So use "$KERNEL" to replace "kernel7"

  $ cp /mnt/fat32/$KERNEL.img /mnt/fat32/$KERNEL-backup.img

  $ scripts/mkknlimg arch/arm/boot/zImage /mnt/fat32/$KERNEL.img   //zImage is a Compressed kernel image,need transfer to .img

  $ cp arch/arm/boot/dts/*.dtb /mnt/fat32/

  $ cp arch/arm/boot/dts/overlays/*.dtb* /mnt/fat32/overlays/

  $ cp arch/arm/boot/dts/overlays/README /mnt/fat32/overlays/

  $ umount /mnt/fat32

  $ umount /mnt/ext4

FINALLY

  plug the SD card into Pi and boot it.

Raspberry Pi 3 --- Kernel Building and Run in A New Version Kernal的更多相关文章

  1. How to emulate a Raspberry Pi on your PC

    How to emulate a Raspberry Pi on your PC I am very interested in trying simulators and emulators for ...

  2. .NET Core on Raspberry Pi

    原文地址:传送门 .NET Core on Raspberry Pi Arm32 builds are available as community supported builds for .NET ...

  3. Raspberry Pi Kernel Compilation 内核编译官方文档

    elinux.org/Raspberry_Pi_Kernel_Compilation#Use_the_provided_compiler Software & Distributions: S ...

  4. Compiling a kernel module for the raspberry pi 2 via Ubuntu host

    Compiling a kernel module for the raspberry pi 2 via Ubuntu host Normally compiling a kernel module ...

  5. 在ubuntu上编译rasbian kernel(for raspberry pi 1)

    raspberry pi官网的编译手册写的简洁有力,照着操作即可 https://www.raspberrypi.org/documentation/linux/kernel/building.md ...

  6. RASPBERRY PI 外设学习资源

    参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi         Get st ...

  7. Raspberry Pi I2C驱动 (Python)

    本文参考 http://www.instructables.com/id/Raspberry-Pi-I2C-Python/all/?lang=zh 作者 AntMan232 In this instr ...

  8. Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2

    This tutorial shows how to cross-compile the Embedded build of Qt 5.5 for Raspberry Pi 2. The Embedd ...

  9. Arduino VS. Raspberry Pi VS. Beaglebone Black

    The Arduino is a small Atmel-based microcontroller development board easily integrated into many dif ...

随机推荐

  1. js前端的各种面试题

    转载:http://bbs.blueidea.com/thread-3107428-1-1.html 1.截取字符串abcdefg的efg //alert('abcdefg'.substring(4) ...

  2. VS代码管理插件AnkhSvn

    下载AnKHSvn软件,启动VS,源代码管理工具选择AnKHSvn 在视图-〉其它窗口-〉Pending Change->提交变化的更改

  3. Web Api通过Route、RoutePrefix等特性设置路由

    [Route("customers/{customerId}/orders")] [HttpGet] public IEnumerable<Order> FindOrd ...

  4. [POJ2104]K-th Number

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 34048   Accepted: 10810 Ca ...

  5. android之远程启动服务

    启动远程服务和隐式启动Activity一样 实现一个服务 为了演示方便,该服务是一个空服务 package xidian.dy.com.chujia; import android.app.Servi ...

  6. webpack 插件: html-webpack-plugin

    插件地址:https://www.npmjs.com/package/html-webpack-plugin 这个插件用来简化创建服务于 webpack bundle 的 HTML 文件,尤其是对于在 ...

  7. RabbitMQ官方中文入门教程(PHP版) 第一部分:Hello World

    RabbitMQ是一个消息代理.它的核心原理非常简单:接收和发送消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,RabbitMQ是一个邮箱.邮局.邮 ...

  8. Mysql 慢查询和慢查询日志分析

    众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的.下面总结一些使用过或者研究过的经验,从配置以及调节索引的方面入手,对mysql进行一 ...

  9. LINUX下PHP开启短标签short_open_tag支持

    LINUX下PHP开启短标签short_open_tag支持 以CENTOS为例: 找到php.ini #find / -name php.ini #/etc/php.ini 编辑php.ini #v ...

  10. supervisor program配置实例

    program 配置 上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件.可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而 ...