怎样去从U盘启动你的树莓派3?
不再需要SD卡了,况且SD卡的寿命应该没有U盘的寿命久…
这个教程将引导你如何让你的树莓派3从USB存储设备启动,例如U盘。
这些功能是具有实验性的并且可能并不完全的在所有的U盘设备中工作。
USB启动模式的设置
Pi要从U盘启动,它必须要先允许在配置中的USB启动模式。允许这些配置需要特殊的start.el
和bootcode.bin
文件,它们能在rpi-update
的next
分支中安装上。
你需要一个安装在SD卡中的Raspbian系统,并且用它去启动树莓派,去这个网站
下载,并且在windows下用Win32DiskImager刻录,或者在Linux中用 dd刻录。
首先准备/boot目录中的启动选项文件(实验性的)
如果你的系统是raspbian lite,在使用这些命令之前你需要安装rpi-update:
1 | $ sudo apt-get update; sudo apt-get install rpi-update |
这个时候就把树莓派更新设置成了下一个分支。
用下面的代码开启USB启动模式:
1 | echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt |
这个命令输完之后,在/boot/config.txt
的文件中的最后一行加上了program_usb_boot_mode=1
。
重启树莓派sudo reboot
,再输入一下命令检查一下分支是否已经切换了。
1 | $ vcgencmd otp_dump | grep 17: |
只有输出为0x3020000a
才是正确的。
只要你愿意,你永远可以在/boot/config.txt去掉这一行program_usb_boot_mode=1(确保没有空行),然后你就依旧可以继续用SD卡中的系统了。
U盘的准备工作
现在已经开启从U盘启动了,在插入U盘之前需要做一些准备工作,将U盘分区,把原来的系统同步到U盘中,而不是重新下载系统刻录。源设备(SD卡)一般情况下是/dev/mmcblk0
,目的设备(U盘)一般是/dev/sda。
如果你搞混了,建议用以下命令确认一下。
1 | $sudo fdisk -l | grep sd |
然后使用 parted命令分区SD卡
1 | sudo parted /dev/sda |
如果正常,print之后应该是差不多的。
然后再创建boot和根文件系统
1
2sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
挂载目标文件系统,并且拷贝正在SD卡中运行的raspbian系统到里面去。
1 | sudo mkdir /mnt/target |
重建ssh keys
1 | cd /mnt/target |
编辑/boot/cmdline.txt
1 | sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt |
同样编辑一下fstab
1 | sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab |
最后卸载目标系统,关掉树莓派,再次开机的时候拔掉SD卡,就可以用U盘启动树莓派了。
1 | cd ~ |
仅仅只能在Pi3代使用
关于boot的代码只在BCD2837上有(也就是raspberry pi 3 这一代)。