怎样将3B系统升级到兼容3B+树莓派
本篇文章为大家展示了怎样将3B系统升级到兼容3B+树莓派,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联主营湄潭网站建设的网络公司,主营网站建设方案,重庆APP软件开发,湄潭h5重庆小程序开发公司搭建,湄潭网站营销推广欢迎湄潭等地区企业咨询
一、前言
树莓派使用的镜像比较旧了,可以通过三种方式进行升级。一种是本地下载编译升级,即Local build,还有一种采用交叉编译,第三种最简单,输入一条命令就可以升级。
下面主要讲第一种方式。
二、升级过程
1、目前的内核版本,使用 uname -a 查看
2、使用 sudo apt-get install git bc 安装必备软件
3、使用 git clone --depth=1 https://github.com/raspberrypi/linux 下载最新内核
4、使用如下命令进行编译前配置
cd linux
KERNEL=kernel7
make bcm2709_defconfig
5、make,共有三个东西需要make,这个过程会花费很少时间,同时为了避免出错,可以分别make.
1.make -j4 zImage
2.make -j4 modules
3.make -j4 dtbs
- 6、执行 sudo make modules_install 进行安装
- 7、依次使用如下命令拷贝
1.sudo cp arch/arm/boot/dts/*.dtb /boot/
2.sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
3.sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
4.sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
8、执行完上述步骤,不出错的话,重启后,内核应该就升级成功了。
三、升级情况
make的过程非常旧,如果不加参数 -j4 的话,编译需要好几个小时,加上参数使用 4核同时编译,编译速度明显加快。时间如下:
1.make -j4 zImage 34min
2.make -j4 modules 66min
3.make -j4 dtbs <1min
除去两个编译过程特别耗时外,其他的指令都很快完成。
四、错误及解决方法
可能出现的错误
如上执行完了所有步骤,并没有那一步出现错误。执行完步骤后查看版本号是没有变化的,重启后就无法网卡灯不闪烁,路由器看不到树莓派连接,SSH自然登陆不上。没有显示器,因此看不出系统是否启动,感觉应该是没有。
目前不知道是什么原因导致的。升级完成后,/boot目录下多了几个.dts文件,删除后试了不行。最新版的树莓派官方系统默认不开启SSH,需要在/boot目录下手动添加一个名为ssh的空白文件,添加了也不行。
拷贝升级前的/boot文件夹内容进行替换后,可以连上树莓派,查看版本号并没有更新。
解决方法
出现上面这个情况的原因是树莓派无法boot,bootbin和升级后的内核并不兼容,也就是说原有的旧的bootbin不能boot新的内核。
可以使用新版本的固件文件替换。代码在树莓派github仓库的firmware项目下。具体的替换有三个,如下:
1bootcode.bin
2fixup.dat
3start.elf
将新版本的这三个文件拷贝到/boot目录下替换掉原有的文件,便可以启动了。
五、第二种方式
第二种方式是使用的交叉编译,宿主机是搭建在VM虚拟机里的一个ubuntu。具体的步骤可以看官网的文档,交叉编译的工具在树莓派github仓库tools项目中。
编译的原理都差不多,也可以使用menuconfig来自定义编译的内核。由于虚拟机的ubuntu也仅仅只分配了一个CPU核,实际的编译效果和树莓派四核编译时间虽有减少,但也不是很多。
编译完成之后见内存卡插入电脑,挂载进ubuntu里,拷贝新编译好的内核和模块进去,便可。若出现不开机的情况,和上面提到的错误类型是一致的。也就是固件和内核不兼容,比如说我这里使用内核4.1,升级到最新的内核4.9之后就出现这个问题,同时升级固件就不会。
六、第三种方式
使用命令升级,最简单也不会出错。
sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel
上述内容就是怎样将3B系统升级到兼容3B+树莓派,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
网站题目:怎样将3B系统升级到兼容3B+树莓派
URL网址:http://hbruida.cn/article/gosigd.html