Raspberry Pi Zero W - 安装
![]() 它应该与 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