问题描述
我试图在无头运行Ubuntu 20.04的RPi 4B上使用BerryGPS-IMUv3(https://ozzmaker.com/berrygps-berrygps-imu-quick-start-guide/)。安装BerryGPS-IMU时,它会阻止pi引导,原因可能是pi正在将数据流传输到pi并中断了引导过程。制造商的说明指出需要禁用串行控制台,但说明假定用户正在运行raspbian。
有人在Ubuntu 20.04上找到禁用串行控制台(但保持串行端口启用)的方法吗?我想我需要将启动延迟设置为“ -2”以忽略中断,但是我不确定如何通过ssh访问该设置。
解决方法
我遇到了类似的问题,并找到了 this 解决方案(使用 Raspberry Pi 4、Ubuntu 20.04 和 Adafruit Ultimate GPS HAT 进行测试)。正如您所说,这是关于在接收串行线路上的输入时阻止 U-boot 中断自动引导。不幸的是,这需要重新编译 U-boot 二进制文件。我在 RPi 本身上执行此操作,而不是通过每个链接进行交叉编译。
我的步骤如下:
-
安装依赖项:
apt-get install git make gcc gcc-aarch64-linux-gnu bison flex
(注意我需要将bison
和flex
添加到包中,因为没有它们构建失败,链接的答案中没有提到这一点) -
获取 U-boot 代码库:
git clone --depth 1 git://git.denx.de/u-boot.git && cd u-boot/
-
编辑 rip_4_defconfig:
vi configs/rpi_4_defconfig
添加行:
CONFIG_BOOTDELAY=-2
CONFIG_SILENT_CONSOLE=y
CONFIG_SYS_DEVICE_NULLDEV=y
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y
CONFIG_SILENT_U_BOOT_ONLY=y
Per the linked post
- 编辑 rpi.h:
vi include/configs/rpi.h
,修改本节以添加“silent=1\0”行
#define CONFIG_EXTRA_ENV_SETTINGS \
"dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
"silent=1\0" \
ENV_DEVICE_SETTINGS \
ENV_DFU_SETTINGS \
ENV_MEM_LAYOUT_SETTINGS \
BOOTENV
-
然后
make rpi_4_defconfig && make
-
重新定位 make 的二进制输出:
mv /boot/firmware/uboot_rpi_4.bin /boot/firmware/uboot_rpi_4.bin.bak
mv u-boot.bin /boot/firmware/uboot_rpi_4.bin
- 我认为这就是我在 Ubuntu 20.04 上启动 RPi 和 Adafruit GPS HAT 所做的一切。