树莓派之内核升级—源码编译
升级前系统版本root@raspberrypi:~# uname -aLinux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 arm71 GNU/Linux1、下载内核源码官网地址:https://github.com/raspberrypiLinux内 核 源码:linux-rpi-4.14.y.zip...
升级前系统版本
root@raspberrypi:~# uname -a
Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 arm71 GNU/Linux
1、下载内核源码
官网地址:https://github.com/raspberrypi
Linux内 核 源码:linux-rpi-4.14.y.zip
tools交叉编译器:编译内核和其他源码所需的工具
2、配置交叉编译环境
设置环境变量,下载的tools解压到当前系统根目录下。
32位系统将如下路径加入环境变量:
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
64位系统将如下路径加入环境变量:
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
例如:
root@raspberrypi:~# vi /etc/profile
加入环境变量:export PATH=$PATH:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
刷新环境变量使其生效:
root@raspberrypi:~# source /etc/profile
3、编译、提取内核及其模块
root@raspberrypi:/home # unzip linux-rpi-4.4.y.zip
root@raspberrypi:/home # cd linux-rpi-4.4.y
可以直接修改内核根目录下的Makefile文件,修改下面的两行:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
或者直接使用make指令设置这两个参数,make ARCH=arm CROSS_COMPILE=arm-linux-......
执行find ./ -name "*bcm*defconfig*"查找对应的默认配置,只保留arm下的结果
root@raspberrypi:/home/linux-rpi-4.14.y # find ./ -name "*bcm*defconfig*"
./arch/arm/configs/bcm2835_defconfig
./arch/arm/configs/bcmrpi_defconfig
./arch/arm/configs/bcm2709_defconfig
./arch/arm/configs/bcm_defconfig
Pi 1使用bcmrpi_defconfig
Pi 2/3使用bcm2709_defconfig
4、内核编译
root@raspberrypi:/home/linux-rpi-4.4.y # KERNEL=kernel7
root@raspberrypi:/home/linux-rpi-4.4.y # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
配置内核模块,窗口顶部显示arm,说明参数设置成功
root@raspberrypi:/home/linux-rpi-4.4.y # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
编译内核镜像,如果是多处理器系统可以添加选项参数-jn, n为数字,表示多处理器的数量*1.5。可以加快编译速度
root@raspberrypi:/home/linux-rpi-4.4.y # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
或
root@raspberrypi:/home/linux-rpi-4.4.y # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage modules dtbs
5、升级内核及文件系统
将树莓派的SD卡插在Linux系统电脑上,查看分区
root@raspberrypi:/home/linux-rpi-4.4.y # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 29.7G 0 disk
|__sda1 8:1 1 43.9M 0 part /media/root/boot
|__sda2 8:2 1 29.7G 0 part /media/root/rootfs
mmcblk0 179:0 0 14.4G 0 disk
|__mmcblk0p1 179:1 0 43.9M 0 part /boot
|__mmcblk0p2 179:2 0 14.1G 0 part /
sda1是FAT(boot)分区
sda2是ext4文件系统(root)分区
挂在SD卡分区
root@raspberrypi:/home/linux-rpi-4.4.y # mkdir /mnt/fat32
root@raspberrypi:/home/linux-rpi-4.4.y # mkdir /mnt/ext4
root@raspberrypi:/home/linux-rpi-4.4.y # sudo mount /dev/sda1 /mnt/fat32
root@raspberrypi:/home/linux-rpi-4.4.y # sudo mount /dev/sda2 /mnt/ext4
安装modules
root@raspberrypi:/home/linux-rpi-4.4.y # sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/mnt/ext4 modules_install
如果把INSTALL_MOD_PATH设置为本地目录可以提取出对应的modules,最后把kernel and Device Tree blobs复制到SD卡:
备份原先的img文件
root@raspberrypi:/home/linux-rpi-4.4.y # sudo cp /mnt/fat32/$KERNEL.img /mnt/fat32/$KERNEL-backup.img
将zImage格式转换成树莓派需要的img格式,并复制到SD卡
root@raspberrypi:/home/linux-rpi-4.4.y # sudo scripts/mkknling arch/arm/boot/zImage /mnt/fat32/$KERNEL.img
root@raspberrypi:/home/linux-rpi-4.4.y # sudo cp arch/arm/boot/dts/*.dtb /mnt/fat32/
root@raspberrypi:/home/linux-rpi-4.4.y # sudo cp arch/arm/boot/dts/overlays/*.dtb* /mnt/fat32/overlays/
root@raspberrypi:/home/linux-rpi-4.4.y # sudo cp arch/arm/boot/dts/overlays/README /mnt/fat32/overlays/
卸载SD卡分区
root@raspberrypi:/home/linux-rpi-4.4.y # sudo umount /mnt/fat32
root@raspberrypi:/home/linux-rpi-4.4.y # sudo umount /mnt/ext4
*** 升级内核的另一个方法是将img文件复制到相同目录下,使用不同的文件名,如kernel-myconfig.img,然后修改boot目录下的config.txt文件,
加入:kernel=kernel-myconfig.img,最后将SD卡插入树莓派启动系统。
升级后的系统版本
root@raspberrypi:~# uname -a
Linux raspberrypi 4.14.89-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 arm71 GNU/Linux
更多推荐
所有评论(0)