您通常从(微型)SD 卡启动 Raspberry Pi。但有时那不是那么方便。最近,小型机家族的开发者增加了两种新的启动模式:USB 和网络。在 USB 模式下,您可以从通过 USB 连接的 USB 记忆棒或硬盘驱动器上的操作系统启动 Raspberry Pi。
使用网络模式,您甚至不需要本地存储设备:Raspberry Pi 通过网络从另一台计算机下载其操作系统。通过这种方式,您还可以通过中央计算机上的操作系统轻松启动多个 Raspberry Pi。如果您更新该中央操作系统,您的所有 Raspberry Pi 都将自动运行最新版本。
01 实验启动模式
新的启动模式是为 Raspberry Pi 3 开发的实验性启动模式。为此所需的启动代码位于 BCM2837:Raspberry Pi 3 的处理器中。如果您有 Raspberry Pi 1、2 或 0,您也可以使用新的引导模式,但要以一种迂回的方式:用 fat32 格式化 SD 卡,将文件 bootcode.bin 复制到卡上,然后从这张卡引导你的 Pi。如果没有 SD 卡,这可能不完整,但您可以从 USB 或网络启动您的 Pi。
02 USB 可能出现的问题
从 USB 启动并不总是有效。例如,某些 U 盘打开速度太慢。外部硬盘驱动器也不总是在两秒钟内响应,默认情况下引导代码等待的时间。您可以将该超时增加到五秒,但有些驱动器甚至还没有准备好。其他 U 盘对通信协议有非常具体的要求,Raspberry Pi 3 启动代码(限制为 32 kB ROM)不满足这些要求。所以你可能需要尝试一些光盘。
03 固件升级
我们假设您在 Raspberry Pi 上运行 Raspbian。如果没有,请下载一个映像并将其放在带有 Win32DiskImager 程序的 SD 卡上,然后从中启动 Pi。首先,刷新所有存储库 sudo apt-get 更新.如果你运行的是 Raspbian Lite(没有图形界面的版本),首先运行 sudo apt-get install rpi 更新 因为 Raspbian 的最小版本没有 rpi-update 包。然后从'更新固件带有 sudo BRANCH=next rpi-update 的 next' 分支.
04 启用 USB 模式
使用以下命令打开引导配置文件 须藤纳米 /boot/config.txt 并添加命令 program_usb_boot_mode=1 到最后。使用 Ctrl+O 保存文件并使用 Ctrl+X 退出 nano。重启你的 Pi 须藤重启,并在重新启动后,确保启用了 USB 模式。你用命令来做到这一点 vcgencmd otp_dump | 17:,它应该返回一个以 0x3020000a.然后再次打开启动配置文件,删除命令 program_usb_boot_mode=1,因此您不会意外地在插入此 SD 卡的另一个 Pi 上启用 USB 启动模式。
05 USB 存储分区
现在将您的 USB 存储设备连接到您的 Pi。将此设备分区 须藤分开 /dev/sda.创建一个新的分区表 mktable msdos 并确认 是的 您要销毁磁盘上的所有数据。然后创建一个 100 兆字节的 fat32 分区 mkpart 初级 fat32 0% 100M 和一个 ext4 分区,它占用磁盘的其余部分 mkpart 主要 ext4 100M 100%.通过打印查看更改并关闭与 退出.然后使用以下命令创建引导文件系统 须藤 mkfs.vfat -n BOOT -F 32 /dev/sda1 和根文件系统 须藤 mkfs.ext4 /dev/sda2.
06 树莓派副本
安装程序 rsync sudo apt-get install rsync.然后创建一个新目录 须藤 mkdir /mnt/usb 并在其上挂载 USB 存储的 ext4 文件系统 须藤挂载 /dev/sda2 /mnt/usb/.然后创建一个引导目录 须藤 mkdir /mnt/usb/boot 并在其上挂载引导文件系统 须藤挂载 /dev/sda1 /mnt/usb/boot/.现在将您正在运行的 Raspbian 系统从 SD 卡复制到 USB 存储设备上的文件系统。你用命令来做到这一点 须藤 rsync -ax --progress //boot /mnt/usb.请耐心等待,因为这可能需要一段时间。
07 克罗特
USB 存储设备现在包含您正在运行的 Raspbian 的副本,但并非所有内容都应该相同。例如,新系统需要不同的 ssh 密钥。因此,使用 cd /mnt/usb 并挂载一些特殊的文件系统 sudo mount --bind /dev dev, sudo mount --bind /sys sys 和 sudo mount --bind /proc proc.然后输入一个 铬合金 (改变根)与 须藤 chroot .. 您现在执行的所有命令都将在 U 盘上的系统中执行,不再在 SD 卡上的系统中执行。
08 新的 ssh 密钥
您现在是 chroot 中的 root 用户。首先,删除现有的 ssh 密钥,因为它们是我们从 SD 卡系统复制的密钥。你这样做 rm /etc/ssh/ssh_host*.然后通过重新配置 OpenSSH 服务器来生成新的 ssh 密钥 dpkg-reconfigure openssh-server.然后退出 chroot 出口.您现在执行的所有命令都将在 SD 卡上的系统中再次执行。然后卸载特殊文件系统 须藤卸载开发,须藤卸载系统 和 须藤卸载过程.
09 自定义根文件系统
现在确保 Pi 使用的是 USB 存储设备上的根文件系统,而不是 SD 卡上的根文件系统。为此,您修改文件 /启动/cmdline.txt 继续 须藤 sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/usb/boot/cmdline.tx吨。在文件中做同样的事情 /etc/fstab: sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/usb/etc/fstab.然后使用 cd 转到您的主目录,使用以下命令从 USB 存储中卸载文件系统 须藤卸载 /mnt/usb/boot 和 须藤卸载 /mnt/usb 并关闭 Pi 须藤关机.拔下电源线,取出 SD 卡并重新插入电源线。如果一切顺利,您的 Pi 现在将从您的 USB 存储设备启动。