树莓派4B设置USB启动

树莓派4B设置USB启动千呼万唤始出来!官方在2020-05-15发布了一个4B的beta版EEPROM固件更新,这次更新终于增加了期待已久的USB引导功能,今天这个教程就来讲一下如何使用USB而脱离SD卡启动树莓派4B。

大家好,又见面了,我是你们的朋友全栈君。

千呼万唤始出来!官方在2020-05-15发布了一个4B的beta版EEPROM固件更新,这次更新终于增加了期待已久的USB引导功能,今天这个教程就来讲一下如何使用USB而脱离SD卡启动树莓派4B。

数据无价,本教程的操作有一定的风险,开始前请备份重要数据!!!

从零开始构建树莓派64位系统

前言

正式开始之前先说一下为什么4B的USB启动这么姗姗来迟。

要了解这个问题,我们先要了解一下4B之前的版本的启动流程,主要分为四个阶段:

  1. GPU读取芯片上一个ROM的内容并执行
  2. ROM中的程序挂载SD卡并加载第一个FAT分区上的bootcode.bin
  3. bootcode.bin从FAT分区加载start.elf
  4. start.elf从FAT分区加载kernel.img,然后唤醒CPU,CPU开始执行kernel.img

从这个流程中可以看到,第一阶段的BootLoader是从芯片上的ROM中读取的,ROM里的代码是出厂定制好的后期不能再改变。然而随着4B的硬件升级,USB被移到了PCIe总线,网卡也用了新的型号,再加上4B启动过程和SDRAM的设置远比之前的型号要复杂的多,继续使用集成在SoC ROM中的代码是有很大风险的,所以4B增加了一块EEPROM来解决这个问题,启动程序写入到EEPROM中来取代bootcode.bin的工作,启动程序的bug修复和新功能添加都方便了很多。

启动机制改动还是挺大的,所以USB启动姗姗来迟还是可以理解的。

关于EEPROM和4B启动流程的内容可以参考下面两篇文章:

更新eeprom

1、使用rpi-eeprom更新

最新的官方系统里已经集成了rpi-eeprom包来升级eeprom,官方github上有这个项目的源码,如果不是官方系统可以clone此项目来升级eeprom,项目地址是:https://github.com/raspberrypi/rpi-eeprom,里面包含升级脚本和固件。

三方系统(例如树莓派爱好者基地2.0系统)升级方法请看这里,这篇文章介绍官方系统的升级方法:

整个升级过程都需要root权限,如果你是用pi用户登录的,先执行sudo -i切换到root用户。

#升级系统软件包
apt update
apt upgrade

然后编辑/etc/default/rpi-eeprom-update文件,把内容改为FIRMWARE_RELEASE_STATUS="beta"

如果想用固件的默认配置直接执行rpi-eeprom-update -d -a,然后重启完成升级。

如果想修改eeprom的参数配置,请参考这里

重启后进入系统验证一下eeprom固件版本,执行rpi-eeprom-update,如果BOOTLOADER的版本在2020-05-15及以上就可以USB启动了。

2、卡刷更新

除了进系统使用rpi-eeprom刷新以外,还可以使用卡刷。
https://github.com/raspberrypi/rpi-eeprom/releases下载最新的发布版rpi-boot-eeprom-recovery-xxxx.zip,然后解压到一张FAT32格式的空SD卡中,注意,直接解压pieeprom.binpieeprom.sigrecovery.bin等文件到根目录下不能带文件夹,插卡上电,绿色LED快速闪烁,至少等待10S后eeprom就刷好了。卡刷的方法更简单,推荐使用。

准备启动介质

eeprom升级后要配合最新的BootLoader才能实现USB启动,而这个包目前在软件源中还没有更新,只能去github下载,地址:https://github.com/Hexxeh/rpi-firmware,打包下载后待用。

现在开始制作USB启动介质,如果想刷一个全新系统直接把镜像刷到U盘即可,如果想把当前SD卡上的系统迁移到U盘,可以使用这个脚本制作一个最小镜像(具体方法参考这里的后半部分),然后把镜像刷到U盘里。

刷好镜像,把U盘插到电脑上,解压上面下载的rpi-firmware包,把里面的fixup*.datstar*.elf文件拷贝到U盘覆盖原文件。

把SD卡从pi上取出,插上U盘就可以从U盘启动了。

镜像刷到移动硬盘也是可以的,但是如果硬盘里原来有数据,那么数据将会被清除,想保留硬盘数据又想用硬盘启动树莓派也是有办法的,具体方法看这里

最后放一张多分区移动硬盘启动的图
移动硬盘启动

南寒天一的博客

本文为原创文章,转载请联系博主获得授权。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TCP Flags标志位介绍[通俗易懂]

    TCP Flags标志位介绍[通俗易懂]传输控制协议(TransmissionControlProtocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40字节的可选数据字段组成。如下图所示:来自于https://www.geeksforgeeks.org1.源端口号(SourcePort):16bits,该字段标识发送方应用程序的端口号。2.目…

    2022年7月16日
    19
  • Mysql修改字段类型[通俗易懂]

    Mysql修改字段类型[通俗易懂]mysql修改字段长度altertablenewsmodifycolumntitlevarchar(130);altertable表名modifycolumn字段名类型;如:tplay_auser表里的sex字段将数据类型改为char长度为20altertabletplay_ausermodifycolumnsexchar(20)

    2022年4月29日
    52
  • phpMyAdmin安装配置教程「建议收藏」

    phpMyAdmin安装配置教程「建议收藏」phpMyAdmin就是一种MySQL的管理工具,安装该工具后,即可以通过Web形式直接管理MySQL数据库,不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者。一、我们从phpMyAdmin官网上下载该软件,然后将该软件压缩放置xampp目录下。​二、复制PHP文件config.sample.inc文件并改名为config.inc,并做如下修改:​注意:因为XAMPP包含了Apache、MySQL、PHP、PERL,它在安装时

    2022年5月31日
    31
  • armv6 armv7 armv7s架构的区别[通俗易懂]

    armv6 armv7 armv7s架构的区别[通俗易懂]arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛。 ARM处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。只有在目标设备上,才会执行设备对应的指令集。 ARMv6设备包括iPhone,iPhone2,iPhone3G以及第一代和第二代iPodTo

    2022年6月25日
    28
  • idea2021.5.2激活码【在线注册码/序列号/破解码】

    idea2021.5.2激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    69
  • 不要再问芝士和奶酪有什么区别了!一次解释清楚「建议收藏」

    不要再问芝士和奶酪有什么区别了!一次解释清楚「建议收藏」在西方,奶酪绝对是全民食物,无论男女老少,很多都是“没奶酪会死星人”。两位世界知名大佬都曾对它发表过经典言论,丘吉尔在二战时说,一个为世界提供300种以上奶酪的国家是不应该灭亡的。而戴高乐总统的看法则是:“要统治一个拥有600种奶酪的国家,是很困难的。”    但在中国,它的接受面好像还真没那么广,如果深究起来是有很多方面的原因,包括历史、地域、文化等,说起来也是太复杂,还有奶酪的

    2022年4月20日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号