树莓派的树莓SD卡读写寿命是个老问题,尤其当你在上面跑数据库或者频繁写入日志的派u盘启时候。我见过一块32G的动教卡在连续运行三个月后直接变成只读——数据全没了,连重挂载都救不回来。树莓所以把系统装进U盘,派u盘启让SD卡退役,动教几乎是树莓每个重度用户的必经之路。
U盘启动的派u盘启原理很简单:树莓派的BootROM在通电后会按固定顺序寻找启动设备,默认先看SD卡,动教再看USB。树莓但有个前提——树莓派2B以前的派u盘启型号(包括初代和Zero)根本不支持USB启动,你得用SD卡引导一次,动教再把引导文件拷到U盘上。树莓3B、派u盘启3B+、动教4B和Zero 2 W则可以直接从U盘启动,前提是EEPROM里的引导顺序没有被锁死。
先说最省事的做法,用树莓派官方的Raspberry Pi Imager。插上U盘,打开Imager,选择操作系统时别直接点“Raspberry Pi OS”,而是点右下角的齿轮图标(或者按Ctrl+Shift+X),里面有个“允许USB启动”的选项,勾上。这步会往U盘的引导分区里写一个特殊的配置文件,告诉BootROM“可以从这里启动”。写入完成后,拔掉SD卡,把U盘插进树莓派,通电。如果看到彩虹屏然后进入系统,恭喜,成了。
但你要是手头只有一张已经刷好系统的SD卡,懒得重新下载镜像,也有办法。把U盘格式化成FAT32,挂载到树莓派上,然后把SD卡boot分区里的所有文件(注意是boot分区,不是根分区)拷贝到U盘根目录。接着编辑U盘里的cmdline.txt,找到“root=PARTUUID=xxxx”那一段,改成“root=/dev/sda2”。这里有个坑:如果U盘不是被识别为sda而是sdb(比如你同时插了多个USB存储设备),系统会启动失败。解决方法是拔掉其他USB设备,只留U盘。
还有个更硬核的玩法——直接烧录整盘镜像到U盘。用dd命令把树莓派系统的img文件写到U盘里,跟写SD卡一模一样。这样U盘上既有boot分区又有根分区,完全独立。但要注意,U盘的4K对齐问题和SD卡不同,某些廉价U盘的随机读写性能惨不忍睹,开机可能要等三十秒以上。我试过用一块十年前的USB 2.0 U盘,进入桌面后打开浏览器都要卡五秒,后来换了个USB 3.0的固态U盘(比如闪迪CZ880),体验才跟SD卡持平。
最后说个容易忽略的细节:树莓派4B的USB启动对电源要求更高。U盘启动时,USB口的电流负载比SD卡大得多,特别是那些不带外接电源的便携硬盘。我遇到过开机时U盘灯闪两下就灭,然后反复重启的情况,最后换了个5V 3A的电源才稳定。如果你用的是带供电的USB Hub,记得把Hub的电源也接上。
U盘启动的好处不只是延长SD卡寿命。系统跑在U盘上,你随时可以把U盘拔下来插到电脑上,直接访问里面的文件——SD卡读卡器还得额外带。而且U盘容量通常比SD卡大,装个满配的桌面环境加一堆软件,32G绰绰有余。缺点也明显:U盘工作温度比SD卡高,长时间运行后摸起来烫手,建议选金属外壳的款式帮助散热。
别迷信“U盘启动一定比SD卡快”。实际测试中,好的A2级SD卡(比如三星EVO Plus)顺序读取能到90MB/s,而便宜的USB 3.0 U盘只有50MB/s。真正拉开差距的是随机小文件读写,SD卡天生劣势,U盘好一些,但也不至于天翻地覆。如果你追求极致性能,直接上NVMe SSD加USB转接卡,那个才是质的飞跃。
对了,万一你做完U盘启动后,树莓派还是从SD卡启动——别急着怀疑U盘坏了。检查一下EEPROM版本,树莓派4B的2020年之前的EEPROM默认不启用USB启动,需要先更新EEPROM。命令是sudo rpi-eeprom-update,更新完重启,再试试看。