新玩意树莓派

树莓派Raspberry Pi 4B如何配置USB启动(U盘启动)

众所周知,SD卡速度太慢。而且树莓派4有USB3.0接口,搞个NVME SSD,速度简直起飞。

在树莓派3B时代,设置U盘启动只需要设置program_usb_boot_mode=1,但在树莓派4中并不合适,Pi4使用与早期型号不同的引导加载程序。它存储在电路板上的eeprom中,而不是存储在芯片中。但根据树莓派官网说明,可能会在后期给树莓派4提供类似的引导方法。

树莓派Raspberry Pi 4B如何配置USB启动(U盘启动)
默认并不支持4B

不能设置OTP位,但是可以使用旧的办法,通过SD卡引导位于U盘中的系统。

1、准备烧录好系统的SD卡

建议采用目前官网的系统,我测试了树莓派爱好者基地的64位Debain,没有启动成功。

2、准备烧录好系统的SSD或者U盘

烧录与U盘同样的系统,烧录方式和烧录SD卡相同。

3、将SD和U盘都插到树莓派上面,开机。

4、运行blkid命令

sudo blkid



显示以下结果:
/dev/mmcblk0: PTUUID="34bb5735" PTTYPE="dos" 
/dev/mmcblk0p1: LABEL="RASPI" UUID="B8F2-1311" TYPE="vfat" PARTUUID="34bb5735-01" 
/dev/sda1: LABEL_FATBOOT="boot" LABEL="boot" UUID="3E5E-CA3A" TYPE="vfat" PARTUUID="698e33bd-01" 
/dev/sda2: LABEL="rootfs" UUID="3122c401-b3c6-4d27-8e0d-6708a7613aed" TYPE="ext4" PARTUUID="698e33bd-02"

如果遇到SD卡和外置存储器PARTUUID相同的情况,请查看第五步。

其中/dev/mmcblk0p1和2为SD卡,以及sda1和2为U盘或者SSD分区。重点需要的是sda2中的PARTUUID。

如下所示:

/dev/sda2: LABEL=”rootfs” UUID=”3122c401-b3c6-4d27-8e0d-6708a7613aed” TYPE=”ext4″ PARTUUID=”698e33bd-02″

5、编辑/boot/cmdline.txt

当SD卡和U盘PARTUUID不同的情况下,修改cmdline.txt。如果PARTUUID相同,请跳过修改cmdline.txt(都是一样的,还修改什么),然后查看下方的第二种方案。

第一种方案: PARTUUID不同的替换方法(默认)

首先进行备份原始配置文件

sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak

然后在进行编辑

sudo nano /boot/cmdline.txt

注意替换里面的 PARTUUID

替换前: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=af1800e7-01 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
替换后: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=698e33bd-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

修改完成之后重启树莓派。可能第一次启动要点时间,多等等。还有就是因为树莓派USB集线器的问题,某些U盘或者SSD转USB扩展板不支持,可以通过第八点查看自己的USB设备。USB3.0具体支持信息可以查看官网链接

第二种方案 :PARTUUID相同的替换方法

注意!注意!注意!

树莓派官方最新的系统(20200213)使用相同的PTUUID/PARTUUID创建所有SD卡和USB设备。直接导致了所有设备的PARTUUID都是相同的,真的是一脸懵逼。

如果看到所有的PARTUUID都是相同的话,就不用编辑cmdline.txt文件了。

直接在Shell中执行:

sudo fdisk /dev/mmcblk0

然后输入‘d’,再选择2,删除第二分区之后,输入‘w’。保存退出之后重启树莓派。

当系统启动之后执行以下命令:

sudo fdisk /dev/sda

然后输入‘d’,再选择1,删除第一分区之后,输入‘w’。保存退出之后重启树莓派。 此时内存卡中只有个启动分区,外置储存设备中只有rootfs系统分区了。

小心,切勿选错了。

然后直接跳过第六步,进行第七步扩容操作。

6、更新fstab

重启后可以通过以下命令查看是否成功。

findmnt -n -o SOURCE /

显示/dev/sda2则设置成功。

然后输入:

sudo nano /etc/fstab


显示如下:

proc                  /proc           proc    defaults          0       0
PARTUUID=698e33bd-01  /boot           vfat    defaults          0       2
PARTUUID=698e33bd-02  /               ext4    defaults,noatime  0       1

将boot分区PARTUUID替换为内存卡的PARTUUID,启动后默认挂载的是外置存储器中的引导分区,尽管这个分区并没有用,所以要替换为内存卡中的引导分区PARTUUID,因为我们使用的是内存卡里面的引导分区。

内存卡引导分区可以通过命令sudo blkid查看。

/dev/mmcblk0p1: LABEL="RASPI" UUID="B8F2-1311" TYPE="vfat" PARTUUID="34bb5735-01"

7、调整文件系统大小

已此方式启动的系统默认是不会自动扩展系统分区大小,需要手动扩展。

sudo fdisk /dev/sda

显示如下:
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: 2115
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0x0634f60c
Device     Boot  Start     End Sectors  Size Id Type
/dev/sda1         8192  532480  524289  256M  c W95 FAT32 (LBA)
/dev/sda2       540672 4292607 3751936  1.8G 83 Linux

/dev/sda2(rootfs)的起始值是54067,下面会用到。接下来,需要删除并重新创建更大的分区。如果你在这个命令中犯了任何错误,只需按q关闭fdisk即可。更改不会写入磁盘。此处一定要小心,搞错了以上的功夫可能就全部白费了。

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): n
Partition type
    p   primary (1 primary, 0 extended, 3 free)
    e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (532481-500118191, default 589815): 540672 (enter the start value exactly as it was, the default will be wrong)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (540672-500118191, default 500118191): (press enter to accept default which is the full disk)
Created a new partition 2 of type 'Linux' and of size 238.2 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: n (不删除签名)
Command (m for help): w

以此按照以上命令输入就行了。

然后重启系统。重启系统后继续输入resize2fs命令扩展空闲空间:

sudo resize2fs /dev/sda2

显示如下:
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 15
The filesystem on /dev/sda2 is now 62447190 (4k) blocks long.

完成系统磁盘分区扩展。查看可以通过df命令:

df -h

可以使用以下命令进行测速(需要联网下载脚本):

curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

我用的是一块NVME扩展板,然后固态用的是傲腾16G,30块买的,没啥用。装个树莓派系统还是美滋滋,4K性能爆表。

树莓派Raspberry Pi 4B如何配置USB启动(U盘启动)

8、查看当前USB总线

lsusb


显示如下:
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 152d:0562 JMicron Technology Corp. / JMicron USA Technology Corp. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0000:3825  
Bus 001 Device 003: ID 04d9:1830 Holtek Semiconductor, Inc. 
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

其中第二行“Bus 002 Device 002: ID 152d:0562 JMicron Technology Corp. / JMicron USA Technology Corp. ”即为外置储存设备。

9、完成,晒照

树莓派Raspberry Pi 4B如何配置USB启动(U盘启动)
树莓派Raspberry Pi 4B如何配置USB启动(U盘启动)

 

(END)

文章源自:https://www.quarkbook.com/?p=638

作者:Afirefish