TCL is great for small computers, like the Raspberry Pi. I've put it on the RPi Zero W to act as a tang server. Running version 9 at the moment, because version 11 is still in beta, from early 2020 or so.
Initial wifi setup
The ZeroW is a little tricky because it only has wifi, and the stock image doesn't include that. Easy enough to fix, though the official wiki is down-ish at the moment.
Official wiki page, via archive-org: https://web.archive.org/web/20191011060430/http://wiki.tinycorelinux.net/picore:pi_zero_w_wifi
Forum page that started it: http://forum.tinycorelinux.net/index.php/topic,21134.15.html
Process for piCore 11.x
Image as normal
wget http://www.tinycorelinux.net/11.x/armv6/releases/RPi/piCore-11.0.zip unzip -p 2020-02-13-raspios-buster.zip | sudo dd of=/dev/sdX bs=4M conv=fsync status=progress # Run fdisk and manually extend the second partition to something more reasonable. # Run fsck and then resize2fs to grow the filesystem to fill the partition.
Copy wifi extensions over, piCore 11.x has some small changes to the set now. You need the tcz and dep and md5.txt files for each package.
ca-certificates.tcz firmware-rpi-wifi.tcz libnl.tcz ncurses.tcz openssl.tcz readline.tcz wifi.tcz wireless-4.19.81-piCore.tcz wireless_tools.tcz wpa_supplicant.tcz
These go in /mnt/mmcblk0p2/tce/optional/, or wherever you've mounted up the second partition of the SD card.
- Boot system for first time
- Edit wireless_tools.tcz.dep to remove libiw.tcz as a dependency (it's part of wireless_tools now)
Do wifi setup and config
tce-load -i firmware-rpi-wifi tce-load -i wifi echo firmware-rpi-wifi.tcz >> /mnt/mmcblk0p2/tce/onboot.lst echo wifi.tcz >> /mnt/mmcblk0p2/tce/onboot.lst sudo wifi.sh -- Do setup as normal echo "wifi.sh -a" >> /opt/bootlocal.sh
Save your changes and reboot
filetools.sh -b exitcheck.sh reboot
Everything should just work once it comes back.
Setting your timezone
The Pi Zero W doesn't have an onboard RTC, meaning you need to use NTP once the system is booted. But NTP isn't gonna help you unless you know your timezone offset, and you can tell Linux that.
There are two ways to set your timezone:
The presence of /etc/localtime, which describes your location and when/how DST affects it
Passing the TZ=foo bootcode (generally called a "kernel commandline option" on regular distros)
The first option is fine, albeit a little tedious. You get the tzdata.tcz extension, unpack it, find the file in /usr/share/zoneinfo, copy that to /etc/localtime, and add /etc/localtime to your backup list.
The second method involves grabbing tzdata.tcz, finding your file in there, and inspecting the last line. It's mostly binary stuff, but there's plaintext at the end and that's your local timezone spec. Supply that as a bootcode in your boot config and bob's your uncle.
The method is described here: https://www.linuxsecrets.com/tinycorelinux-wiki/wiki:time_zone.html
And here's the Australia/Sydney TZ string: AEST-10AEDT,M10.1.0,M4.1.0/3
Note that either way, if your local timezone spec ever changes, you'll need to update this yourself as neither method is self-maintaining.
Not all that different to building RPMs! Kinda.
Submission for the repo: http://forum.tinycorelinux.net/index.php/topic,330.45.html
There's not really a process there per se, and it's not all that repeatable, but it's not bad.
More exhaustive logs and notes on /BuildingExtensions.