Raspberry Pi Zero W - Installation
- 1 Introduction
- 2 Write image to SD
- 3 Edit cmdline.txt and add line for serial console (Optional)
- 4 Create usercfg.txt and edit (Optional)
- 5 Create cache folder and add rng-tools packages
- 6 Boot pi with prepared sd card, login as root and add packages
- 7 Start rngd service
- 8 Run setup-alpine wifi connection should setup ok with rngd running.
- 9 Configure services and reboot
This wiki describes how I installed Alpine Linux 3.9.2 armhf on a Raspberry Pi Zero W. I had problems with it initially as wifi wouldn't connect when going through the setup-alpine script and when I was able to get it connect (after numerous failed manual attempts) it wouldn't reconnect on reboot. The solution documented below adds and starts the rngd service prior to running setup-alpine which fixes the wifi connection problems and allows you to walk through the setup script successfully. It also adds the rngd and wpa_supplicant services to start at boot and removes the network service out of the rc-update list completely, which seems like the wrong thing to do and probably is - networking still gets started, probably as a dependency to something else, and it starts after rngd and wpa_supplicant, which is what I needed. When the networking service was set to "boot" (which it was out of the box) it was starting before rngd and wpa_supplicant so wlan0 would never connect.
I need to go back through this again but it should work as written. Some steps may not be necessary for your use case and some steps may not be necessary at all but don't seem to hurt. I'm still learning about Alpine Linux and hope to improve this process as I do more reading and experimentation.
Write image to SD
Format an SD card with fat filesystem first.
Edit cmdline.txt and add line for serial console (Optional)
This is for my use case and optional if you are using a local keyboard and monitor. I do not connect a keyboard and monitor but rather do the setup via the Pi's serial GPIO pins.
Create usercfg.txt and edit (Optional)
This is mostly optional I believe and applies to my use case where I will be running the pi in a headless appliance type mode. I reduce the memory allocated for the GPU, turn off audio (not sure I still need this on the zero w), disable bluetooth (which I think puts the serial console back on the real uart, again, need to double check), add w1 for a temperature sensor, and set the enable_uart to 1 (may not be necessary, need to verify and add comments).
Create cache folder and add rng-tools packages
I copy pasted the following into the cache dir on sd card. I have another Alpine env to apk fetch packages from (chroot on Fedora)
Boot pi with prepared sd card, login as root and add packages
I'm still new to Alpine, not sure if the setup-apkcache step is necessary or accomplishes anything here.
Start rngd service
Run setup-alpine wifi connection should setup ok with rngd running.
The setup process turns off the rngd service at some point but it's after wifi is connected
Configure services and reboot
Removing networking from boot results in it not being present in any stage which seems like the wrong fix but it still gets run by something and after rngd and wpa_supplicant which is what we want: