RaspBerryPi3-内核编译

转载注明出处:http://www.cnblogs.com/einstein-2014731/p/5985128.html

在有道云笔记的同步分享:http://note.youdao.com/share/?id=0867c9cbe7b0167881656e3a86a98e20&type=note#/

编译更新RaspberryPi3的内核有两种方式,第一种是在树莓派上编译新的内核,完成后重启,优点是简单方便,缺点是速度慢。另一种是在另一台电脑上使用交叉编译的方法编译内核,完成后拷贝到SD卡上。优点是速度很快,但是操作起来相对麻烦些。这里记录下两种方式。

在树莓派本地编译内核

这个方式主要就是copy官网上说的了。翻译下

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

1、在全球最大男性同性交友网站GitHub上下载linux内核源码。

mkdir PiLinuxCore

cd PiLinuxCore/

git clone  https://github.com/raspberrypi/linux

2、安装缺少的依赖项。

sudo apt-get install bc

3、内核配置。

cd PiLinuxCore/KERNEL=kernel7

make bcm2709_defconfig

4、编译安装内核模块,

make -j4 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    

耗时40分钟到80分钟之间。

5、重启完成内核更新

sudo reboot

6、使用uname 查看下内核版本是否更新了

Ubuntu上交叉编译内核

交叉编译建议使用Ubuntu因为Raspbian是Debian的一种发行版本,有很多指令是相同的。因为树莓派的内核代码总是在更新,所以编译方法尽量按照官网的方法,以下就是最新的方法。

下载源码和交叉编译工具

1、内核源码:https://github.com/raspberrypi/linuxc

直接打包下载zip文件

2、编译工具:https://github.com/raspberrypi/tools

直接打包下载

下载完成后在ubuntu home目录下的用户文件夹中建个文件夹RaspberryPi

也可以随意定个位置。把下载完的两个文件拷贝到这个文件夹内。如下:

分别解压缩

unzip     linux-rpi-4.4.y.zip

unzip     tools-master.zip

进入tools目录,32位机器拷贝下面这个目录 到指定位置。

/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian

并把下面的路径添加到home路径下的.bashrc文件里,就是所说的环境变量$PATH,添加环境变量有多种方法可自行上网查询。

/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin      

64位系统的主机拷贝下面的路径,其它步骤和32位的一样

/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin      

开始编译

下面的操作都是root权限,进入下载的linux内核解压后的目录,Pi1的配置方法:

cd linux

KERNEL=kernel

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-     bcmrpi_defconfig

Pi2\3的配置方法:

cd linux

KERNEL=kernel7

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-     bcm2709_defconfig

然后进行编译

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

这个时候不出意外的话就开始编译了 等待十几分钟左右吧 就差不多编译完了。

安装到SD

插入SD卡之后 你会看到咔咔弹出三个对话框,然并卵。

然后输入 lsblk 会得到如下分区目录(我是用NOOBS装的):

这个sdb是SD卡,显示7.4G的总容量;sda是虚拟机给ubuntu分的区50G

sdb6 是 FAT(boot)引导分区 类似启动文件。

sdb7 是 ext4文件系统分区

如果你不是用的NOOBS装的系统 那就是下面这种情况:

sdb1 是 FAT(boot)引导分区 类似启动文件。

sdb2 是 ext4文件系统分区

对于用NOOBS的SD卡:首先挂载SD卡。随便一个位置建个mnt文件夹用来挂载磁盘。我建在linux目录下,接下来按照下面的方法建文件夹。

mkdir /mnt/fat32mkdir /mnt/ext4

sudo mount /dev/sdb6 mnt/fat32

sudo mount /dev/sdb7 mnt/ext4

因为是NOOBS装的系统所以这里挂载sdb6、sdb7。

接下来安装模组到mnt/ext4:

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

最后复制内核文件到SD卡。这里最好备份下之前的内核文件。

   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
kernel=kernel-myconfig.img

把SD卡插到树莓派然后重启,uname -a查看下版本

没有问题。

