了解如何在Raspberry Pi 4上通过USB引导Ubuntu Server20.04。SD卡非常缓慢,并且容易出现数据损坏和故障。 通过升级到SSD驱动器来解决所有这些问题!
嘿伙计。在今天的指南中,我将向您展示如何在Raspberry Pi 4上通过USB引导Ubuntu 20.04。
请记住,这将需要手动编辑文件并使用Raspberry Pi固件的master分支中的文件。另外,本指南还针对Linux和Mac用户量身定制。
因此,让我们开始吧。
更新固件以支持USB引导
首先,您需要确保Raspberry Pi 4支持USB Booting。为此,您必须在SD卡上安装Raspbian并更新固件。为此,请参考此视频。您将需要观看大约7:56左右他验证引导加载程序已更新的部分。如果您已经更新了引导加载程序,请跳至下一步。
下载64位版本的Ubuntu Server
现在,我们需要下载用于Raspberry Pi 4的64位版本的Ubuntu Server。然后,我们将使用Raspberry Pi Imager将映像刷新到SSD中。
访问Ubuntu Raspberry Pi下载页面,获取RP4的64位版本。
将镜像写入SSD
下载我们的映像后,我们需要安装Raspberry Pi Imager。访问“ Raspberry Pi下载”页面并将其安装在您的计算机上。
接下来打开成像器。单击“Choose OS”并找到您新下载的Ubuntu Server映像。之后,单击“Choose SD Card”,然后选择您的SSD硬盘。最后,单击“写入”,然后等待该过程完成。
在SSD上挂载系统引导分区
现在,我们需要在SSD驱动器上挂载系统引导分区,以进行一些更改。
sudo mkdir /mnt/ssdboot
sudo mount /dev/sdb1 /mnt/ssdboot
cd /mnt/ssdboot
解压内核
重要:每次ubuntu更新内核时,都必须重新运行此步骤。
首先,我们将把vmlinuz
文件解压缩到vmlinux
中。 这是因为当前不支持从压缩的64位arm内核启动。
找出压缩后的内容在图像中的起始位置。
od -A d -t x1 vmlinuz | grep '1f 8b 08 00'
期望结果 :
0000000 1f 8b 08 00 00 00 00 00 02 03 ec 5b 0f 74 54 e5
第一个数字字符串0000000
是要查找的位置。 在这种情况下,它位于镜像开头。
现在使用dd
提取数据,然后使用zcat
将其解压缩到文件中。 如果您的数字不是0000000
,请确保将其作为跳过值。
dd if=vmlinuz bs=1 skip=0000000 | zcat > vmlinux
更新config.txt以进行引导
现在我们有了未压缩的镜像,我们将要更新config.txt文件,以告诉Pi如何启动。
编辑config.txt
vim config.txt
首先注释掉所有[pi *]块。 注释掉该块及其选项。 应该是这样的。
#[pi4]
#kernel=uboot_rpi_4.bin
#max_framebuffers=2
#[pi2]
#kernel=uboot_rpi_2.bin
#[pi3]
#kernel=uboot_rpi_3.bin
在[all]部分中添加kernel=vmlinux
和initramfs initrd.img followkernel
。 剩下的一切都保持原样。
[all]
arm_64bit=1
device_tree_address=0x03000000
kernel=vmlinux
initramfs initrd.img followkernel
更新.dat和.elf文件
现在,我们需要在raspberrypi/firmware Github的master分支中将.dat和.elf文件更新为最新版本。
下载启动文件夹
访问上面的链接,并使用GitZip之类的文件下载文件夹。
下载Github文件夹
从下载的文件夹中复制文件
接下来,将所有.dat和.elf文件复制到启动文件夹中。覆盖所有文件。
cp ~/Downloads/firmware-/boot/*.dat ./
cp ~/Downloads/firmware-/boot/*.elf .
开机
现在您可以启动Raspberry Pi。 确保拔下SD卡。 从PC上卸载SSD。 将其插入Raspberry Pi并打开电源。
之后
如果您的DNS速度慢。 例如。 sudo apt更新真的很慢。 确保使用良好的名称服务器更新/etc/resolve.conf。
#nameserver 127.0.0.53
nameserver 1.1.1.1
nameserver 1.0.0.1
引用
https://www.raspberrypi.org/forums/viewtopic.php?t=275291#p1667965
https://www.raspberrypi.org/forums/viewtopic.php?f=131&t=268476#p1666154
https://community.home-assistant.io/t/error-native-usb-boot-without-sd-card-for-the-raspberry-pi4-ssd-boot/199888
https://github.com/raspberrypi/firmware/tree/master/boot
https://superuser.com/questions/298826/how-do-i-uncompress-vmlinuz-to-vmlinux
本文译自 https://eugenegrechko.com/blog/USB-Boot-Ubuntu-Server-20.04-on-Raspberry-Pi-4