Raspberry Pi Zero W - 安装

来自 Alpine Linux
此材料建议合并...

它应该与 Raspberry Pi 合并。参见删除注释 (讨论)

此材料建议删除...

此页面可能会合并到主要的 Raspberry Pi 安装页面中,然后删除。 (讨论)
确保 没有其他页面链接到这里,并在删除之前检查 页面的历史记录

注意:

截至 Alpine 3.18,本页概述的大多数 Pi Zero W 特定步骤可能不再需要。
特别是 rng-tools 对于 wifi 操作不是必需的,因为内核 5.18 及更高版本改进了熵管理。

简介

本 wiki 描述了如何在 Raspberry Pi Zero W 上安装 Alpine Linux 3.9.2 armhf。我最初遇到了一些问题,因为在通过 setup-alpine 脚本时 WiFi 无法连接,并且当我能够连接(在多次手动尝试失败后)时,它在重启后不会重新连接。下面记录的解决方案是在运行 setup-alpine 之前添加并启动 rngd 服务,这修复了 wifi 连接问题,并允许您成功完成设置脚本。它还将 rngd 和 wpa_supplicant 服务添加到启动时启动,并从 rc-update 列表中完全删除网络服务,这似乎是错误的做法,并且可能确实是 - 网络仍然启动,可能是作为其他东西的依赖项,并且它在 rngd 和 wpa_supplicant 之后启动,这正是我所需要的。当网络服务设置为“boot”(默认情况下是这样)时,它会在 rngd 和 wpa_supplicant 之前启动,因此 wlan0 永远不会连接。

我需要再次回顾一下,但它应该可以按书面形式工作。某些步骤可能对于您的用例不是必需的,并且某些步骤可能根本不是必需的,但似乎没有坏处。我仍在学习 Alpine Linux,并希望随着我进行更多阅读和实验来改进此过程。

更新 - 2019 年 12 月 7 日 - 我在配备 Alpine 3.10.3 for armhf 的 Pi Zero W 上再次进行了安装。将镜像写入 SD 卡后的首次启动似乎可以正常工作,就 WiFi 功能而言。设置脚本完成,我能够连接到 WiFi 并拉取软件包等。我决定此时不安装 rngd 相关软件包,看看重启后的情况如何,答案是不好。dhcp 请求只是超时。此时再次运行 setup-alpine 也不起作用。如果您重新开始并重新将镜像写入 SD 卡,则首次启动将再次正常工作,只有重启会破坏 Wifi。我认为最好遵循安装 rngd 相关软件包并配置服务以在启动时启动的步骤。请注意,您可以使用 apk 在首次启动时安装您需要的软件包,您无需像下面编写的那样离线将软件包复制到 SD 卡。


将镜像写入 SD 卡

首先,使用 FAT 文件系统格式化 SD 卡。这可以使用图形工具(如 GParted)在 SD 卡安装到您的操作系统后完成。以下假设 SD 卡设备位于 /dev/sdb1。

挂载 SD 卡

sudo mount /dev/sdb1 /mnt

然后,复制文件

tar -xzvf alpine-rpi-3.9.2-armhf.tar.gz -C /mnt --no-same-owner

如果您没有使用 SD 读卡器正常挂载 SD 卡的方法,则可以通过 Raspberry Pi Zero W 通过 USB 挂载,使用 usbbootgui 工具挂载为 eMMC/SD 卡读卡器。在 Ubuntu 上,可以按如下方式安装

sudo add-apt-repository ppa:rpi-distro/ppa

sudo apt install usbbootgui

当您插入 Pi 时,GUI 应该立即打开;否则运行

usbbootgui

编辑 cmdline.txt 并添加串口控制台行 (可选)

这适用于我的用例,如果您使用本地键盘和显示器,则为可选。我不连接键盘和显示器,而是通过 Pi 的串口 GPIO 引脚进行设置。

在 SD 卡的根目录中创建一个名为 cmdline.txt 的文件,并将以下文本放入其中

modules=loop,squashfs,sd-mod,usb-storage quiet dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200

创建 usercfg.txt 并编辑 (可选)

我相信这在很大程度上是可选的,并且适用于我的用例,我将在无头设备类型模式下运行 Pi。我减少了为 GPU 分配的内存,关闭了音频(不确定我是否仍然需要在 Zero W 上执行此操作),禁用了蓝牙(我认为这会将串口控制台放回真正的 uart 上,再次,需要仔细检查),为温度传感器添加了 w1,并将 enable_uart 设置为 1(可能不是必需的,需要验证并添加注释)。这可以通过在 SD 卡的根目录下创建一个名为 usercfg.txt 的文件并包含以下内容来完成

gpu_mem=16 dtparam=audio=off dtoverlay=pi3-disable-bt dtoverlay=w1-gpio enable_uart=1

创建缓存文件夹并添加 rng-tools 软件包

mkdir /mnt/cache

我将以下内容复制/粘贴到 SD 卡上的缓存目录中。我还有另一个 Alpine 环境可以从中 apk 获取软件包(Fedora 上的 chroot)

rng-tools-6.3.1-r1.652a1399.apk rng-tools-openrc-6.3.1-r1.e9b063f8.apk

使用准备好的 SD 卡启动 Pi,以 root 用户登录并添加软件包

我仍然是 Alpine 的新手,不确定 setup-apkcache 步骤是否必要或在此处完成了任何操作。

localhost:~# setup-apkcache 输入 apk 缓存目录(或 '?' 或 'none')[/var/cache/apk]:/media/mmcblk0p1/cache/ localhost:~# apk add --allow-untrusted /media/mmcblk0p1/cache/rng-tools-6.3.1-r1.652a1399.apk (1/1) 正在安装 rng-tools (6.3.1-r1) 正在执行 busybox-1.29.3-r10.trigger OK: 8 MiB in 21 packages localhost:~# apk add --allow-untrusted /media/mmcblk0p1/cache/rng-tools-openrc-6.3.1-r1.e9b063f8.apk (1/1) 正在安装 rng-tools-openrc (6.3.1-r1) OK: 8 MiB in 22 packages

启动 rngd 服务

localhost:~# service rngd start * 正在缓存服务依赖项 ... [ 确定 ] * 正在启动 rngd ... 正在初始化可用源 [ 确定 ]

运行 setup-alpine。在 rngd 运行的情况下,Wifi 连接应该可以正常设置。

设置过程会在某个时候关闭 rngd 服务,但这发生在 wifi 连接之后。

setup-alpine

配置服务并重启

从启动中删除网络会导致它不存在于任何阶段,这似乎是错误的修复方法,但它在 rngd 和 wpa_supplicant 之后运行,这正是我们想要的

pet-protect:~# rc-update add rngd boot * 服务 rngd 已添加到运行级别 boot pet-protect:~# rc-update add wpa_supplicant boot * 服务 wpa_supplicant 已添加到运行级别 boot pet-protect:~# rc-update del networking boot * 服务 networking 已从运行级别 boot 中删除 pet-protect:~# rc-update -u * 正在缓存服务依赖项 ... [ 确定 ] pet-protect:~# lbu commit -d pet-protect:~# reboot