0%

树莓派4B使用USB/U盘启动

由于TF卡速写速度非常慢(大约20MB/s),是树莓派系统的一个性能瓶颈,对性能影响很大。如果能提升磁盘的读写速度,在密集IO的场景下,对树莓派系统的性能会有很大提升。

准备工作

  • 树莓派4B
  • TF卡
  • U盘一个

    树莓派4B已经支持USB3.0,下面的测试基于一款支持USB3.0的固态U盘:联想 128G TU100 Pro

速度测试

先看一下使用U盘启动后的速度测试:

1
2
3
4
5
6
7
8
9
10
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/output.img bs=4k count=256k
记录了262144+0 的读入
记录了262144+0 的写出
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.3061 s, 202 MB/s


pi@raspberrypi:~ $ dd if=/tmp/output.img bs=4k of=/dev/null
记录了262144+0 的读入
记录了262144+0 的写出
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.87018 s, 574 MB/s

从上面测试结果可以看出,写入速度大约200MB/s,读取速度超过500MB/s!

整体步骤

安装步骤其实非常简单:

  1. 安装树莓派系统到TF卡;
  2. 更新系统到最新版本;
  3. 更新系统固件
  4. 设置USB启动
  5. 把整个TF卡复制到U盘。
  6. 最后开机启动
  7. 磁盘分区(可选)

详细步骤

安装树莓派系统到TF卡

如果之前已经把系统安装到TF卡,这一步可以直接跳过,或者查看树莓派4B安装操作系统教程

更新系统到最新版本

执行以下命令更新系统,可能需要下载很久:

1
2
sudo apt update
sudo apt full-upgrade

更新系统固件

更新系统固件:

1
sudo rpi-eeprom-update -d -a

更新后,再执行sudo rpi-eeprom-update查看固件版本,固件的更新日期应该是2020年9月之后的。

设置USB启动

进入树莓派设置:

1
sudo raspi-config

然后依次选择:
6 Advanced Options A6 Boot OrderB1 USB Boot
最后保存设置(不用重启)。

把整个TF卡复制到U盘。

先把U盘插入树莓派,查看磁盘列表:

1
sudo fdisk -l

输出很多,关键部分如下:

1
2
3
4
5
6
...
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 sectors
...
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Disk model: 128GB thinkplus
...

从容量可以看出,TF卡是/dev/mmcblk0,U盘是/dev/sda。接下来使用dd命令把整个TF卡拷贝到U盘:

1
sudo dd if=/dev/mmcblk0 of=/dev/sda status=progress

大概十多分钟后,就复制完成了。

开机启动

树莓派关机后,把TF卡拔下来,插上U盘,开机即可。

默认是使用TF卡启动,使用TF卡启动失败时才会使用USB启动,所以这里需要把TF卡拔掉。或者把TF卡格式化后,无法从TF卡启动时,也会使用USB启动。

磁盘分区

使用USB启动后,使用df -h命令查看磁盘使用情况,发现只有16G:

1
2
3
4
5
6
7
8
9
10
pi@raspberrypi:/ $ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/root 15G 7.0G 6.8G 51% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 253M 54M 199M 22% /boot
tmpfs 383M 0 383M 0% /run/user/1000

这是因为使用dd命令复制TF卡到U盘时,把分区表也复制过去了,所以显示的分区和TF卡一样。剩下的存储空间需要创建新分区、格式化、挂载后才能使用。具体步骤请参考其它教程。