Home | News | Download | Packages | Forum | Wiki | Github

About Void-musl armv7 on Raspberry Pi3


(Edmond Dantes ) #1

Yesterday evening I decided to wipe out NetBSD-Current/earmv6hf from my SD card and try Void (void-rpi2-musl-PLATFORMFS-20171007.tar.xz ) on RPi3 Model B. Here I’m providing a couple of observations and tips, hoping new users will eventually find them useful.

Overall feedback: very good; stable; practically nonexistent boot time, even shorter than RC/BSD-Init, which had proven the fastest so far; unparalleled performance: handles 2 Qupzilla instances quite well; xbps, well it’s xbps, fast as always; wireless drivers/firmware up to date and working flawlessly on a WPA2-Personal connection using wpa_supplicant.

My filesystem (32Gb SD)

  • 512MB FAT16 /boot partition
  • 29 GB F2FS root partition
  • 1 GB swap

/etc/fstab:

 # <file system> <dir>   <type>  <options>               <dump>  <pass>
    tmpfs           /tmp    tmpfs   defaults,nosuid,nodev   0       0
    /dev/mmcblk0p1  /boot   vfat    defaults,noatime        0       2
    /dev/mmcblk0p2  /       f2fs    defaults,noatime,acl,active_logs=6,user_xattr  0    1
    /dev/mmcblk0p3  none    swap    sw                      0       0

Once set a wireless connection up and running, I encountered the same problem described in thread: [SOLVED] Xbps cant install packages (certificate verificacion failed). In fact, since most ARM SoCs have no hardware clock and I hadn’t enabled ntpd -like the fool I am-, date had remained set to to 1st Jan 1970 :rofl: .

I configured nptd to synchronize time with ntp-pool Italian servers, adding to /etc/chrony.conf:

 server 0.it.pool.ntp.org iburst
 server 1.it.pool.ntp.org iburst
 server 2.it.pool.ntp.org iburst
 server 3.it.pool.ntp.org iburst

However, after reboot, I noticed date had not been reset, despite chrony daemon was running, so I went looking up /etc/sv/ntpd/run and found:

 #!/bin/sh                                                    
 exec chronyd -n -u chrony

the problem was that since chrony user didn’t exist, process was failing to be assigned to any UID after boot; hence I simply changed that user name to match mine, and got date/time correctly synchronized no sooner had I restarted the ntpd service.

I was curious to see which extent the latest armv7 Linux kernel (and Void?) would bear overclocking the Rpi3 to (owning a couple of aluminium heat sinks and a mini fan). And that’s more or less the highest stable and not overheating configuration I was able to set (inside /boot/config.txt):

    gpu_freq=600
    arm_freq=1400
    core_freq=600
    sdram_freq=600
    over_voltage=8
    sdram_schmoo=0x02000020

In addition, since I’m using my Rpi3 with an old 1024x768 VGA monitor, I had tweak /boot/config.txt in order to force output to be displayed correctly through a HDMI2VGA converter:

   hdmi_ignore_edid=0xa5000080
   hdmi_force_hotplug=1
   hdmi_drive=2
   config_hdmi_boost=7
   hdmi_group=2
   hdmi_mode=16
   framebuffer_depth=16
   framebuffer_width=1024
   framebuffer_height=768
   disable_overscan=1

Which is more or less the same configuration I used on NetBSD, with a couple of additions due to wrong display y axis alignment

Maybe other Void/Pi3 users will like to share their experience, point out any correction and provide further useful suggestions


#2

Thank you for the detailed report. This is very good information.

I tried the RPI2 musl install a couple of months ago for my raspberry pi 3 and then switched to the RPI2 glibc version. I am very happy. I also have a raspberry pi zero w running the void rpi1 glibc install with very good results.

I have an ADC working on both boards. After initial difficulties I could get the board to run by blacklisting the kernel module for the ADS1115 because that would only support 12bit conversions. Then the 16bit ADC worked as expected by directly accessing the I2C module.
16 bit Raspberry Pi ADC

