Scrivendo l’articolo NO GRAPHIC NO PARTY mi sono accorto che non esistono distribuzioni moderne capaci di girare su un 486.
La soluzione più semplice è quella di costruirsi il proprio sistema Linux personalizzato con Buildroot, come descritto nella guida Linux minimale per PC i386/i486.
Con questo tool non è stato difficile realizzare un sistema Linux che supportasse PCI, ISA, IDE legacy, IPV4/6, le principali schede di rete ethernet dell’epoca e degli attuali emulatori, l’hotplug; che comprendesse busybox completo, svariati tool come iptables, nano, openssl, dropbear, ncftp, lynx, mutt, mpg123 e si accontentasse di un 486 con 24MB RAM ed un hard disk da 40MB.
Realizzare un sistema Linux recente per i386 è invece fuori discussione, anche usando l’ultimo kernel disponibile per 386 (3.7.10) ed un buildroot di una decina di anni fa è si fa molta fatica a stare sotto alle 16MB RAM. In questo caso conviene accontentarsi di una vecchia distro floppy minimale.
Ha ancora senso fare a meno dell’interfaccia grafica? Per la maggior parte degli utenti probabilmente no, ma se state leggendo questo articolo non siete l’utente medio. Se siete stanchi di giocare a vecchi giochi DOS sul 486 della vostra infanzia, la mia proposta è di collegarlo ad Internet e configurarlo per navigare, chattare e leggere la posta. Vi occorrerà soltanto della colla vinilica e forbici con la punta arrotondata una scheda ethernet (preferibilmente PCI se non volete gestire manualmente IO e IRQ), un lettore CD e (facoltativo, ma raccomandato) un hard disk aggiuntivo dedicato a Linux.
NB: l’unica distribuzione moderna che supporta l’architettura 486 è TinyCore, ma è impossibile fargli fare il boot su sistemi con meno di 80MB RAM. Per aggirare questo il problema si può effettuare l’installazione su un PC più moderno e su questo ricompilare un nuovo kernel minimale. Per limitare al massimo il consumo di memoria si consiglia di eliminare tutti i moduli superflui e di compilare staticamente le componenti essenziali al boot così da poter fare a meno del ramdisk. A questo punto sarà possibile trapiantare l’hard disk sul 486 e, se abbiamo fatto tutto correttamente, arrivare al login. Se siete pigri e non vi interessa avere un sistema aggiornato si può optare per una vecchia Debian 3 o Slackware 7.
Software consigliato per sopravvivere ai tempi moderni con un computer di 30 anni fa:
nano: editor di testo stile edit di MS DOS
vi, emacs: editor di testo UNIX che non hanno bisogno di presentazioni
Wordgrinder: word processor che supporta il formato odt
gpm (General purpose mouse): supporto al mouse da terminale
tmux (Multiplexer di terminale): divide lo schermo in pannelli, gestisce finestre multiple e mantiene le sessioni persistenti
eLinks: browser testuale con supporto per le TAB
links: browser testuale con possibilità di supporto grafico. Utilizzando il driver framebuffer (attivandolo dal boot loader col parametro vga=0x031B o video=vesafb), non necessita del server grafico
mpg123: decoder per eseguire mp3
sic (chat via IRC): chattare alla vecchia maniera lanciando un semplice “sic irc.libera.chat”
Mutt (o NeoMutt): client email
Mentre la configurazione della maggior parte dei programmi elencati è un esercizio relativamente semplice che lasceremo al lettore, quella del client di posta richiede alcune accortezze:
se usate Gmail dovrete generare una nuova password per ogni applicazione esterna per accedere alla casella di posta (mutt/neomutt, offlineimap, getmail, msmtp, postifix, sendmail…)
Mutt e NeoMutt avrebbero un client integrato per gestire l’autenticazione imap e smtp, ma se volete leggere ed inviare la posta anche quando siete offline occorrerà appoggiarsi a strumenti esterni File di configurazione di NeoMutt comprensivo di gestione della cifratura .neomuttrc
Come client IMAP per sincronizzare il vostro account con la ~/Mail locale consiglio Offlineimap o getmail File di configurazione .offlineimaprc
Stessa cosa per quanto riguarda la posta in uscita, in questo caso consiglio msmtp. File di configurazione .msmtprc
Avevo bisogno di un serverino domestico per alcuni esperimenti e per taccagneria passione per il trashware ho deciso di recuperare il mio “vecchio” (2007) EeePC 701 (Celeron M 900MHz, 2GB RAM, 4GB SSD).
Sono consapevole che un Raspberry Pi 4 sarebbe molto più performante, ma quanto ci avrei messo ad ammortizzare l’investimento? L’EeePC 701 consuma:
9,5V – 2,5A max → ~24W di picco
frequenza media della CPU su un uptime di 62 giorni: 113 MHz:32.73%, 225 MHz:21.17%, 338 MHz:15.11%, 450 MHz:10.52%, 563 MHz:6.91%, 675 MHz:2.72%, 788 MHz:3.57%, 900 MHz:7.28%
Una stima verosimile si attesta attorno ad una media di 11W
Tradotto in Euro significa:
11 W × 24 h × 365 giorni = 96.360 Wh ≈ 96 kWh / anno
costo medio dell’elettricità in Italia nel 2025 = 0,30 €/kWh 96 kWh × 0,30 € = ~28,80 € / anno
Un Raspberry Pi 4 Model B invece consuma:
4,5 W × 24 × 365 = 39.420 Wh ≈ 39 kWh / anno
39 kWh × 0,30 € = ~11,70 € / anno
Un Raspberry mi farebbe risparmiare circa 17€ l’anno, ma nuovo costa un centinaio di euro e per rientrare dell’investimento mi occorrerebbero circa 6 anni!
Ma veniamo ai problemi pratici: CPU a 32bit e disco da soli 4GB! Forse non ve ne siete accorti, ma la maggior parte delle distribuzioni ha deprecato il supporto all’architettura Intel 32-bit.
Nell’ordine ho quindi scartato:
Debian 12 (supporta i686 ufficialmente “solo” fino a giugno 2028), da amante del retrocomputing non mi ha entusiasmato la scelta di Debian di eliminare il supporto agli Intel a 32bit. L’installazione di base occupa circa 750MB.
Slackware 15/current: stabile, ma è complicato contenere la dimensione del sistema di base. L’installazione della maggior parte dei pacchetti delle serie a, ap, l ed n occupa circa 1200-1300MB, in oltre per il software extra ci si deve affidare a repository non ufficiali o ai maledetti Slackbuild.
Gentoo: RICOMPILARE UNA DISTRO MODERNA SU UN PC A 900MHZ?!!
Slitaz: progetto leggero ed interessante, ma non ha i pacchetti per il software che mi serve.
Tiny Core: stesso discorso di Slitaz.
Free/Net/OpenBSD: girano tutti senza problemi anche su i586, ma l’installazione minima richiede rispettivamente 1.3GB, 900MB e 1.2GB.
Arch Linux 32: uso Arch da 20 anni, c’era ancora installata una vecchia Arch sull’EeePC quando l’ho riesumato, ma mi sono ricordato di questo fork quando ormai era troppo tardi.
Void Linux: ha il miglio rapporto leggerezza-facilità d’installazione. Scartata perché ha un gestore di pacchetti con una sintassi troppo particolare per i miei gusti. L’installazione minima richiede circa 700MB.
Alpine Linux: non è solo sinonimo di container, può essere installata anche su hardware reale. Usa musl al posto di glibc ed è più leggera e performante di tutte le soluzioni precedenti. Purtroppo il suo installer non permette di gestire manualmente le partizioni, ma dato che l’installazione minima richiede meno di 200 MB ho deciso che valesse la pena effettuare l’installazione tramite chroot (stile Arch).
Installazione Alpine Linux tramite chroot
1. Configurazioni base
setup-hostname -n serverino setup-keymap it it setup-timezone -z Europe/Rome setup-interfaces passwd
2. Preparare il disco per btrfs
apk add btrfs-progs cfdisk… [partizioni GPT con sda1 BIOS BOOT e sda2 Linux] mkfs.btrfs /dev/sda2 modprobe btrfs mount /dev/sda2 /mnt cd /mnt btrfs subvolume create rootvol umount /mnt mount /dev/sda2 -o subvol=rootvol,compress=lzo,sdd /mnt mount –bind /dev /mnt/dev mount –bind /proc /mnt/proc mount –bind /sys /mnt/sys mount -t devpts devpts /mnt/dev/pts -o gid=5,mode=620
Per i malati del trashware ho voluto replicare il test precedente su un vecchio Pentium Dual-Core E5800 3.20GHz privo di accelerazione aes e con soli 4 GB RAM. In questo caso non ho potuto usare gocryptfs perché supporta come minimo CPU x86-64-v2. Al suo posto, come FS userspace, ho ripiegato per il vecchio EncFS (solo a scopo didattico perché non è più attivamente sviluppato e non è attualmente considerabile sicuro).
Ext4 con fscrypt si è confermato il filesystem con le maggiori performance in scrittura, dm-crypt/LUKS non gli si è discostato di molto e lo ha addirittura superato in quanto a velocità di lettura. EncFS è riuscito a fare meglio solo dello ZFS che purtroppo dopo pochi secondi saturava sistematicamente un core della CPU. Per trasferire 5GB cifrati con un PC di 15 anni fa occorrono (circa) quindi:
C’eravamo lasciati con una domanda: quale fosse il sistema operativo migliore per ottenere il meglio da quel Pentium 200 con 48MB RAM, hard disk da 2GB e scheda ethernet NE2000.
Il collo di bottiglia di quel bolide era la scheda di rete ISA a 10Mbit e tutti i sistemi operativi provati hanno superato abbondantemente il limite di trasferimento di 900 KB/s di quella scheda, quindi probabilmente anche DOS non ci avrebbe sfigurato. Per dare comunque un senso a questo test, ho installato sulla replica di quel PC una scheda di rete RTL8139C PCI a 100 Mbps ed ho provato a spremerlo con alcuni trai principali OS per server disponibili all’epoca:
Windows 2000 Server: facciamo lo sforzo di fantasia di immaginare uno studente 19enne con $999 da buttare investire per il sistema operativo del suo serverino domestico
Debian Woody 3.0 (kernel 2.4.18): la distribuzione più di cool disponibile in quel momento
Linux Mandrake 9.0 Dolphin (kernel 2.4.19): la distribuzione che usavo sul desktop di tutti i giorni
OpenBSD 3.1: perché davvero la usai su quel PC (anche se non quella specifica versione), per vedere come si comporta un sistema BSD su quell’hardware e perché il suo sistema di base comprende server web ed ftp, così non devo ingrullire a cercare pacchetti su mirror di mirror di mirror sperando che il sysadmin si sia scordato di cancellarli
SCO Openserver 5.0.6: nello stesso mondo immaginario in cui posso spendere due milioni di lire per Windows server non ho difficoltà a tirare fuori un milione e mezzo per acquistare la licenza base dello SCO UNIX
Come avevo già fatto per il test su macchina virtuale, anche qui ho misurato la velocità di trasmissione via http col tool ab con un carico di 100 connessioni simultanee per un totale di 10000 connessioni caricando un documento da 18,6 KB. Per verificare la velocità massima di trasferimento via ftp ho invece eseguito 5 upload e 5 download di un file da 100 MB, ho fatto la media dei tempi e ne ho calcolato la velocità.
Con mia grande sorpresa Windows 2000 ha battuto la concorrenza in 2 prove su 3: distribuzione di pagine html statiche e upload via ftp (apprezzate l’onestà perché avrei potuto insabbiare tutto). Mandrake, pur essendo una distribuzione orientata all’uso desktop, si è comportata molto bene superando Debian in ben 2 prove. La cosa che più mi ha infastidito di Mandrake è stata il suo lunghissimo tempo di avvio: quasi 2 minuti contro i 30 secondi circa di tutti gli altri sistemi operativi. OpenBSD si è difeso bene mantenendo valori intermedi in tutte le prove. SCO Openserver, come già era successo nei test su macchina virtuale, è stato il sistema operativo più lento in tutte le prove. A titolo informativo segnalo che SCO è stato di gran lunga il più lento nel processo di installazione, durato oltre un’ora e mezzo, ed è stato l’unico sistema operativo a non supportare nativamente l’RTL8139.
Classifiche
WEB server 1) Windows 2000 2) Debian Woody 3) Linux Mandrake 9.0 4) OpenBSD 3.1 5) SCO Openserver 5.0.6
FTP-UPLOAD 1) Windows 2000 2) Linux Mandrake 9.0 3) OpenBSD 3.1 4) Debian Woody 5) SCO Openserver 5.0.6