RaspBerry Pi3 ~ 内核编译的更多相关文章

  1. [raspberry pi3] hadoop 编译搭建和配置

    Causion: 只有一个raspberry pi3的就随便玩玩吧,瓶颈不在在cpu, 1 G的内存实在是太少了,跑个hadoop就很辛苦了 下面是瞎折腾的过程: oracle的arm jdk的安装过 ...

  2. [raspberry pi3] aarch64 mongodb 编译和安装

    raspberry pi3官方支持是32bit的系统,使用mongodb的时候有2G数据库大小的限制,32bit的系统上数据大点基本上就可以认为不能用了,所以要装64bit的opensuse. 安装了 ...

  3. [raspberry pi3] 编译安装chromium

    想要试试arm板上使用selenium是不是可能,发现Firefox什么的不顶用,网上有提供的chrome的安装手顺,但是没有arm版本的对应的chromedriver,只能自己搞了. 这边介绍的方法 ...

  4. 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

    实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. ...

  5. zju(3)内核编译与运行

    1.实验目的 学习和掌握Linux配置和编译的基本步骤. 二.实验内容 1. 对Linux内核及用户程序进行配置: 2. 编译生成内核映像文件: 3. 把编译的映像文件烧写到FLASH中,查看运行结果 ...

  6. linux内核编译,配置本机驱动

    1.前言  编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多 ...

  7. linux内核编译相关

    参考:http://www.arm.linux.org.uk/docs/kerncomp.php 一. 内核编译1) linux 2.4make clean/make mrpropermake dep ...

  8. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  9. 【转】内核编译时, 到底用make clean, make mrproper还是make distclean(转载)

    原文网址:http://dongyulong.blog.51cto.com/1451604/449470 内核编译时, 到底用make clean, make mrproper还是make distc ...

随机推荐

  1. 在程序中使用NV 3D Vision 【转】

    http://www.cnblogs.com/gongminmin/archive/2010/11/21/1883392.html 多年前NVIDIA就发布了3D Vision技术,能提供多种立体渲染 ...

  2. Upan

    http://www.xiazaijidi.com/ http://www.ushendu.com/

  3. 一个端口划到多个VLAN

    不想启路由的情况下,希望将一个端口划到多个VLAN中去,其目的有如下几点: 1.隔离不想让相互访问的端口.(如两个部门) 2.让都需要访问的端口划到所有VLAN.(如共享服务器) 3.不启路由协议.( ...

  4. VC++动态链接库(DLL)编程深入浅出(二)

    好,让我们正式进入动态链接库的世界,先来看看最一般的DLL,即非MFC DLL 上节给大家介绍了静态链接库与库的调试与查看,本节主要介绍非MFC DLL. 4.非MFC DLL 4.1一个简单的DLL ...

  5. 有问必答项目 -数据库设计文档(ask-utf-8)

    有问必答项目 -数据库设计文档(ask-utf-8) 表前缀的使用 早期租用公共的服务器 一个数据库,保存多个项目(问答.电子商务.医院),为了区分这些项目,使用前缀分割 ask_ ec_ hospi ...

  6. 工厂方法模式之C++实现

    说明:本文仅供学习交流,转载请标明出处.欢迎转载. 工厂方法模式与简单工厂模式的差别在于:在简单工厂模式中.全部的产品都是有一个工厂创造,这样使得工厂承担了太大的造产品的压力,工厂内部必须考虑所以的产 ...

  7. .net 网站登录

    如何实现,按回车键,自动登录,在相应控件上添加onkeypress事件 function CheckCodePress(e){ var e = e||window.event if (e.keyCod ...

  8. Javascript模式(三) 策略模式

    var data = { "username" : "zhangsan", "password" : "12345690" ...

  9. HDU1845Jimmy’s Assignment(无向图,最大匹配)

    题意:就是求最大匹配 #include<cstdio> #include<iostream> #include<algorithm> #include<cma ...

  10. 一份还热乎的蚂蚁面经(已拿Offer)!附答案!!

    本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者--泽林提供,部分答案由Hollis整理自知识星球<Hollis和他的朋友们>中「 ...