树莓派3添加了一个新特性:允许USB启动。现在我们既可以从SD卡启动,也可以从USB启动。USB设备可以是U盘,带USB适配器的SSD硬盘,甚至是移动硬盘。
本文介绍怎么从U盘启动树莓派3。
1、安装 Raspbian
首先在SD卡中安装最新的Raspbian(目前版本是Jessie)操作系统;就是正常安装,安装步骤就不说了。参考安装文档:https://www.raspberrypi.org/documentation/installation/
安装完成之后,启动树莓派,使用SSH远程登录进Raspbian。
执行更新命令:
sudo apt-get update
sudo BRANCH=next rpi-update
上面命令会更新/boot目录下默认的start.elf和bootcode.bin文件。
开启USB启动模式:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
重启树莓派。
查看OTP:
vcgencmd otp_dump | grep 17:
输出信息应该类似 17:3020000a。现在树莓派已经开启USB模式,你可以把/boot/config.txt文件中的program_usb_boot_mode=1一行移除掉。
2、把系统安装到U盘
把U盘插入到树莓派,使用如下命令查看设备名:
lsblk
上图中,sda设备是U盘,分区sda1。
卸载U盘:
sudo umount /dev/sda
创建一个100M的FAT32分区和一个Linux分区。U盘数据会丢失,注意备份。
sudo parted /dev/sda
(parted) # 进入到parted命令行,help查看帮助
(parted) mktable msdos # 分区表
如果有警告信息,可以忽略(Ignore->Yes)。
(parted) mkpart primary fat32 0% 100M # 分区
(parted) mkpart primary ext4 100M 100%
输出分区信息:
(parted) print
分区完成之后,Ctrl + C退出。
创建boot文件系统和root文件系统:
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
把当前Raspbian系统拷贝到USB设备:
sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/ # 挂载分区
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/ # 挂载分区
sudo apt-get update
sudo apt-get install rsync # rsync命令用于同步数据
sudo rsync -ax --progress / /boot /mnt/target # 把系统拷贝到U盘
刷新SSH密钥:
cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc
编辑cmdline.txt文件:
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
编辑fstab:
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab
卸载挂载的文件系统,然后关闭树莓派:
cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff # poweroff是新命令,以前是用shutdown
3、从U盘启动
关闭树莓派之后,断掉电源->拔出SD卡->从U盘启动树莓派。