Linux minimale per PC i386/i486
Distribuzioni per i486-i586
| Distro | CPU minima | RAM minima | Disco/ISO | Uso ideale |
|---|---|---|---|---|
| DeLi Linux | i486 | 8–16 MB | ~200 MB installazione | Retrocomputing puro, PC anni '90 |
| SliTaz | i486 | 24–64 MB | ISO 30–60 MB | Pentium II/III molto leggeri |
| Tiny Core Linux | i486DX | 46 MB | 20–200 MB | Minimalismo estremo, appliance |
| Puppy Linux | Pentium II | 128-256 MB | 300–500 MB ISO | Desktop leggero usabile |
| Damn Small Linux 2024 | i686 | 256-512 MB | ~700 MB ISO | Hardware datato ma moderno |
Floppy Linux
Se si tenta di recuperare una macchina particolarmente vecchia possono venire in nostro soccorso delle mini distribuzioni prive di ambiente grafico e talmente compatte da poter essere contenute in un unico floppy.
NB: su Linux è stato rimosso il supporto al 386 nel 2012 (kernel 3.8) ed al 486 nel 2026 (kernel 7.1)
| Distribuzione | Supporto avvio | CPU minima | RAM minima | Dimensione tipica | Uso ideale |
|---|---|---|---|---|---|
| FLOPPINUX | 1 floppy | 386 | 4–8 MB | 1.44 MB | Mini Linux educativo/sperimentale |
| Fluxflop | 1–2 floppy | 386 | ~4 MB | 1.44–2.88 MB | Networking minimale |
| FD Linux | 1 floppy | 386SX | 4 MB | 1.44 MB | DOS/Linux compatto |
| floppyfw | 1 floppy | 386 | 8 MB | 1.44 MB | Router/firewall embedded |
| HAL91 | 1 floppy | 386 | 2–4 MB | 1.44 MB | Esperimenti ultra-minimali |
| muLinux | 1+ floppy modulari | 386SX | 4 MB | 1.44 MB base | Recupero PC vintage |
| S.M.A.R.T. Linux | 1 floppy | 386 | 4–8 MB | 1.44 MB | Toolkit floppy generale |
| Small Linux | 1–2 floppy | 386 | 4–8 MB | ~2 MB | Sistema Linux minimale |
| tomsrtbt | 1 floppy | 386SX | 8 MB | 1.72 MB | Rescue disk |
| Trinux | 1–2 floppy | 486 | 8–16 MB | 1.44–3 MB | Sicurezza/network auditing |
| Zool | 1 floppy | 386 | ~4 MB | 1.44 MB | Linux ultra-compatto |
Buildroot
Soluzioni preconfezionate (come quelle sopra elencate) potrebbero non rispondere alle nostre esigenze: kernel datati (2.0, 2.2), driver mancanti o magari mancano proprio dell'applicazione di cui abbiamo bisogno.
In questi casi la soluzione più rapida è quella di costruirsi il proprio sistema Linux personalizzato. Per farlo il metodo più semplice è utilizzare Buildroot, un tool che permette la cross-compilazione di un ambiente Linux completo di librerie (glibc, uclibc-ng o musl), numerose applicazioni e l'eseguibile busybox.
Questa procedura è analoga a quella usata per la realizzazione di qualsiasi sistema embedded Linux-based: router, decoder, lettory DVD...
Scompattare il tool
$ tar -xzvf buildroot-2026.02.tar.gz
Entrare nella directory principale
$ cd buildroot-2026.02/
BusyBox
Configurare busybox selezionando i programmi che si ritengono necessari
$ make busybox-menuconfig
Kernel
Configurare il kernel per la compilazione
$ make linux-menuconfig
Escludere tutto ciò che non è strettamente necessario per risparmiare spazio su disco, quanto segue dovrà essere necessariamente presente per ottenere un sistema minimo avviabile.
- Code maturity level-> Prompt for development
- Processor type and features-> Support for your processor
- General setup-> kernel support for ELF binaries
- Block devices-> RAM disk support
- File systems-> /proc filesystem, tmpfs, ext2
- Character devices-> Virtual terminal
- Character devices-> Support for console on virtual terminal
- Console drivers-> VGA text console
- General setup-> PCI support
- I driver delle schede di rete che interessa supportare (ne, ne2k, rtl8139too, rtl8139c, pcnet32, e1000)
- Iptables se si necessita di un firewall
- Un driver IDE generico (generic ATA) su libata
- Block devices-> Normal PC floppy disk support, se ci interesse il supporto al floppy
Se si deve limitare al massimo la grandezza dell'immagine del kernel (bzImage) si può scegliere con un algoritmo di compressione come lzma. Questo però aumenterà il consumo di RAM e per macchine molto vecchie come i386 o i486 probabilmente è meglio optare per gz o al massimo bz2.
Configurazione generale
$ make menuconfig
Indicare:
- Architettura di destinazione (i386, i486, i586…)
- Opzioni di compilazione
- Versione del kernel da usare
- Configurazione di partenza del kernel
Kernel ---> Kernel configuration (Use the architecture default configuration)
- Eventuali altri programmi non presenti in busybox (es.: mdev, dropbear, nano, iptables, ncftp, lynx, mutt)
- Si consiglia l'opzione di compilazione gcc -Os al fine di ridurre al minimo la grandezza dei binari
Filesystem images
Esistono varie tipologie di filesystem da utilizzare per il sistema che verrà compilato: immagini ext2, squashfs, direttamente nel initramfs o semplicemente in un tarball. Nel caso ci interessi costruire un floppy, al fine di sfruttare al meglio lo spazio, consiglio di scegliere ext2 compresso, anche in questo caso con lzma si ottengono filesystem fino al 20% più piccoli rispetto a quelli compressi con bzip2, ma il sistema necessiterà di maggiore RAM per caricarli (70-80MB).
Terminata la fase di configurazione si può procedere con la compilazione
$ make
Nella directory buildroot-2026.02/output/images risiede il prodotto finito.
Si tratterà di 2 o 3 file: bzImage, rootfs.i486.ext2 e la sua versione compressa rootfs.i486.ext2.lzma.
Le dimensioni dei file bzImage e rootfs.i486.ext2.lzma devono essere sufficientemente contenute per entrare su un floppy.
Nel caso fossero solo di poco più grandi (100-200 KB), si può rimediare con la formattazione non standard del floppy: a 1.72 MB invece che a 1.44MB.
$ sudo mknod /dev/fd0u1722 b 2 60 $ fdformat /dev/fd0u1722 $ mkfs.vfat /dev/fd0u1722
Se non presente creare un mount point per il floppy
$ sudo mkdir /mnt/floppy
Montare il floppy
$ sudo mount /dev/fd0u1722 /mnt/floppy
Copiarvi i due file
$ sudo cp buildroot/output/images/bzImage /mnt/floppy $ sudo cp buildroot/output/images/rootfs.i486.ext2.lzma /mnt/floppy
Adesso occorre installare un boot loader sul floppy. Essendo leggero, semplice da usare e supportando la FAT16 si consiglia di usare syslinux.
Se syslinux non fosse presente sul vostro sistema installatelo con:
$ sudo apt-get install syslinux
per sistemi Debian-based
O con
# pacman -S syslinux
su Arch Linux
Con un editor di testo (es. nano) create il file di configurazione per il boot loader: syslinux.cfg
$ sudo nano /mnt/floppy/syslinux.cfg
Riportate quanto segue, eventualmente adattandolo alle vostre esigenze:
default start timeout 5 prompt 1 label start kernel bzImage append initrd=rootfs.i486.ext2.lzma BOOTDEV=fd0 ramdisk_size=16384 vga=0 root=/dev/ram0
Se è stato usato un altro tipo di filesystem sostituire rootfs.i486.ext2.lzma con rootfs.i486.ext2.bz2, rootfs.i486.ext2.squashfs…
Installare il bootloader sul floppy
$ sudo syslinux /dev/fd0
Smontare il floppy
$ cd $ sudo umount /mnt/floppy
In caso di necessità di modifiche al ramdisk bisognerà copiarlo sul disco fisso, decomprimerlo, montarlo in loop ed effettuare le modifiche in questo modo:
$ sudo mount /mnt/floppy $ sudo cp /mnt/floppy/rootfs.i486.ext2.lzma $ sudo lzma -d rootfs.i486.ext2.lzma $ sudo mkdir /mnt/tmp $ sudo mount -o loop rootfs.i486.ext2 /mnt/tmp $ cd /mnt/tmp
Effettuare le modifiche e poi smontare il tutto
$ cd $ sudo umount /mnt/tmp
Ricomprimere il ramdisk e copiarlo sul floppy per sostituire quello vecchio
$ sudo lzma -c9 rootfs.i486.ext2 > rootfs.i486.ext2.lzma $ sudo cp rootfs.i486.ext2.lzma /mnt/floppy $ sudo umount /mnt/floppy
Un floppy già pronto con le seguenti caratteristiche e presente qui
- Linux kernel 3.2.9
- Busybox 1.19.4
- Programmi inclusi: ftpd, ncftp, dropbear (ssh client/server), httpd, iptables, dhcp client/server, nc, wget, fdisk.
- Requisiti minimi: i586 (60 MHz), 74 Mb RAM, floppy driver 3,5"
- Hardware supportato: processori i586 compatibili, Bus PCI (niente ISA), Controller Generic ATA disk; schede di rete Novell NE2000 (e cloni), RealTek 8129, Intel PRO/1000 Gigabit Adapter.