Differenze tra le versioni di "Linux minimale per PC i386/i486"
(→output) |
|||
| (35 versioni intermedie di 2 utenti non mostrate) | |||
| Riga 1: | Riga 1: | ||
| − | + | =Distribuzioni per i386-i486= | |
| − | + | Per il recupero di macchine particolarmente vecchie esistono delle mini distribuzioni prive di ambiente grafico e talmente compatte da poter essere contenute in un unico floppy. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | NB: i386 non più supportato dal kernel 3.8 (2012), i486 dal kernel 7.1 | |
| − | |||
| − | + | {| class="wikitable sortable" | |
| − | + | ! Distribuzione | |
| − | + | ! Versione Kernel | |
| − | + | ! Supporto avvio | |
| − | + | ! CPU minima | |
| − | + | ! RAM minima | |
| − | + | ! Uso ideale | |
| − | |||
| − | |||
| − | |||
| − | + | |- | |
| + | | [http://delicate-linux.net/ DeLi(cate) Linux] | ||
| + | | 2.4.37.11 | ||
| + | | CDROM | ||
| + | | i386 | ||
| + | | 8 MB (console) - 64 MB (GUI) | ||
| + | | Trashware | ||
| − | + | |- | |
| − | + | | [http://www.fdlinux.com/download.php FD Linux] | |
| + | | 2.4.20 | ||
| + | | 1 floppy | ||
| + | | 386SX | ||
| + | | 4 MB | ||
| + | | DOS/Linux compatto | ||
| − | + | |- | |
| + | | [http://www.zelow.no/floppyfw floppyfw] | ||
| + | | 2.4.37.11 | ||
| + | | 1 floppy | ||
| + | | 386SX | ||
| + | | 12 MB | ||
| + | | Router/firewall embedded (iptables) | ||
| + | |- | ||
| + | | [https://web.archive.org/web/20190312063410/http://chris.silmor.de/hal91/ HAL91] | ||
| + | | 2.0.39 | ||
| + | | 1 floppy | ||
| + | | i386 | ||
| + | | 8 MB | ||
| + | | Network solo con scheda NE2000 ISA | ||
| − | + | |- | |
| − | + | | [https://micheleandreoli.org/public/Software/mulinux// muLinux] | |
| + | | 2.0.36 | ||
| + | | 1+ floppy modulari | ||
| + | | 386SX | ||
| + | | 4 MB | ||
| + | | Recupero PC vintage | ||
| − | + | |- | |
| − | + | | [http://www.tinycorelinux.com Tiny Core Linux] | |
| + | | 6.18.2 | ||
| + | | CDROM | ||
| + | | i486DX | ||
| + | | 80 MB | ||
| + | | Minimalismo estremo, appliance | ||
| − | + | |- | |
| − | + | | [https://sourceforge.net/projects/zool5remastered/ Zool] | |
| + | | 2.4.37.11 | ||
| + | | 1 floppy | ||
| + | | i386 | ||
| + | | 12 MB | ||
| + | | Networking completo (httpd, ftpd, telnetd) | ||
| + | |} | ||
| + | |||
| + | =Distribuzioni per i586-i686= | ||
| + | {| class="wikitable sortable" | ||
| + | ! Distribuzione Linux | ||
| + | ! Versione Kernel | ||
| + | ! CPU minima | ||
| + | ! RAM minima | ||
| + | ! Uso ideale | ||
| + | |||
| + | |- | ||
| + | | [http://alpinelinux.org Alpine] | ||
| + | | 6.18.1-lts | ||
| + | | i686 | ||
| + | | 128 MB (console) | ||
| + | | Server Minimali, Container | ||
| + | |||
| + | |- | ||
| + | | [http://www.damnsmalllinux.org Damn Small Linux 2024] | ||
| + | | 5.10.188 | ||
| + | | i686 | ||
| + | | 128 MB (console) | ||
| + | | Desktop leggero | ||
| + | |||
| + | |- | ||
| + | | [http://www.puppylinux.com Puppy] | ||
| + | | 6.6.137 | ||
| + | | i686 | ||
| + | | 128 MB (console) | ||
| + | | Desktop leggero (Slackware 15 base) | ||
| + | |||
| + | |- | ||
| + | | [http://www.slitaz.org SliTaz] | ||
| + | | 3.16.55 | ||
| + | | i686 | ||
| + | | 64 MB (console) - 256 MB (GUI) | ||
| + | | Desktop leggero | ||
| + | |||
| + | |} | ||
| + | |||
| + | {| class="wikitable sortable" | ||
| + | ! BSD | ||
| + | ! Versione | ||
| + | ! CPU minima | ||
| + | ! RAM minima | ||
| + | ! Uso ideale | ||
| + | |||
| + | |- | ||
| + | | [http://www.openbsd.org OpenBSD] | ||
| + | | 7.8 | ||
| + | | i586 | ||
| + | | 32 MB (console) | ||
| + | | Server/router | ||
| + | |||
| + | |- | ||
| + | | [http://www.netbsd.org NetBSD] | ||
| + | | 10 | ||
| + | | i586 | ||
| + | | 64 MB (console) | ||
| + | | Server/router | ||
| + | |||
| + | |} | ||
| − | + | Se si cerca un'esperienza desktop per un Pentium 100-200Mhz con 32-64 MB RAM ci si dovrà rassegnare a recuperare una distribuzione dell'epoca come [https://archive.org/download/mandrake-7.2-i386_202304/mandrake-7.2-i386.iso Mandrake 7.2] | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | =Buildroot= | |
| − | + | Soluzioni preconfezionate (come quelle sopra elencate) potrebbero non rispondere alle nostre esigenze: kernel datati, driver o applicativi mancanti. | |
| − | In | + | In questi casi la soluzione più rapida è quella di costruirsi un sistema Linux personalizzato. Per farlo il metodo più semplice è utilizzare [https://buildroot.org/download.html Buildroot], un tool che permette la cross-compilazione di un ambiente Linux completo di librerie (glibc, uclibc-ng o musl), applicazioni e l'indispensabile busybox. |
| − | + | 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 | $ make busybox-menuconfig | ||
| − | + | ==Kernel== | |
| + | Configurare il kernel per la compilazione | ||
$ make linux-menuconfig | $ make linux-menuconfig | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | I driver delle schede di rete che | + | 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 | $ make | ||
| − | + | ===output=== | |
| − | + | Nella directory buildroot-2026.02/output/images risiede il prodotto finito. | |
| − | Nella directory buildroot/output/images | + | Se lasciate le impostazioni standard si tratterà di 3 file: bzImage, rootfs.ext2, rootfs.tar. |
| − | |||
| − | |||
| − | + | ==Immagine per floppy disk== | |
| + | 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 | $ sudo mknod /dev/fd0u1722 b 2 60 | ||
$ fdformat /dev/fd0u1722 | $ fdformat /dev/fd0u1722 | ||
$ mkfs.vfat /dev/fd0u1722 | $ mkfs.vfat /dev/fd0u1722 | ||
| − | Se non | + | Se non presente creare un mount point per il floppy |
$ sudo mkdir /mnt/floppy | $ sudo mkdir /mnt/floppy | ||
| − | + | Montare il floppy | |
$ sudo mount /dev/fd0u1722 /mnt/floppy | $ sudo mount /dev/fd0u1722 /mnt/floppy | ||
| − | + | Copiarvi i due file | |
$ sudo cp buildroot/output/images/bzImage /mnt/floppy | $ sudo cp buildroot/output/images/bzImage /mnt/floppy | ||
$ sudo cp buildroot/output/images/rootfs.i486.ext2.lzma /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: | |
| − | + | ||
| − | Con un editor di testo create il file syslinux.cfg | + | $ sudo apt-get install syslinux |
| − | $ sudo nano | + | 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 | default start | ||
| Riga 112: | Riga 249: | ||
label start | label start | ||
kernel bzImage | kernel bzImage | ||
| − | append initrd=rootfs.i486.ext2. | + | append initrd=rootfs.i486.ext2.lzma BOOTDEV=fd0 ramdisk_size=16384 vga=0 root=/dev/ram0 |
| − | Se | + | 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 | $ sudo syslinux /dev/fd0 | ||
| − | + | Smontare il floppy | |
$ cd | $ cd | ||
$ sudo umount /mnt/floppy | $ 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 mount /mnt/floppy | ||
| − | $ sudo cp /mnt/floppy/rootfs.i486.ext2. | + | $ sudo cp /mnt/floppy/rootfs.i486.ext2.lzma |
| − | $ sudo | + | $ sudo lzma -d rootfs.i486.ext2.lzma |
$ sudo mkdir /mnt/tmp | $ sudo mkdir /mnt/tmp | ||
$ sudo mount -o loop rootfs.i486.ext2 /mnt/tmp | $ sudo mount -o loop rootfs.i486.ext2 /mnt/tmp | ||
$ cd /mnt/tmp | $ cd /mnt/tmp | ||
| − | + | ||
| − | e poi | + | Effettuare le modifiche e poi smontare il tutto |
$ cd | $ cd | ||
$ sudo umount /mnt/tmp | $ 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 lzma -c9 rootfs.i486.ext2 > rootfs.i486.ext2.lzma | ||
$ sudo cp rootfs.i486.ext2.lzma /mnt/floppy | $ sudo cp rootfs.i486.ext2.lzma /mnt/floppy | ||
$ sudo umount /mnt/floppy | $ sudo umount /mnt/floppy | ||
| + | ==Immagine per hard disk== | ||
| + | Se un floppy è troppo piccolo per le nostre esigenze si può costruire il sistema dentro ad un file d'immagine da copiare sull'hard disk della nostra macchina direttamente con dd. Creiamo quindi un'immagine da 250 MB, che dovrebbe essere più che sufficiente per un sistema testuale | ||
| + | dd if=/dev/zero of=output/images/486linux.img bs=1M count=250 | ||
| + | |||
| + | Montiamo l'immagine per poter formattare il filesystem e copiarci i dati | ||
| + | # losetup -Pf 486linux.img | ||
| + | # mkfs.ext2 /dev/loop0p1 | ||
| + | Probabilmente il miglior filesystem per un sistema così vecchio è ext2, si rinuncia al journaling, ma ci si guadagna parecchio in performance. | ||
| + | # mkfs.ext2 -m 0 -O none /dev/loop0p1 | ||
| + | |||
| + | Montiamo il tutto | ||
| + | # mount /dev/loop0p1 /mnt/img | ||
| + | |||
| + | Copiamoci il filesystem ed il kernel | ||
| + | # tar xf buildroot-2026.02/output/images/rootfs.tar -C /mnt/img | ||
| + | # mkdir -p /mnt/img/boot | ||
| + | # cp buildroot-2026.02/output/images/bzImage /mnt/img/boot/bzImage | ||
| + | |||
| + | Come bootloader, anche in questo caso si è optato per il semplicissimo syslinux. | ||
| + | sudo pacman -S syslinux | ||
| + | sudo extlinux --install /mnt/img/boot/ | ||
| + | |||
| + | Configuriamo il bootloader (/mnt/boot/syslinux.cfg) | ||
| + | DEFAULT linux | ||
| + | timeout 5 | ||
| + | prompt 1 | ||
| + | LABEL linux | ||
| + | KERNEL /boot/bzImage | ||
| + | APPEND root=/dev/sda1 ro | ||
| + | |||
| + | ===Tastiera italiana=== | ||
| + | Se ci interessa la tastiera italiana creiamo dal nostro sistema host il file .bmap da far caricare a busybox | ||
| + | # loadkeys -qb it > it.bmap | ||
| + | # mv it.bmap output/target/etc/ | ||
| + | # make | ||
| + | |||
| + | Possiamo creare uno script d'avvio tipo per far caricare automaticamente la tastiera italiana (ricordatevi di renderlo eseguibile). | ||
| + | |||
| + | '''/etc/init.d/S40keyboard''' | ||
| + | #!/bin/sh | ||
| + | loadkmap < /etc/it.bmap | ||
| + | |||
| + | ===Hotplug=== | ||
| + | Per l'hotplug dei moduli occorre aver installato il programma mdev, anche in questo caso converrà scrivere uno script di avvio | ||
| + | |||
| + | '''/etc/init.d/S10mdev''' | ||
| + | #!/bin/sh | ||
| + | case "$1" in | ||
| + | start) | ||
| + | echo "Starting mdev..." | ||
| + | # Scansiona /sys per creare i device node per l'hardware già presente | ||
| + | /sbin/mdev -s | ||
| + | # Questo è il "coldplug": trova tutti i moduli dell'hardware già presente e li carica | ||
| + | echo "Loading kernel modules for existing hardware..." | ||
| + | find /sys/ -name modalias | xargs sort -u | xargs modprobe -abq | ||
| + | ;; | ||
| + | stop) | ||
| + | echo "Stopping mdev..." | ||
| + | ;; | ||
| + | *) | ||
| + | echo "Usage: $0 {start|stop}" | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
[[Category:howto]] | [[Category:howto]] | ||
Versione attuale delle 09:02, 23 mag 2026
Distribuzioni per i386-i486
Per il recupero di macchine particolarmente vecchie esistono delle mini distribuzioni prive di ambiente grafico e talmente compatte da poter essere contenute in un unico floppy.
NB: i386 non più supportato dal kernel 3.8 (2012), i486 dal kernel 7.1
| Distribuzione | Versione Kernel | Supporto avvio | CPU minima | RAM minima | Uso ideale |
|---|---|---|---|---|---|
| DeLi(cate) Linux | 2.4.37.11 | CDROM | i386 | 8 MB (console) - 64 MB (GUI) | Trashware |
| FD Linux | 2.4.20 | 1 floppy | 386SX | 4 MB | DOS/Linux compatto |
| floppyfw | 2.4.37.11 | 1 floppy | 386SX | 12 MB | Router/firewall embedded (iptables) |
| HAL91 | 2.0.39 | 1 floppy | i386 | 8 MB | Network solo con scheda NE2000 ISA |
| muLinux | 2.0.36 | 1+ floppy modulari | 386SX | 4 MB | Recupero PC vintage |
| Tiny Core Linux | 6.18.2 | CDROM | i486DX | 80 MB | Minimalismo estremo, appliance |
| Zool | 2.4.37.11 | 1 floppy | i386 | 12 MB | Networking completo (httpd, ftpd, telnetd) |
Distribuzioni per i586-i686
| Distribuzione Linux | Versione Kernel | CPU minima | RAM minima | Uso ideale |
|---|---|---|---|---|
| Alpine | 6.18.1-lts | i686 | 128 MB (console) | Server Minimali, Container |
| Damn Small Linux 2024 | 5.10.188 | i686 | 128 MB (console) | Desktop leggero |
| Puppy | 6.6.137 | i686 | 128 MB (console) | Desktop leggero (Slackware 15 base) |
| SliTaz | 3.16.55 | i686 | 64 MB (console) - 256 MB (GUI) | Desktop leggero |
| BSD | Versione | CPU minima | RAM minima | Uso ideale |
|---|---|---|---|---|
| OpenBSD | 7.8 | i586 | 32 MB (console) | Server/router |
| NetBSD | 10 | i586 | 64 MB (console) | Server/router |
Se si cerca un'esperienza desktop per un Pentium 100-200Mhz con 32-64 MB RAM ci si dovrà rassegnare a recuperare una distribuzione dell'epoca come Mandrake 7.2
Buildroot
Soluzioni preconfezionate (come quelle sopra elencate) potrebbero non rispondere alle nostre esigenze: kernel datati, driver o applicativi mancanti.
In questi casi la soluzione più rapida è quella di costruirsi un 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), applicazioni e l'indispensabile busybox.
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
output
Nella directory buildroot-2026.02/output/images risiede il prodotto finito. Se lasciate le impostazioni standard si tratterà di 3 file: bzImage, rootfs.ext2, rootfs.tar.
Immagine per floppy disk
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
Immagine per hard disk
Se un floppy è troppo piccolo per le nostre esigenze si può costruire il sistema dentro ad un file d'immagine da copiare sull'hard disk della nostra macchina direttamente con dd. Creiamo quindi un'immagine da 250 MB, che dovrebbe essere più che sufficiente per un sistema testuale
dd if=/dev/zero of=output/images/486linux.img bs=1M count=250
Montiamo l'immagine per poter formattare il filesystem e copiarci i dati
# losetup -Pf 486linux.img # mkfs.ext2 /dev/loop0p1
Probabilmente il miglior filesystem per un sistema così vecchio è ext2, si rinuncia al journaling, ma ci si guadagna parecchio in performance.
# mkfs.ext2 -m 0 -O none /dev/loop0p1
Montiamo il tutto
# mount /dev/loop0p1 /mnt/img
Copiamoci il filesystem ed il kernel
# tar xf buildroot-2026.02/output/images/rootfs.tar -C /mnt/img # mkdir -p /mnt/img/boot # cp buildroot-2026.02/output/images/bzImage /mnt/img/boot/bzImage
Come bootloader, anche in questo caso si è optato per il semplicissimo syslinux.
sudo pacman -S syslinux sudo extlinux --install /mnt/img/boot/
Configuriamo il bootloader (/mnt/boot/syslinux.cfg)
DEFAULT linux timeout 5 prompt 1 LABEL linux KERNEL /boot/bzImage APPEND root=/dev/sda1 ro
Tastiera italiana
Se ci interessa la tastiera italiana creiamo dal nostro sistema host il file .bmap da far caricare a busybox
# loadkeys -qb it > it.bmap # mv it.bmap output/target/etc/ # make
Possiamo creare uno script d'avvio tipo per far caricare automaticamente la tastiera italiana (ricordatevi di renderlo eseguibile).
/etc/init.d/S40keyboard
#!/bin/sh loadkmap < /etc/it.bmap
Hotplug
Per l'hotplug dei moduli occorre aver installato il programma mdev, anche in questo caso converrà scrivere uno script di avvio
/etc/init.d/S10mdev
#!/bin/sh
case "$1" in
start)
echo "Starting mdev..."
# Scansiona /sys per creare i device node per l'hardware già presente
/sbin/mdev -s
# Questo è il "coldplug": trova tutti i moduli dell'hardware già presente e li carica
echo "Loading kernel modules for existing hardware..."
find /sys/ -name modalias | xargs sort -u | xargs modprobe -abq
;;
stop)
echo "Stopping mdev..."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac