USB存储设备启动树莓派

USB存储设备的系统安装
准备一个USB存储设备,我用的是U盘,硬盘应该也行。需要格式化,所以注意备数据的备份。

1
2
3
4
5
6
7
sudo parted /dev/sda  # 使用parted对U欧盘进行分区

(parted) mktable msdos # 创建msdos格式的分区表
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart primary fat32 0% 100M # 分 100M 格式成fat32
(parted) mkpart primary ext4 100M 100% # 剩下的全都格式成ext4

一般都是sda,不过分不清楚的话可以用 $sudo fdisk -l | grep sd查看。

创建BOOT 和root 文件系统

1
2
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2

创建文件挂载U盘

1
2
3
4
sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/

安装rsync

1
2
sudo apt-get update
sudo apt-get install rsync

将root和boot文件系统同步到U盘上去

1
sudo rsync -ax --progress / /boot /mnt/target

关于硬盘启动树莓派

系统启动主要依靠的是boot引导分区和根分区。所以在修改启动项的时候一定得修改sd目录下的cmd.txt
更改为

1
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

这样系统在启动的时候就会根据提示找sda2,然后再修改硬盘目录下的/etc/fstab

1
2
3
4
5
6
proc            /proc           proc    defaults          0       0
#PARTUUID=85ce4237-01 /boot vfat defaults 0 2
#PARTUUID=85ce4237-02 / ext4 defaults,noatime 0 1

/dev/sda1 /boot vfat defaults 0 2
/dev/sda2 / ext4 defaults,noatime 0 1

编辑 cmdline.txt文件,fstab文件

1
2
3
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2,"/boot/cmdline.txt

sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab

不过尝试了多次后发现这种方法似乎不正常,树莓派都不能正常启动。推荐使用下列方式:

编辑/boot/cmdline.txt文件,修改被引导分区,将root后的内容由原来的树莓派的分区变为root=/dev/sda1

1
2
3
4
5
6
7
8
9
10
11
12
vi /boot/cmdline.txt
root=
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

pi@raspberrypi:~ $ cat /etc/fstab
proc /proc proc defaults 0 0
#PARTUUID=72707770-01 /boot vfat defaults 0 2
#PARTUUID=72707770-02 / ext4 defaults,noatime 0 1
/dev/sda1 /boot vfat defaults 0 2
/dev/sda2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that

重启机器

1
sudo reboot

More

A :是否能在pi1 pi2 上使用

不能,因为关于boot的代码只在BCD2837上有(也就是raspberry pi 3 这一代)。

Tips :

最好所用的U盘比microSD卡的容量(准确来说是raspbian的文件系统容量)要大

因为网络原因出现过的一些问题

参考链接
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md
https://github.com/raspberrypi/documentation/blob/master/hardware/raspberrypi/bootmodes/msd.md
Youtube : https://www.youtube.com/watch?v=hxV3yrn8FK8