A quick howto. Void Linux is a minimal Linux distribution that
aggressively tracks upstream software with a rolling release model. They use
runit as their
init and have the option to use musl as their
Binaries are available for x86_64 and ARM platforms, with a distribution available for the Raspberry Pi 1 (which is close enough to the Zero).
Unfortunately, it looks like the default Pi build expects you to have a console
and keyboard on the machine. As I only have a serial terminal, the first thing
that I did was set it up to print console messages to the built-in UART, and
set up a getty on
Follow the installation instructions, and while you have the filesystem
root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 loglevel=4 elevator=noop
That will take care of the boot messages. To be able to actually log in, we’re
going to need to change to
etc/runsvdir/default (relative to your
/mnt/rootfs for me) and create a symbolic link to a file which
won’t actually exist for you:
ln -sf /etc/sv/agetty-ttyAMA0
That’s going to make sure that a getty on ttyAMA0 loads on boot. This was already included in the distribution, it just wasn’t enabled by default.
The next step was enabling CDC Ethernet – I think that this is one of the best features of the Zero, you can have a little computer that you plug in with a Micro USB lead and you can SSH straight to it.
To make the module load at boot time create the
modules-load.d folder and
list the modules in the order that we need them (
dwc2 for gadget support,
g_ether for CDC Ethernet support)
mkdir -p etc/modules-load.d tee etc/modules-load.d/ether.conf << EOF dwc2 g_ether EOF
Because I like the device to always get the same DHCP lease and show up as the same network device when plugged into my laptop, I also set the host and device addresses:
tee etc/modprobe.d/ether.conf << EOF options g_ether host_addr=32:70:05:18:ff:78 dev_addr=46:10:3a:b3:af:d9 EOF
Finally, I make sure that the Zero will DHCP for this new network device the first time that I plug it in:
cd etc/sv cp -r dhcpcd-eth0 dhcpcd-usb0 ex dhcpcd-usb0/run :%s/eth0/usb0/g :wq cd ../../etc/runit/runsvdir/default rm dhcpcd ln -sf /etc/sv/dhcpcd-usb0 # this absolute path won't exist yet
That’s it for the Zero, just unmount the filesystems and pop the MicroSD card into your Raspberry Pi.
I use Ubuntu on my laptop, so when I plugged in my Zero, it detected a new network device. Select ‘Edit Connections…’ in the Network Manager applet to reconfigure this new USB device that has shown up - you’ll want to go to ‘IPv4 Settings’ and then choose ‘Shared to other computers’. Okay your way out an wait a few seconds for everything to catch up.
The IP address of your Zero should in
/var/lib/misc/dnsmasq.leases – SSH in