查看: 1408|回复: 0

两种方式教你编译更新RaspberryPi3的内核

[复制链接]
  • TA的每日心情
    奋斗
    2018-10-12 08:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-7-20 16:49:57 | 显示全部楼层 |阅读模式
    分享到:
    编译更新RaspberryPi3的内核有两种方式,第一种是在树莓派上编译新的内核,完成后重启,优点是简单方便,缺点是速度慢。另一种是在另一台电脑上使用交叉编译的方法编译内核,完成后拷贝到SD卡上。优点是速度很快,但是操作起来相对麻烦些。这里记录下两种方式。
    在树莓派本地编译内核
    这个方式主要就是copy官网上说的了。翻译下
    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查看下版本

    没有问题。
    作者:沧海一粟
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 16:30 , Processed in 0.121438 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.