前不久8G内存版本的树莓派4上市销售了,Firmware也支持从USB存储介质引导了(Stable版的bootloader在2020年6月15日已经推出了)
那还等什么,8G大内存+USB3.0 SSD的树莓派4,它不香吗?
图中:树莓派4代8G版 + X872 (SSD) + X735 (电源) + X857-C1 (机箱)
SSD2USB,我选择了Geekworm的 X872 转换板 (内建 USB 3.1 Gen2 to PCIe Gen3x2 10Gb/s 桥接控制器),有了它,我们可以把高性能的NVME M.2 SSD硬盘用在树莓派4代上:
组装完毕,我们的攻略就开始了:
常规操作,使用烧好最新版本Raspberry Pi OS的SD卡启动树莓派
常规操作,各种升级
sudo apt updatesudo apt full-upgradesudo rpi-updatesudo reboot sudo apt install rpi-eeprom
修改
/etc/default/rpi-eeprom-update
FIRMWARE_RELEASE_STATUS="critical"
把"critical"改成"stable"
用最新的稳定版bin文件烧写eeprom
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-06-15.bin
使用vcgencmd查看更新后的bootloader
pi@raspberrypi:~ $ vcgencmd bootloader_versionJun 15 2020 14:36:19version c302dea096cc79f102cec12aeeb51abf392bd781 (release)timestamp 1592228179pi@raspberrypi:~ $ vcgencmd bootloader_config[all]BOOT_UART=0WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000ENABLE_SELF_UPDATE=1DISABLE_HDMI=0BOOT_ORDER=0xf41 (4表示从usb启动,1表示从sd卡启动)
使用rpi-imager把最新的Raspberry Pi OS系统镜像到X872上的SSD中。直接在树莓派系统里烧写就行了,省得折腾。
烧写完成后,一定要把当前SD卡中/boot目录下所有的.elf和.dat文件覆盖拷贝到刚烧好的SSD中的/boot目录中。
关机,取出SD卡,启动树莓派,系统从SSD引导加载,搞定!
据说USB3.0高速数据传输会影响2.4G WIFI信号,不过现在大家应该都用5G WIFI了,所以这应该不是问题。
读写性能测试:
!!!独家秘籍 !!!
解决X872在树莓派4重启后不可用,必须拔插USB连接桥的问题!
这应该是吃X872板子螃蟹的人必然会遇到的坑,重启以后USB设备就找不到了,必须拔插一下USB连接桥,唉,差点放弃。
观察发现重启时有条打印信息:
Reset USB port-power 500ms
下意识判断应该是USB口断电恢复的时间过短,导致X872板子“反应不过来,不能正常初始化”
去GitHub上试着提了个issue,没想到工程师居然马上就回复了,这才知道正好在新版的firmware(20200615)中,是可以通过修改 USB_MSD_PWR_OFF_TIME 来延长USB口断电恢复时间(默认500ms)
用下面的方法修改一下新版firmware(20200615)的配置,修改USB_MSD_PWR_OFF_TIME=1000(延长USB口断电恢复时间至最大值1000ms)
X872重启挂掉的问题就解决了!!!
修改firmware:
pi@raspberrypi:~/newfirmware $ cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-06-15.bin ./pieeprom.binpi@raspberrypi:~/newfirmware $ rpi-eeprom-config pieeprom.bin > bootconfig.txtpi@raspberrypi:~/newfirmware $ cat bootconfig.txt [all]BOOT_UART=0WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000ENABLE_SELF_UPDATE=1DISABLE_HDMI=0BOOT_ORDER=0xf41pi@raspberrypi:~/newfirmware $ vi bootconfig.txt pi@raspberrypi:~/newfirmware $ cat bootconfig.txt [all]BOOT_UART=0WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000ENABLE_SELF_UPDATE=1DISABLE_HDMI=0USB_MSD_PWR_OFF_TIME=1000BOOT_ORDER=0xf41pi@raspberrypi:~/newfirmware $ rpi-eeprom-config --out pieeprom-new.bin --config bootconfig.txt pieeprom.bin pi@raspberrypi:~/newfirmware $ rpi-eeprom-config pieeprom-new.bin [all]BOOT_UART=0WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000ENABLE_SELF_UPDATE=1DISABLE_HDMI=0USB_MSD_PWR_OFF_TIME=1000BOOT_ORDER=0xf41pi@raspberrypi:~/newfirmware $ sudo rpi-eeprom-update -d -f ./pieeprom-new.binBCM2711 detectedVL805 firmware in bootloader EEPROMBOOTFS /boot*** INSTALLING ./pieeprom-new.bin ***BOOTFS /bootEEPROM update pending. Please reboot to apply the update.pi@raspberrypi:~/newfirmware $ vcgencmd bootloader_config[all]BOOT_UART=0WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000ENABLE_SELF_UPDATE=1DISABLE_HDMI=0USB_MSD_PWR_OFF_TIME=1000BOOT_ORDER=0xf41pi@raspberrypi:~/newfirmware $ sudo reboot
相关资源:
关于树莓派4的boot EEPROM的官方文档:
https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
官方rpi-eeprom的GitHub:
https://github.com/raspberrypi/rpi-eeprom