Raspberry Pi 3 --- Kernel Building and Run in A New Version Kernal
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的更多相关文章
- 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 ...
- .NET Core on Raspberry Pi
原文地址:传送门 .NET Core on Raspberry Pi Arm32 builds are available as community supported builds for .NET ...
- Raspberry Pi Kernel Compilation 内核编译官方文档
elinux.org/Raspberry_Pi_Kernel_Compilation#Use_the_provided_compiler Software & Distributions: S ...
- 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 ...
- 在ubuntu上编译rasbian kernel(for raspberry pi 1)
raspberry pi官网的编译手册写的简洁有力,照着操作即可 https://www.raspberrypi.org/documentation/linux/kernel/building.md ...
- RASPBERRY PI 外设学习资源
参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi Get st ...
- Raspberry Pi I2C驱动 (Python)
本文参考 http://www.instructables.com/id/Raspberry-Pi-I2C-Python/all/?lang=zh 作者 AntMan232 In this instr ...
- 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 ...
- Arduino VS. Raspberry Pi VS. Beaglebone Black
The Arduino is a small Atmel-based microcontroller development board easily integrated into many dif ...
随机推荐
- 使用 Socket 通信实现 FTP 客户端程序(来自IBM)
FTP 客户端如 FlashFXP,File Zilla 被广泛应用,原理上都是用底层的 Socket 来实现.FTP 客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通 ...
- java 中遍历hashmap 和hashset 的方法
一.java中遍历hashmap: for (Map.Entry<String, Integer> entry : tempMap.entrySet()) { String ...
- 内网穿透神器ngrok——将本地项目驾到外网
相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试.支付宝接口调试等.这个时候,一个叫ngrok的神器可能会帮到你,它提供了一个能够在公网安 ...
- Android几种打开SQLite的方法
第一种:用SQLiteOpenHelper辅助类 SQLiteOpenHelper类可以用来创建或打开数据库,两个关键的方法:onCreate(SQLiteDatabase db)和onUpgrade ...
- java中的全等和相似
package pack2; import java.util.*; /*Node 的equals()和hashCode()两个函数缺一不可 * HashSet会通过这两个函数来判断两个元素是否等价 ...
- 工作框架各种使用整理---使用Cache
<service verb="get" noun="Products"> <implements service="sang.pro ...
- ios8调用相机报警告: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure you(转)
我这也报了这个警告,但按他的方法并没有起作用,把写到这个地方看是否其他人用的到 错误代码:Snapshotting a view that has not been rendered results ...
- 开发错误记录9:Application无法跳转到Activity
今天在做友盟消息推送,当客户端收到推送消息时,如客户端不是活动的,用如下代码 启动Activity发现无法启动,原因是原有的任务栈已消毁,判断启动是如消毁,如有,再新建一个 只要给它添加一个标志 就可 ...
- Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务(亲测可用)
一.背景: 1.Dubbo服务正常注册到ZooKeeper 2.客户端调用Dubbo服务正常 二.原因: Dubbo-Admin未配置分组信息 三.解决步骤: 1.dubbo.properties添加 ...
- 通过js写一个消息弹框
prompt(data,time) { let alertForm = document.createElement('div'); alertForm.id="promptBox" ...