The void glibc version for the raspberry pi is larger than te musl while probably more compatible for certain uses. The void build works perfectly and much better than the slow and bloated Raspbian. Some of the pre-built raspberry packages available in the Raspbian need to be built from the sources for the Void build and that has been simple so far.

Once again, Void is the best.


(Edmond Dantes ) #3

Thanks you too for your feedback @unknown!

Aldready added to my cart :sunglasses:


(JF) #4

Hello!

I installed void-rpi2-PLATFORMFS-20171007.tar.xz (glibc) on my rpi3 three weeks ago. I didn’t experimented any problem during installation: chrony was working ok from the beginning, without any change in the configuration, and xbps didn’t raise any problem regarding SSL validation. I had a number of services smootly working: ssh, privoxy, apache, minidlna, among others.

Unfortunately, I wasn’t able to run vlc, which is quite important to me, so I have decided to install void-rpi2-musl-PLATFORMFS-20171007.tar.xz as suggested in 11017. For now, I have found some problems:

  • Missing crony user. I have add it using the command below. However chrony still does not update the time, although started up.
    useradd -r -c 'chrony unprivileged user' -d /var/db/chrony -s /sbin/nologin chrony

  • SSH not enabled by default (important to me, because my RPI3 is headless). I had to enable it the SD card
    ln -s /etc/sv/sshd /etc/runit/runsvdir/current

  • XBPS failing with the SSL validation (solved by setting the time manually). I have updated the system (xbps-install -Su), chrony has got updated and it is properly working.

My first impression is that musl is not as smooth as the glibc rootfs, it seems that it has not been tested on RPI3. Anyway I agree to unknown2345, void is great :slight_smile:

EDIT: Now I have reinstalled all the services I had with glibc, and everything seems to be working now with musl. I haven’t found any other issue apart from the first issue with chrony.


(Edmond Dantes ) #5

Hi, sorry for the delay

I always do the same thing on Rpi, it’s so damn comfortable fun and useful, consumes less WATTs than a light bulb, still you can configure many Server daemons on it at the same time, an for home usage it’s just perfect (unless one plan’s on powerful/serious workload, or a NAS). Usually I build a multi-purpose mini-server: SFTP/SSL (vsftpd), TFTP (tftp-hpa), proxy (Squid3), ESMTP(Posftix), IMAP/SSL (Dovecot), Streaming (Icecast/Airsonic), printing (CUPS) server . For the moment, on Void-musl I’ve done more or less only half of the work, but it will be ready soon.

Unfortunately it’s likely I won’t be able to build a music sharing server with Airsonic or likes, as there’s no java on musl :(…anyway, keep it up.

Try adding a ntp pool local server to your chrony.conf, see: http://www.pool.ntp.org/en/
Or rely on busybox’s ntp daemon: install busybox, enable busybox-ntpdrunit service, configure it referring to busybox man page:

ntpd

ntpd [-dnqNwl] [-S PROG] [-p PEER]…

NTP client/server

Options:

    -d      Verbose
    -n      Do not daemonize
    -q      Quit after clock is set
    -N      Run at high priority
    -w      Do not set time (only query peers), implies -n
    -l      Run as server on port 123
    -S PROG Run PROG after stepping time, stratum change, and every 11 mins
    -p PEER Obtain time from PEER (may be repeated)

Well, in the end, many use Linux on embedded systems for developement/programming, as router, or as a minimal-desktop, and do not need it. Moreover a SSHD enabled without a firewall implies a potentially exploitable security fault

I can concur with you, musl is still a young project and many other FOSS initiatives, programs (included especially, everything related to Free Software Foundation) seem to simply do’nt care much about it. I encountered some problems too, especially with browsers, but i’m enjoying the challenge

Best whishes


(JF) #6

Hello!
Thanks for your comments. Finally i have chrony working by manually adding the chrony user and updating the package, but good to know about ntpd in busybox. I see your point in relation to SSH, it is not necessary for everybody.
Kind regards