Differenze tra le versioni di "Floppy Linux"
(7 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
Esistono decine di distribuzioni Linux leggere, studiate appositamente per girare su hardware obsoleto | Esistono decine di distribuzioni Linux leggere, studiate appositamente per girare su hardware obsoleto | ||
− | + | ||
* [http://www.damnsmalllinux.org Damn Small] | * [http://www.damnsmalllinux.org Damn Small] | ||
+ | * [https://archiveos.org/deli/ DeLi Linux] | ||
* [http://www.puppylinux.com Puppy] | * [http://www.puppylinux.com Puppy] | ||
* [http://www.slitaz.org SliTaz] | * [http://www.slitaz.org SliTaz] | ||
Riga 7: | Riga 8: | ||
A volte però, quando si tenta di recuperare qualche macchina particolarmente vecchia (magari per trasformarla in router, server web o proxy), anche queste soluzioni possono risultare inadeguate. | A volte però, quando si tenta di recuperare qualche macchina particolarmente vecchia (magari per trasformarla in router, server web o proxy), anche queste soluzioni possono risultare inadeguate. | ||
− | Ecco che possono venire in nostro soccorso | + | Ecco che possono venire in nostro soccorso delle mini distribuzioni Linux prive di ambiente grafico e talmente compatte da poter essere contenute in un unico floppy. |
− | |||
* [http://www.fdlinux.com/download.php Fd Linux] | * [http://www.fdlinux.com/download.php Fd Linux] | ||
* [http://www.zelow.no/floppyfw/ floppyfw] | * [http://www.zelow.no/floppyfw/ floppyfw] | ||
* [http://chris.silmor.de/hal91/ HAL91] | * [http://chris.silmor.de/hal91/ HAL91] | ||
− | * [http:// | + | * [http://micheleandreoli.org/public/Software/mulinux/ MuLinux] |
* [http://smartlinux.sourceforge.net S.M.A.R.T.] | * [http://smartlinux.sourceforge.net S.M.A.R.T.] | ||
− | * [http:// | + | * [http://distro.ibiblio.org/polypux/external/smalllinux/ Small Linux] |
* [http://www.toms.net/rb/ tomsrtbt] | * [http://www.toms.net/rb/ tomsrtbt] | ||
* [http://sourceforge.net/projects/trinux/files/ Trinux] | * [http://sourceforge.net/projects/trinux/files/ Trinux] | ||
− | * [http://zoollinux.berlios.de/doku.php Zool] | + | * [https://web.archive.org/web/20070629142617/http://zoollinux.berlios.de/doku.php Zool] |
− | + | Soluzioni preconfezionate (come quelle sopra elencate) possono talvolta non rispondere completamente alle nostre esigenze. Spesso hanno kernel datati (2.0, 2.2) o magari mancano proprio dell'applicazione o del driver di cui abbiamo bisogno. | |
− | In questi casi l'unica strada percorribile è quella di costruirsi il proprio floppy Linux personalizzato | + | In questi casi l'unica strada percorribile è quella di costruirsi il proprio floppy Linux personalizzato. Per farlo il metodo più semplice è utilizzare [http://buildroot.uclibc.org Buildroot], un tarball che permette la cross-compilazione di un ambiente Linux completo usando le leggerissime librerie uClibc e l'eseguibile busybox. |
L'ultima versione disponibile e scaricabile da questo [http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2 indirizzo]. | L'ultima versione disponibile e scaricabile da questo [http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2 indirizzo]. | ||
− | + | Questa procedura è analoga a quella usata per la realizzazione di qualsiasi sistema embedded Linux-based: router, decoder, lettory DVD... | |
− | + | Scompattare il buildroot | |
$ tar -xjvf buildroot-snapshot.tar.bz2 | $ tar -xjvf buildroot-snapshot.tar.bz2 | ||
− | + | Entrare nella directory principale | |
$ cd buildroot | $ cd buildroot | ||
− | + | Configurare il toolchain | |
$ make menuconfig | $ make menuconfig | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Indicare: | |
− | + | ||
+ | architettura di destinazione (i386, i486, i586…) | ||
+ | |||
+ | opzioni di compilazione | ||
+ | |||
+ | versione del kernel da usare | ||
+ | |||
+ | eventuali altri programmi non presenti in busybox (es. dropbear, un client/server ssh) | ||
+ | |||
+ | root filesystem di destinazione | ||
− | + | Esistono varie tipologie di filesystem tra cui scegliere, tra queste l'ext2 compresso con bzip2 o lzma. | |
+ | Con lzma si ottengono filesystem fino al 20% più piccoli rispetto a quelli compressi con bzip2, ma il sistema necessiterà di maggiore memoria (RAM) per caricarli. | ||
− | Se il PC che che avete a disposizione non ha almeno 70-80 MB di RAM | + | Se il PC che che avete a disposizione non ha almeno 70-80 MB di RAM è preferibile optare per la compressione con bzip2, se la quantità di memoria non è un problema la compressione con lzma è sicuramente preferibile. |
'''Per poter caricare correttamente il prompt del login è necessario sostituire''' | '''Per poter caricare correttamente il prompt del login è necessario sostituire''' | ||
'''ttyS0 con tty1 nelle opzioni di configurazione del getty.''' | '''ttyS0 con tty1 nelle opzioni di configurazione del getty.''' | ||
− | + | Configurare busybox selezionando i programmi che si ritengono necessari | |
$ make busybox-menuconfig | $ make busybox-menuconfig | ||
− | + | 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-> Normal PC floppy disk support | ||
+ | |||
+ | 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, iptables se si necessita di un firewall, un driver ide generico per poter montare un hard disk ATA. | ||
− | Per risparmiare | + | Per risparmiare spazio è preferibile comprimere l'immagine del kernel (bzImage) con l'algoritmo di compressione lzma. |
− | + | Terminata la fase di configurazione si può procedere con la compilazione | |
$ make | $ make | ||
− | Se | + | Se qualcosa dovesse andare storto normalmente è sufficiente identificare il programma incriminato e vedere se cambiando versione la compilazione va buon fine. |
− | |||
− | |||
− | |||
− | |||
− | + | Nella directory buildroot/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 | $ 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 134: | ||
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 | ||
+ | |||
+ | Un floppy già pronto con le seguenti caratteristiche e presente [http://golem.linux.it/files/spookyh/fspooky_v05.tar.xz 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. | ||
[[Category:howto]] | [[Category:howto]] |
Versione attuale delle 15:39, 26 feb 2023
Esistono decine di distribuzioni Linux leggere, studiate appositamente per girare su hardware obsoleto
A volte però, quando si tenta di recuperare qualche macchina particolarmente vecchia (magari per trasformarla in router, server web o proxy), anche queste soluzioni possono risultare inadeguate. Ecco che possono venire in nostro soccorso delle mini distribuzioni Linux prive di ambiente grafico e talmente compatte da poter essere contenute in un unico floppy.
Soluzioni preconfezionate (come quelle sopra elencate) possono talvolta non rispondere completamente alle nostre esigenze. Spesso hanno kernel datati (2.0, 2.2) o magari mancano proprio dell'applicazione o del driver di cui abbiamo bisogno.
In questi casi l'unica strada percorribile è quella di costruirsi il proprio floppy Linux personalizzato. Per farlo il metodo più semplice è utilizzare Buildroot, un tarball che permette la cross-compilazione di un ambiente Linux completo usando le leggerissime librerie uClibc e l'eseguibile busybox. L'ultima versione disponibile e scaricabile da questo indirizzo.
Questa procedura è analoga a quella usata per la realizzazione di qualsiasi sistema embedded Linux-based: router, decoder, lettory DVD...
Scompattare il buildroot
$ tar -xjvf buildroot-snapshot.tar.bz2
Entrare nella directory principale
$ cd buildroot
Configurare il toolchain
$ make menuconfig
Indicare:
architettura di destinazione (i386, i486, i586…)
opzioni di compilazione
versione del kernel da usare
eventuali altri programmi non presenti in busybox (es. dropbear, un client/server ssh)
root filesystem di destinazione
Esistono varie tipologie di filesystem tra cui scegliere, tra queste l'ext2 compresso con bzip2 o lzma. Con lzma si ottengono filesystem fino al 20% più piccoli rispetto a quelli compressi con bzip2, ma il sistema necessiterà di maggiore memoria (RAM) per caricarli.
Se il PC che che avete a disposizione non ha almeno 70-80 MB di RAM è preferibile optare per la compressione con bzip2, se la quantità di memoria non è un problema la compressione con lzma è sicuramente preferibile.
Per poter caricare correttamente il prompt del login è necessario sostituire ttyS0 con tty1 nelle opzioni di configurazione del getty.
Configurare busybox selezionando i programmi che si ritengono necessari
$ make busybox-menuconfig
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-> Normal PC floppy disk support
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, iptables se si necessita di un firewall, un driver ide generico per poter montare un hard disk ATA.
Per risparmiare spazio è preferibile comprimere l'immagine del kernel (bzImage) con l'algoritmo di compressione lzma.
Terminata la fase di configurazione si può procedere con la compilazione
$ make
Se qualcosa dovesse andare storto normalmente è sufficiente identificare il programma incriminato e vedere se cambiando versione la compilazione va buon fine.
Nella directory buildroot/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.