💾 Archived View for ew.srht.site › en › 2023 › 20230715-occ-0-preparations.gmi captured on 2024-03-21 at 15:09:12. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-07-22)
-=-=-=-=-=-=-
Soléne has announced the 2023 Old Computer Challenge --- maybe it's time to try this after all these years.
https://dataswamp.org/~solene/2023-06-04-old-computer-challenge-v3.html
The challenge proposes to go about (non-worklife) computery things under constraints:
The challenge runs for one week starting 2023-07-10.
From the notebooks on my desk I chose an 8 year old ACER Travelmate B116. This machine has 4 cores and 8 GiB of RAM. It features a SSD disk, so it is not anywhere near /old/ specs. My Asus from 2007 would fit better, especially with a magnetic drive. However I got rid of that machine some time ago.[a]
The Acer had Debian 12 installed on it already. Its disk is encrypted, so I accept the overhead as a little decrease in speed.
This is simple to achieve, just add a little information to the boot command line (via /etc/default/grub)
maxcpus=1
And indeed lscpu reports that accordingly:
CPU(s): 4 On-line CPU(s) list: 0 Off-line CPU(s) list: 1-3 Thread(s) per core: 1
Adding another Linux kernel parameter is not a difficult thing:
mem=512MB
However, this is where the first surprise already came up:
Please unlock disk sda4_crypt: Warning: keyslot operation could fail as it requires more than available memory. Not enough available memory to open a keyslot cryptsetup: ERROR: sda4_crypt: cryptsetup failed, bad password or options?
Now, how did cryptsetup get into this game? Well. Some time ago Matthew Garrett had an interesting post on the key derivation function used in this game[b]. So I changed the function from pdkdf2 to argon2id. Guess what! argon2id is designed to be memory intensive in order to make brute force attacks unfeasible. And it just demonstrated to work! So I reset one keyslot to pdkdf2 and with the associated mantra the system will unlock its disk --- not without a warning, though!
Now, lsmem will report
Total online memory: 512M
Nice!
Again, a kernel parameter will help here. but not the one I initially thought. Turns out that cpupower on this machine will work with acpi rather than intel_pstate. So this combination of kernel parameters will make it work:
cpufreq.default_governor=powersave intel_pstate=disable
together with a few additional software packages:
apt install cpufrequtils linux-cpupower acpi-support
There might be more neccessary packages. With that a few commands will restrict the governor to speed up the cpu:
# cpupower frequency-set -g powersave -u 480MHz Setting cpu: 0 Following CPUs are offline: 1-3 cpupower set operation was not performed on them # cpupower frequency-info analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 10.0 us hardware limits: 480 MHz - 1.60 GHz available frequency steps: 1.60 GHz, 1.60 GHz, 1.52 GHz, 1.44 GHz, 1.36 GHz, 1.28 GHz, 1.20 GHz, 1.12 GHz, 1.04 GHz, 960 MHz, 880 MHz, 800 MHz, 720 MHz, 640 MHz, 560 MHz, 480 MHz available cpufreq governors: powersave performance schedutil current policy: frequency should be within 480 MHz and 480 MHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 480 MHz (asserted by call to hardware) boost state support: Supported: yes Active: yes
So to my knowledge the conditions suggested by Soléne are met.
I am using debian kernel packages with the real time patch enabled, namely linux-image-rt-amd64. Turns out that with this kernel, booting will largely succeed, but I cannot log in at the console. Switching to linux-image-amd64 without the -rt bit works. I did not dig deeper, but accepted that the -rt kernels are no good for this experiment.
Definitely yes. The machine is a lot slower from the very beginning (boot). Interestingly, syncing emails (offlineimap) and reading them with emacs/mu4e is quite ok. Yes well, it took some time to sync a few 10k email messages, but it did work without hiccups.
Wo needs a webbrowser, wenn emacs/eww is already installed? Yes well. Try The Midnight[c], which will work nicely. Then try blitzortung.org[d] --- no dice. Not even a whee bit. Well, that's to be expected, because that site will not work without a lot of javascript and websockets. So I tried firefox. It is unbearable. I tried dillo. It will show parts of that page, but not the map. In a strange place/moment of my personal space/time I compiled Ladybird[e] on a different machine and copied the result over. Adding two dozen or so extra packages made the thing not crash :) Now blitzortung.org is being shown, including the map, however live lightning events and stations are not shown. After some time the "I agree"-buttons show up, at which point I became impatient. Again this is not surprising. A site with pictures did mainly work, but it is quite slow. Youtube is unusable. I tried one news site (heise.de), well, don't bother, it just crashed the browser. Calling an inhouse grafana dashboard failed (grafana error message). Infamous user tracking is probably working nicely :)
./Meta/serenity.sh run lagom ladybird
is my friend.
I did so far not pursue much on this machine. Text based things should be easy, even writing code. Compiling might be a completely different story. GUI heavy stuff like using Gimp or KiCAD, or formatting a somewhat complex \LaTeX document with funny fonts --- well I cannot imagine this stripped down system to cope well.
Mounting an encrypted (luks) flash drive with argon2id key derivation function took more than 10 minutes, but worked (after adding some swap space). Another such flash drive using pdkdf2 instead, was mounted in seconds rather.
So even though I did not participate in the challenge --- this text is written on a different machine --- I did learn quite a bit from these preparations.
Cheers,
~ew
[a] "We do not have a museum at home, remember?" (my wife on several occasions)
[b] Matthew Garrett: PSA: upgrade your LUKS key derivation function