Installazione di Debian Lenny su pendrive persistente (partendo da zero)
21 gennaio, 2009 10 commenti
Alcuni giorni fa, vi avevo anticipato che stavo provando una distribuzione debian su pendrive:
Sto riprendendo un lavoro pensato tempo fa, trattato in parte nel blog, che riguarda la creazione di piccole ISO o distro USB basate su debian e ubuntu, dedicate al file recovery, oppure usate come base per personalizzare le distro.
In questo post già accennavo come VirtualBox può essere utile per lavorare sia sulle immagini ISO in “collaborazione” con UCK e sia con distro costruite con debootstrap e chroot.
Ho provato in effetti diversi metodi e pendrive, cercando di salvare il contenuto su disco per poter replicare, partendo dal file unico compresso, il sistema debian. La scelta di creare l’archivio compresso è caduta su cpio con bzip2, abbandonando partimage perché per il ripristino necessita di una partizione e non è possibile lavorare in una directory. Uno dei documenti che ho letto è CPIO How-To
Questo post è scritto completamente da pendrive 🙂
La procedura di installazione di debian lenny inizia con lo scaricare Debian base in una directory, cosi come trattato in questo altro post.
Vi anticipo che è stato un lavoro lungo, non certo perfetto, che però mi ha permesso di analizzare comportamenti sia delle periferiche usb che del filesystem, nonché di trovare un metodo che sia facilmente esportabile senza perdita di dati, alcuni comandi come tar soffrono sui symlinks e nomi lunghi 8)
Anche se questo metodo è applicabile ai dischi esterni USB, lo scopo era di avere un sistema minimale con la possibilità di aggiungere tutto il necessario, rapido e che fosse in grado di accedere alla rete cablata o wireless, oppure di usarlo la rescue-pen come coltellino svizzero anche e soprattutto per il recupero dei dati. Nella pendrive da 2Gb, il sistema da 1Gb contiene Gnome e Nautilus base, Iceweasel, Wicd, Gparted, alcuni firmware wireless, mc, testdisk, ddrescue, smbclient, nbtscan e altro. La lista dei pacchetti installati è visibile su questo file o in questo se per caso voleste usare dpkg --set-selections
per ricostruirla
Per ora ho uploadato su sendspace.com i files splittati, spero che qualcuno possa ospitare il file di 320MB, sempre che ce ne sia necessità. Non è difficile infatti ricreare la distro, vedremo come.
Ho copiato e incollato quasi tutto quello che ho fatto in questo documento, sperando di non averlo troppo incasinato 🙂
Iniziamo creando una directory e scarichiamo la base ( E’ possibile partendo sia da Debian che da Ubuntu) …
$ sudo debootstrap lenny . http://ftp.it.debian.org/debian/
il processo dura diversi minuti e alla fine, pulendo la cache, si ottiene un filesystem di 150MB, che compresso con cpio in pipe con bzip2 ne occupa 47.
L’archivio base-lenny-05-cpio.bz2, aggiornato a oggi, è stato creato partendo dalla dir di lavoro con:
$ sudo su
# find . -print |cpio -ov -Hnewc | bzip2>../base-cpio.bz2
potete scaricarlo e decomprimerlo in una dir vuota con il comando:
$ cd path
$ bzcat base-lenny-05-cpio.bz2 |sudo cpio -iv
Questo post potrebbe diventare noioso per la sua lungaggine, ma vedrò di elencare almeno le parti necessarie e le caratteristiche della distro:
* Installazione di grub sulla pendrive usb:
# grub-install --no-floppy --root-directory=/mnt/debian/ /dev/sde
il file /pendrive/boot/grub/device.map deve contenere almeno
(hd0) /dev/sda
* il file /pendrive/boot/grub/menu.lst che ho usato:
default 0
timeout 10
color cyan/blue white/blue
title Debian USB
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-1-686 root=UUID=9b52555b-ed28-43a4-9d3b-e456c88d3f15 ro vga=791
initrd /boot/initrd.img-2.6.26-1-686
naturalmente dovete ricavarvi l’UUID della pendrive e sostituirlo in menu.lst
$ sudo blkid
/dev/sda1: LABEL=”USB2G” UUID=”9b52555b-ed28-43a4-9d3b-e456c88d3f15″ TYPE=”ext3″
* la pendrive ha una sola partizione ext3 attiva e non ha bisogno di swap, se avete una partizione sul disco interno potete attivarla con sudo swapon /dev/sdx 😉
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 2063 MB, 2063073280 bytes
255 heads, 63 sectors/track, 250 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 * 1 250 2008093+ 83 Linux
* sul mio PC fisso con scheda nvidia 8400 il monitor non viene correttamente riconosciuto, ho creato un file /etc/X11/xorg.conf.nvidia che uso al momento, ho dovuto usare noapic al boot (problema che avevo anche con Ubuntu 8.04)t>
* fstab
# /etc/fstab: static file system information.
#
/dev/sda1 / ext3 defaults 0 1
/dev/cdrom /media/cdrom0 udf,iso9660 user,noauto 0 0
proc /proc proc defaults 0 0
# none /proc/bus/usb usbfs devgid=46,devmode=664 0 0
** POSITIVO 🙂
il boot è veloce, provato su vari computer arriva al desktop in un tempo che va da 20 a 50 secondi, anche su hardware non recente, inoltre alcune pendrive sono più lente di altre.
il risultato delle ultime righe di dmesg (boot in circa 40 secondi) è visibile qui.
* I test sono stati fatti su 5 computer reali e su VirtualBox usando il disco usb mappato con VBoxManage, anche in questo caso il sistema è veloce, le Guest Additions non le ho installare per non inquinare il filesystem, la scheda vesa di VB, tutto sommato è soddisfacente.
* Ho abilitato sudo e modificato colori e .bashrc, ma di fatto non ho aggiunto o modificato parti importanti rispetto a Debian standard.
Questo post non è una bibbia, ma vuole essere un consiglio per chi voglia usare un sistema veloce e scalabile, oltre che persistente. Pensate a un’aula didattica dove con pochi euro (2G=5€) si può fornire uno strumento collaborativo notevole.
Le URL’s provvisorie per il download sono (popup banner):
“Name”,”Size”
“base-lenny-05-cpio.bz2“,”46520299”,
“debian-05-cpio.bz2_lenny_aa“,”85000000″,”
“debian-05-cpio.bz2_lenny_ab“,”85000000″,”
“debian-05-cpio.bz2_lenny_ac“,”85000000″,”
“debian-05-cpio.bz2_lenny_ad“,”71755095″,”
“MD5SUM.txt“,”110″,”
UPDATE:
la password sia di ‘ root’ che dell’utente ‘debianuser’ è: debianuser
UPDATE 2: I FILES SONO STATI RIMOSSI, SE SERVE POSSO RIMETTERLI SU ALTRO SPAZIO WEB,
* per ricomporre l’immagine occorre usare:
$ cat debian-05-cpio.bz2_lenny_a*>debian-05-cpio.bz2
* Posizionarsi nella directory della pendrive vuota, scompattare il file e installare grub:
$ cd /mnt/debian
$ bzcat /path/debian-05-cpio.bz2|sudo cpio -iv
* installare grub con:
$ sudo grub-install --no-floppy --root-directory=/mnt/debian/ /dev/sde
Enjoy with Debian 🙂
Pingback: Installazione di Debian Lenny su pendrive persistente (partendo da zero) | Yourpage live news aggregator
Pingback: 100 Top Posts, Blogs Italiano Wopdrpess 22/1/2009 + 3/12/2008 « Kopanakinews’s Weblog
Ciao,
veramente un bel lavoro!!
Invece di usare cpio in pipe con bzip potresti usare afio:
find . -depth -print | afio -ovZ /dove_vuoi/archivio.afio
afio crea un archivio solido contenente i file compressi (…per file compression).
Non è meglio ext2: è più veloce dell’ ext3 ed il journaling in un dispositivo usb potrebbe portare ad un accorciamento drastico della vita tecnica del dispositivo stesso.
Un’altra soluzione potrebbe essere un mix del filesystem compresso cloop ( funziona anche con il kernel 2.6.28), unionfs ( per i files temporanei come i logs, ecc.) ed il montaggio di una partizione della chiavetta usb.
La mia chiavetta ha due partizioni: una fat32 di uso generale ( la prima..) ed una ext2 con grub ed il mio minilinux.
Ciao
Max
@stirner
Grazie dei complimenti e del suggerimento, non sapevo di afio, mi leggerò la documentazione.
Cerco di risponderti per punti:
* ho scelto ext3 proprio per le innumerevoli prove fatte sia su pc reali che su virtualbox, se non smontavo la penna mi trovavo inconsistenze “scomode”, ma è chiaro che hai ragione tu, ext2 è meno intensivo.
* la modalità con con cloop e squashfs è più lenta e non permette di fare modifiche veloci, proprio stamattina ho limato la penna da due Gb e ho copiato i 750 MB su una da 1G (modello senza guscio) e in soli 30 secondi iceweasel aveva già aperto la pagina debian.org ^__^
* l’archivio creato con afio -ovZ è 380M contro 320 di quello cpio.bz2, ma questo vedo che dipende da Z (compress) contro bzip2, non so adesso se può incatenare con quest’ultimo, vedrò
Non so se questa cosa interesserà molti, mi sembrava importante sottolineare che spesso si ha bisogno di sistemi snelli con poco “a bordo” e che però siano scalabili, Debian in questo è regina incontrastata 🙂
Ciao e grazie,
Antonio
afio può usare anche bzip2 con l’opzione -P: -P bzip2.
Non uso squashfs ma cloop+aufs.
L’operazione di generazione del filesystem compresso è sicuramente molto più lenta di quella che stai usando attualmente.
Considera che create_compressed_fs accetta diverse opzioni tra le quali l’algoritmo di compressione ( zlib, 7zip, ecc.) influendo sul tempo di compressione e le dimensioni del file finale.
Si possono tenere i file di configurazione ” fuori” dal filesystem compresso, ad esempio in un archivio afio che viene scompattato al boot.
Con l’opzione -L -1 il filesystem compresso è circa 1/3 di quello espanso.
Clonando il filesystem compresso nella ram (..questa è la cosa che mi piace di più..) si ha un sistema velocissimo, aggiornabile al volo ( garzie ad aufs..), supersicuro in termini di privacy, hackers, virus ( al riavvio non ci sarà nessuna traccia di attività negli hd e nelle pennette usb). Si possono addirittura mandare in standby i dischi rigidi, abbassare la frequenza della cpu …e lasciare il pc accesso per giorni in tutta tranquillità!!
L’operazione di trasferimento in ram di un filesystem compresso di 225M, equivalenti a 646M, (…sono anch’io un minimalista..) avviene in circa 7-8 secondi…poi il sistema vola dalla ram 😉
Di nuovo complimenti e buon sviluppo 😉
Max
@stirner
grazie dei preziosi suggerimenti, mi farebbe piacere saperne di più 🙂
Ho provato a usare
find . -depth -mount -print0 | afio -ov -z -Z -P bzip2 -0 ../debian-05-afio.bz2
. -- okay
afio: 348m+1023k+0 bytes written in 712 seconds. The operation was successful.
ma l’archivio è ancora di 360 contro i 320 del primo comando, però quello che mi interessa di più è quello che dici su cloop+aufs mi ricorda la slax, che ho usato tempo fa.
Sarebbe bello fare una cosa simile con debian, vedremo.
Grazie di nuovo,
Antonio
Afio comprime “per file” quindi gli archivi saranno sempre un pochino più grandi di quelli compressi “per archivio”, se un archivio compresso “per archivio” si danneggia con molta probabilità si perdono tutti i dati, con una compressione per file invece si perdono solo i dati illeggibili.
Nel tuo caso forse questa particolarità non vale la perdita del 10-11% di spazio.
In ogni caso la migliore compressione con afio:
afio -ovZ -P bzip2 -Q -9
Cloop+aufs è l’approccio di Klaus Knopper per la famosa knoppix che è anch’ essa una debian derivata.
@stirner
Mitico.
Ok, ti ringrazio delle precisazioni, proverò a seguire anche questa strada, chissà che non si riesca a mettere su una mini iso allettante, distrowatch non aspetta altro 🙂
Ai pigri consiglio di provare sidux. il livecd installa un sistema generico (ovvero, che si riconfigura ad ogni boot sull’hardware che prova) su chiavetta. Al contrario, se non ricordo male di ubuntu, che installa su usb un sistema adattato all’hardware.
Una volta installato si puo’ convertire in debian sid, se serve.
@obbligatorio
Su sidux tempo fa ci sono stati alcuni problemi legati ai repo, e purtroppo mi pare che abbia solo kde, però sono forse arrugginito e mi sbaglio.
Per ciò che riguarda Ubuntu il file system è compresso con squahfs (e quindi immutabile), ma le modifiche vengono salvate sul file casper-rw (formattato ext3), forse ti riferisci che l’hardware è riconosciuto e salvato in questo file, ma la chiavetta è generica 😉
Grazie molte per il suggerimento,
Antonio