在Raspberry Pi计算模块上启动Alpine Linux

在我们为客户做的项目中,我们使用树莓派计算模块,以及一个定制的计算模块载体板(称为 PCCB - Pi控制载体板),它提供RS485、CAN、RS232、LAN、USB和一个用于输入电压为6-24V的降压装置。 树莓派嵌入式开发,请与我们联系.与我们的初步对话对你来说是免费的,并可能提供有价值的见解和想法)。

作为操作系统,我们决定使用 阿尔卑斯山Linux.由于它的只读、RAM驻留的特性,它是一个完美的嵌入式、持久的解决方案,希望在闪存上有所作为。

PCCB提供了从SD卡启动的可能性(使用计算模块Lite),以及从 "普通 "计算模块的内置eMMC闪存启动。

虽然从SD卡启动没有问题,但当试图从eMMC闪存启动时,我们最初遇到了问题。

正如你可能知道的,Alpine Linux(默认情况下)完全驻留在SD卡的FAT分区上。

形象

问题:屏幕一直是黑的,ACT指示灯闪烁7次

用简单地将SD卡上使用的文件复制到eMMC的方法(在Windows上使用Raspberry Pi的启动工具rpiboot,挂载计算模块的eMMC),计算模块没有启动。

它显示一个黑色的屏幕,ACT LED闪烁七次,停顿一下,然后再次闪烁七次。

咨询 本页在elinux.org上,我们可以看到kernel.img没有被找到。Raspberry Pi boot loader无法找到内核,因此无法启动它。

屏幕一直是黑色的,因为飞溅的屏幕通常是禁用的。 config.txt 与Alpine Linux一起运送的(disable_splash=1),否则你会得到一个彩虹屏。

解决办法:将内核和initramfs移到主文件夹中。

显然,Raspberry Pi启动加载器链在访问eMMC闪存和SD卡的子文件夹中的文件的能力上存在差异。

因此,解决办法是把内核移到eMMC闪存FAT分区的toplevel/"root "文件夹中。(在Alpine Linux上,内核通常是在 开机 子目录)。

编辑 config.txt 来说。

disable_splash=1
boot_delay=0
gpu_mem=64
[pi2]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[pi3]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[pi3+]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[全部]
包括usercfg.txt

将内核和initramfs移到eMMC闪存的顶部文件夹。

形象

注意:我们创建了一个自定义版本的initramfs,为我们位于子文件夹pi3g中的自定义软件包添加密钥。

没有必要移动循环文件系统(modloop-rpi2)、System.map-rpi2或config-rpi2,事实上,你必须改变一些额外的配置才能做到这一点。

应用这些变化后,Alpine Linux将在计算模块上启动。

我们很乐意协助您在Raspberry Pi的基础上构建嵌入式解决方案--硬件和软件。 请与我们取得联系.