Raspberry Pi是一款功能强大的多功能套件,能够执行各种项目,例如运行媒体中心以用作广播电台。但是它有一个明显的缺陷:无法从USB引导。
嗯,直到现在,就是这样。
如果您使用的是Raspberry Pi 3,那就是现在可以放弃从microSD启动,而从USB设备启动计算机。这可能是闪存棒,带有USB适配器的SSD,甚至是全尺寸的USB硬盘驱动器。这是一项重大的进展,因此让我们看一下如何设置Raspberry Pi 3从USB引导。
入门:安装Raspbian并添加新文件
最好要使用Raspbian的全新副本开始该项目,请下载最新版本(加载后我们将立即使用Raspbian Jessie。
登录(除非您已更改默认凭据),然后运行以下命令,这些命令将用新下载的替代文件替换默认的 start.elf
和 bootcode.bin
文件:
sudo apt-get updatesudo BRANCH=next rpi-update
此更新将两个文件传送到 / boot
目录中。下载文件后,继续使用以下方法启用USB启动模式:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
此命令将 program_usb_boot_mode = 1
指令添加到 config.txt
文件的末尾。
您需要重新启动完成后,请打开Pi。
下一步是检查OTP(一次性可编程存储器)是否已更改。使用以下命令进行检查:
vcgencmd otp_dump | grep 17:
如果结果代表地址 0x3020000a
(例如 17:3020000a
),那么到目前为止一切都很好。在此阶段,如果您希望从 config.txt
文件中删除 program_usb_boot_mode = 1
行,则应能够。 Pi现已启用USB引导功能,您可能希望在另一个Raspberry Pi 3中使用相同的microSD卡,并使用相同的映像,因此删除该行是个好主意。
这很容易通过在nano中编辑 config.txt
来完成:
sudo nano /boot/config.txt
删除或注释掉相应的行(带有#)。
下一步,将格式化(或准备删除)的USB记忆棒连接到Raspberry Pi 3的备用端口中。插入后,我们将继续进行以下操作:
使用 lsblk
命令识别USB记忆棒。
SD卡是 mmcblk0
,而USB记忆棒是 sda
(格式化分区是 sda1
)。如果连接了其他USB存储设备,则USB记忆棒可能是sdb,sdc等。在建立了USB记忆棒的名称的情况下,卸载磁盘,然后使用分区工具创建100 MB分区(FAT32)和Linux分区:
sudo umount /dev/sdasudo parted /dev/sda
在(分开的)提示符下,输入:
mktable msdos
您可能会被告知该磁盘已被占用。如果是这样,请选择忽略,然后注意警告信息,指示您磁盘上的数据将被破坏。如前所述,该磁盘应该是您希望删除或格式化的磁盘,因此请对此表示同意。
如果此处遇到任何问题,则可能需要切换到桌面(手动,或通过VNC)并确认已卸载磁盘,然后在窗口命令行中输入mktable msdos命令。
继续执行以下操作:
mkpart primary fat32 0% 100Mmkpart primary ext4 100M 100%print
这将输出一些内容有关磁盘和新分区的信息。在创建启动文件系统和根文件系统之前,请先使用Ctrl + C退出。
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1sudo mkfs.ext4 /dev/sda2
然后,您需要先安装目标文件系统,然后再将当前的Raspbian操作系统复制到USB设备。
sudo mkdir /mnt/targetsudo mount /dev/sda2 /mnt/target/sudo mkdir /mnt/target/bootsudo mount /dev/sda1 /mnt/target/boot/sudo apt-get update; sudo apt-get install rsyncsudo rsync -ax --progress / /boot /mnt/target
最后一个命令是复制所有内容的最终命令,因此需要一段时间才能完成。是时候煮咖啡了!
Next, you need to refresh the SSH host keys, to maintain the connection with the reconfigured Raspberry Pi after an imminent reboot:
cd /mnt/targetsudo mount --bind /dev devsudo mount --bind /sys syssudo mount --bind /proc procsudo chroot /mnt/targetrm /etc/ssh/ssh_host*dpkg-reconfigure openssh-serverexitsudo umount devsudo umount syssudo umount proc
请注意,在sudo chroot(上面的第五个命令)之后,您将切换到root,因此用户将从 pi @ raspberrypi 更改为< strong> root @ raspberrypi ,直到您在第8行输入退出。
为从USB重启做准备!
在您的Raspberry Pi出厂之前,还需要整理一些其他信息。准备从USB启动。我们需要使用以下命令从命令行再次编辑 cmdline.txt
:
类似地,需要对fstab进行以下更改:
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab
在关闭Pi之前,您已经准备好卸载文件系统:
cd ~sudo umount /mnt/target/bootsudo umount /mnt/targetsudo poweroff
请注意,这使用了新的 poweroff
该命令可以替代关机
。
当Pi关机时,请先断开电源,然后再卸下SD卡。接下来,重新连接电源-Raspberry Pi现在应该从USB设备启动!要获得有关Pi的更多帮助,请查看如何在Raspberry Pi 3上设置Wi-Fi和蓝牙。
准备尝试Raspberry Pi 4?查看其功能和规格。
标签: Raspberry Pi USB