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. Windows Phone 8 下载文件进度

    后台代码: public partial class MainPage : PhoneApplicationPage { private long siz; private long speed; p ...

  2. android之拍照与摄像

    拍照和摄像的意图很简答,这里直接贴代码 布局文件 <?xml version="1.0" encoding="utf-8"?> <Linear ...

  3. js中递归函数的使用介绍

    所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示: ...

  4. RabbitMQ 发布/订阅

    我们会做一些改变,就是把一个消息发给多个消费者,这种模式称之为发布/订阅(类似观察者模式). 为了验证这种模式,我们准备构建一个简单的日志系统.这个系统包含两类程序,一类程序发动日志,另一类程序接收和 ...

  5. 毕向东JAVA基础25天教程目录

    视频目录:day01-01-基本常识day01-02-Java的跨平台性day01-03-Java环境搭建(安装)day01-04-Java环境搭建(环境变量配置)day01-05-Java环境搭建( ...

  6. js 对象数组根据对象中的属性排序

    function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = obje ...

  7. stringBuffer拼接有规律字符串

    1. 拼接结果如下的字符串 1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1234,123 2. 以前是这样想的,但是从效率,速度 ...

  8. java线程安全

    (一).java并发之原子性与可见性 原子性 原子是世界上的最小单位,具有不可分割性.比如 a=0:(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作.再比如:a+ ...

  9. log4net在Asp.net Mvc中的应用配置与介绍

    log4net在.NET中的地位就不多言语了,此篇文章着重配置.较少介绍使用.因为在网上你可以在网上搜到几十万的文章告诉你怎么用.安装的话也不废话了,很简单.Nuget里搜索一下"log4n ...

  10. shell 字符串截取

    ${expression}一共有9种使用方法. ${parameter:-word},如果parameter为空,则用word的值做parameter的缺省值 ${parameter:=word},在 ...