将树莓派系统从SD卡迁移到USB设备

Posted on Mon 09 January 2023 in howto

将树莓派4B的操作系统从SD卡迁移到U盘的过程:

  1. 更新系统

    sudo apt update && sudo apt full-upgrade -y

  2. 确认已安装了最新版EEPROM Bootloader

    sudo rpi-eeprom-update

    若输出显示“UPDATE AVAILABLE“则在命令中加入-a选项予以更新

    sudo rpi-eeprom-update -a

    更新完成后,重启系统。

  3. 编辑bootloader配置文件,设定启动设备顺序

    用命令 sudo -E rpi-eeprom-config --edit 查看 BOOT_ORDER 的内容。

    根据树莓派文档,BOOT_ORDER值的含义如下:

    Value Mode Description
    0x1 SD CARD SD card
    0x2 NETWORK Network boot
    0x3 RPIBOOT RPIBOOT
    0x4 USB MSD USB mass storage boot
    0xe STOP Stop and display error pattern.
    0xf RESTART Start again with the first boot order field.

    为使系统从U盘或插在USB #0接口上的硬盘/SSD上启动,设置

    BOOT_ORDER=0xf14

    意思是(数值从右向左解读):先试着从U盘启动(4),若不成功则尝试从SD卡启动(1),若再失败则重新尝试U盘(f)。

    保存修改并重新启动。由于此时仍未插上U盘,从U盘启动失败后,系统仍然从原先的SD卡启动。

  4. 将U盘插在树莓派USB #0接口上,用dmesg命令查看U盘的盘符,例如/dev/sda。

  5. 将原系统拷贝到新U盘

    注意:这个操作会抹掉U盘上所有内容

    再次确认U盘的盘符,再次确认U盘容量大于SD卡,用dd命令拷贝:

    sudo dd if=/dev/mmcblk0 of=/dev/sda bs=1024k

    等待一段时间(视乎SD卡容量及U盘的写入速度,可能会比较长时间)直到命令执行完毕。关机,移出SD卡,重新开机。

    如果一切顺利,系统应该会从U盘启动。

  6. 扩大根分区,充分利用U盘容量

    dd命令拷贝的结果,U盘上只使用了与SD卡容量大小的空间,并没有充分利用,因此需要扩大根分区。输入命令:

    sudo raspi-config

    选择 Advanced Options/Expand Filesystem,重启系统使更改生效。


参考文档: