|
Tjabo Kloppenburg (homepage) L'autore: Sono stato infettato nel 1996. Slackware 3.1. Mi piace scriptare in linguaggi come Python, Perl, GAWK e così via. E sono interessato nei dispositivi di boot. Tradotto in Italiano da: Alessandro Pellizzari <alex(at)neko.it> |
CDROM da 8cm Multiboot con Knoppix linux modificatoPremessa:
Dopo aver letto qualche articolo su LinuxFocus e su altre pagine web
ho finalmente trovato un metodo sicuro per creare CD-Rom bootabili,
dischi di boot puliti (senza virus), distribuzioni linux singolo-disco
o sistemi knoppix adattati. |
Assumeró che abbiate una conoscenza base di Linux e che sappiate
come masterizzare un CD. Dovreste avere un masterizzatore che possa
masterizzare anche i CD-RW. É utile perchè dagli errori si impara...
Dovreste avere un disco CD-RW, qualche CD-R (o CD-RW) da 8cm e un sistema
Linux funzionante con qualche centinaio di Mb liberi.
Piú tardi, per l'integrazione con knoppix, avremo bisogno di un collegamento
veloce a Internet, perchè installeremo alcuni pacchetti dalla rete.
Se sapete come configurare samba o nfs per avere un mirror debian locale
non avrete bisogno del collegamento veloce. Infine dovreste avere qualche
conoscenza di debian (installazione e disinstallazione dei pacchetti), o
un amico/canale irc a cui chiedere. E dovreste sapere anche come usare
il device loopback.
Fare il boot da CD é molto simile al boot da disco o hard-disk.
Qualcosa viene letto dal disco in memoria dal BIOS e quindi viene avviato.
All'inizio dell'epoca dei CD-Rom non erano pensati per farci il boot, quindi
i progettisti di hardware hanno dovuto creare una piccola magia:
dopo aver bruciato qualche cambiamento al BIOS proprietario per ogni
fornitore hanno finalmente definito lo standard "el torito".
Questo formato definisce una struttura nel CD-Rom che contiene
un'immagine di disco bootabile e un po' di codice nel BIOS che carica
la struttura in memoria - emulando un floppy in memoria. Dopo aver caricato
il disco in memoria fa il boot come qualsiasi altro disco.
Con questa emulazione di floppy possiamo costruire un CD-Rom bootabile con
una singola immagine di floppy da 1.44 Mb, o una da 2.88 Mb. Non avete mai
visto un floppy del genere, ma il BIOS puó usarlo. Facendo il boot da CD-Rom
non ci serve un disco da 2.88 Mb - solo un'immagine di disco creata
con il loop device e qualche tool.
Un singolo disco non é ancora un disco multi-boot. Ci serve un tool per
caricare e far partire altre immagini di boot da un filesystem.
Boot-Scriptor é nostro amico. Con boot-scriptor faremo il boot da CD-Rom
con un loader (senza emulazione di disco. É possibile anche questo), quindi
sceglieremo l'immagine di boot da un elenco. Boot-scriptor fará qualche
magia per caricare l'immagine in un'emulazione di floppy, facendo il boot
come se il floppy fosse nel lettore.
Questi dischi di boot possono essere immagini di dischi come i dischi di
boot di Windows in diverse versioni, un password-changer per NT,
mini-distribuzioni Linux o un disco di boot di Knoppix per caricare
un sistema Knoppix di medie dimensioni.
ci serve una directory con abbastanza spazio libero per costruire la
struttura di directory del nostro CD-Rom. Supponiamo di avere abbastanza
spazio in "/data
". La directory di base del nostro progetto
potrebbe essere "/data/mboot
". Qui dentro creiamo due directory,
"/toolcd
" (contenuto del CD-Rom) e "/archive
"
(versioni originali degli strumenti che uso, come i virus scanner).
Prelevate l'archivio e i file INI da Boot-Scriptor (bootscriptor.org).
Non c'é documentazione nell'archivio, la troverete solo sul sito web.
Boot-scriptor ha bisogno di una sua directory "bscript/
"
sul CD-Rom con il loader, un file grafico opzionale (vedi documentazione)
e il file chiamato "bscript.ini
".
Questo file definisce il menu di boot in un linguaggio simile al
basic, con comandi come "print
", "onkey
"
(esegue qualcosa alla pressione di un tasto) e "memdisk
"
(immagine del disco di boot).
Date un'occhiata a questo piccolo esempio, e scrivete il vostro
file ini:
print "\ac\c0e--=> my multi boot cdrom with linux <=--" print "F1 Bootdisk1" print " w warm reboot" MenuLoop: onkey f1 goto bootDisk1 onkey w reboot warm goto MenuLoop bootDisk1: memdisk \images\boot1.img
C'é una manciata di altri comandi. Fatevi una copia in locale della documentazione di boot-scriptor e mettetela da qualche parte nella struttura di directory del CD-Rom. Ne avrete bisogno per muovere i primi passi nella comprensione dei comandi di base.
Per un primo CD-Rom di test abbiamo bisogno di un singolo disco di boot
come può essere quello di windoze. O di un disco di boot di Linux creato con
lilo. O provate una di quelle mini-distribuzioni Linux su singolo disco
come HAL o TomsRtBt (2.88 Mb). Chiedete al vostro motore di ricerca preferito.
Useremo "dd" per creare l'immagine del disco dal disco stesso:
( inserite il disco ) # cd /data/mboot/toolcd # mkdir images (directory for the disk images) # dd if=/dev/fd0 of=images/boot1.img
Il programma "mkisofs" deve essere richiamato con l'opzione "-b" per
fargli installare il boot loader. Il path dell'argomento "-b" é relativo
alla directory base del CD-Rom ("toolcd/
"):
# cd /data/mboot # mkisofs -r -o iso.01 -b bscript/loader.bin \ -no-emul-boot -boot-load-size 4 toolcd
bscript.ini
" per trasformare il vostro nuovo CD-Rom in
qualcosa che cerca la strada del cestino. Quindi meglio masterizzare un CD-RW :-).cdrecord
" ha due possibilità :
"blank=fast
" e "blank=all
".
Il modo fast è piú veloce :)dev
del masterizzatore. Scrivete "cdrecord -scanbus
"
per vedere tutti i dispositivi disponibili.. Se non ci sono dispositivi
probabilmente dovete caricare un modulo come "ide-scsi
"
con un comando come "modprobe ide-scsi
".# cdrecord -scanbus Cdrecord 1.10 (i686-pc-linux-gnu) (C) 1995-2001 J. Schilling Linux sg driver version: 3.1.22 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'LG ' 'CD-RW CED-8083B ' '1.05' Removable CD-ROM ... # cdrecord -v dev=0,0,0 speed=32 iso.01
La chiamata a "mkisofs
" ha parecchi caratteri, il che la rende
facile da sbagliare. "cdrecord
" ha bisogno di parametri
corretti, quindi è una buona idea usare uno script o un Makefile per essere
sicuri di passare i parametri corretti. Useremo un Makefile per il comando
"make
". Installatelo, se non l'avete nel sistema. "make" è uno
dei comandi che i programmatori dovrebbero conoscere.
Metteremo il Makefile nella struttura di directory del CD-Rom, creando un
link nella directory "mboot/
"
È una buona idea mettere tutto quello che ci serve per ri-masterizzare dentro
il CD-Rom. Rende possibile la creazione di una versione migliore del CD-Rom
anche se non avete piú i file sull'hard disk, quindi è anche un buon backup... :-).
Il Makefile può essere molto semplice. Ecco un esempio:
BASE = toolcd DEV = 0,0,0 SPEED = 4 VERSION = 01 ISO = iso.$(BASE).$(VERSION) OPTIONS= -b bscript/loader.bin -no-emul-boot -boot-load-size 4 blank: cdrecord -v dev=$(DEV) blank=fast blankall: cdrecord -v dev=$(DEV) blank=all iso: echo "deleting ~ files:" @find $(BASE) -name "*~" -exec rm {} \; echo "creating iso file:" @mkisofs -r -o $(ISO) $(OPTIONS) $(BASE) @echo ls -al $(ISO) burn: cdrecord -v dev=$(DEV) speed=$(SPEED) $(ISO)
/data/mboot/toolcd/scripts
" va benissimo. Faremo
un soft-link verso "/data/mboot/Makefile
":
# cd /data/mboot # ln -s toolcd/scripts/Makefile Makefile
mboot/
":# make blank # make iso # make burn
Troverete altri dischi di boot nei vostri porta-dischi e sul web.
Ma ricordatevi che non sapete cosa ci sia nei dischi scaricati da Internet.
Io credo sia sempre una buona idea chiedere a un motore di ricerca come google
se altri hanno avuto problemi con i dischi scaricati da un sito. E fate una
scansione del disco per cercare virus.
Ho preso alcuni dischi di boot da www.bootdisk.com.
I dischi sono in versione inglese, la maggior parte con supporto CD.
Potete accedere a un virus scanner sul CD o lanciare un update del BIOS
da un altro CD. Mi piace molto l'immagine di disco di boot "drdflash"
che fornisce un disco minimo con abbastanza spazio per un flasher di BIOS.
Usate "rawrite
" (dos) o "dd
" (linux) per scrivere
l'immagine su disco e avrete un flasher in pochi minuti. Sono stato a un
LAN party e ho visto quanto un gruppo di utenti linux abbia bisogno di
trovare un disco bootabile per il flash del BIOS... ;-)
Nota: Potete trovare "rawrite.exe
" sulla gran parte dei CD
delle distribuzioni Linux.
Col vostro piccolo e pratico CD da 8 cm avete qualcosa con cui fare
un boot pulito dappertutto. Perché non mettere un virus scanner sul CD?
Ho preso "F-Prot" da F-Secure.
Hanno una versione Linux e una Dos liberamente scaricabili.
L'unico problema è come aggiornare le definizioni dei virus sul CD.
Ho sentito parlare di CD-RW da 8 cm, ma non ne ho mai visto uno in
vendita. Pessima cosa. Un'altra soluzione sarebbe di fare il boot di un
sistema Linux minimo da un CD da 8 cm e di scaricare le nuove definizioni
da Internet.
Due dei problemi che ho riscontrato con f-prot sono stati:
Se ancora non conoscete Knoppix dategli un'occhiata!
È una versione completa, bootabile, di Linux con 2-3 Gb di software
su un singolo CD da 650 Mb, live. Con rilevazione automatica
dell'hardware e altre cose utilissime. Ma non ci sta sul nostro
mini-CD.
Non disperatevi, perché è possibile rimasterizzare il CD-Rom
di Knoppix (o un progetto simile). Vi servono solo alcune
conoscenze di base di Debian, e un po' di spazio sul vostro HD.
Knoppix usa un po' di magia per far stare 2-3 Gb di software su un CD
da 650 Mb: il filesystem è stato compresso in un file
"/KNOPPIX/KNOPPIX
" e viene montato dal processo init
lanciato all'avvio del floppy di boot (*) usando un particolare
modulo driver di nome "cloop
". (* In effetti è il
contenuto di un'immagine di disco di boot usata chiamando "mkisofs
"
con l'opzione "-b
".
L'immagine del disco di boot usato per creare il CD di Knoppix si trova
nella directory "/KNOPPIX
" del CD di Knoppix:
"boot.img
". C'è ancora l'idea di avere tutti i geni
pronti per il prossimo salto evoluzionistico "a bordo"...
Suggerisco di montare il disco di boot di Knoppix con il device
loop per cercare di capire come funziona il processo di boot.
Cercate nel web il "bootdisk HOWTO" per avere maggiori informazioni.
Uno dei file che trovate sull'immagine è un ".gz", compresso con
gzip, con un'immagine di filesystem all'interno. È il ramdisk
iniziale (NdT: Initial RamDisk, initrd) usato per le prime fasi del
boot.
Quando caricate Knoppix succede questo: Il file "boot.img"
scritto nell'immagine ISO carica il kernel dal floppy emulato,
caricando il ramdisk iniziale. Il processo linuxrc carica il modulo
"cloop.o" e cerca un file "/KNOPPIX/KNOPPIX" su tutti i dispositivi
collegati con un filesystem conosciuto. SÃ, sarebbe possibile caricare
l'immagine compressa di KNOPPIX anche da HD. Ma non ho mai provato.
Dopo aver trovato un dispositivo con il filesystem compresso, viene
montato e iniziano il rilevamento dell'hardware e tutto il resto.
Il floppy "boot.img" non si interessa del dispositivo da cui viene caricato
(floppy reale o emulato), quindi è abbastanza semplice integrarlo
nel nostro CD-Rom multi-boot: copiate "boot.img" nella directory
"images/
" e aggiungete una voce al menu in
"bscript.ini
".
Un CD-Rom originale Knoppix è troppo grosso per il nostro piccolo
CD da 8 cm. Ricordate che abbiamo 183 Mb a disposizione. Dobbiamo cancellare
un sacco di roba, ma è un lavoraccio. Perché non usufruire del lavoro di
qualcun'altro? Il sito Knoppix
Customizations elenca un paio di versioni modificate di Knoppix, alcune
ridotte fino a una dimensione, compressa, di 50-60 Mb.
Ho deciso di usare "Model_k". È piccola ma non c'è GUI e manca il supporto
per tastiere non US. Forse "Damn Small Linux" è meglio...
Ho preso le istruzioni che trovate qui sotto da un documento di
Sunil Thomas
Thonikuzhiyil, che descrive il processo di rimasterizzazione molto
dettagliatamente. Leggetelo se volete sapere come cambiare il kernel
o l'initrd del disco di boot. Ma normalmente non ci serve sapere tutto
questo se usiamo "Model_k" o un sistema simile per il nostro mini-CD...
L'idea di base per cui rimasterizzare Knoppix risiede nel fatto che
è un sistema Debian completo - quando c'è un filesystem scrivibile
[un CD è a sola lettura :)]. La parte principale della rimasterizzazione
è l'installazione e disinstallazione dei pacchetti. Niente di troppo
complicato.
Per modificare una Knoppix dobbiamo proma farci il boot. Dopodiché
si devono seguire questi passi:
# mkdir /1 # mount -t ext2 /dev/hda<n> /1 # cp -Rp /KNOPPIX /1
# chroot /1/KNOPPIX # mount -t proc /proc proc
# (usare ifconfig se non c'è un server DHCP nella rete.) # (cambiate la configurazione dei nameserver quando non c'è un DHCP. Cancellate il link "/etc/resolv.conf" e create un vostro file.)
# apt-get install joe (Model_k 1.2 non ha un editor :) ) # ...
# (Se avete modificato /etc/resolv.conf, cancellatelo e rimettete il link.) # umount /proc # exit
/KNOPPIX/KNOPPIX
" con "cloop
".
Conosciamo già "loop
" - l'abbiamo usato per montare
un file con un filesystem all'interno. "cloop
" è un
"loop
" con la (de)compressione, quindi dobbiamo creare
un filesystem con "mkisofs
" e comprimerlo con uno speciale
programma da Knoppix:
"create_compressed_fs
":
# mkisofs -R /1/KNOPPIX | create_compressed_fs - 65536 > /1/KNOPPIX.2
Come vedete mandiamo in pipe l'output di mkisofs direttamente nel
tool di compressione. Fate una copia del file KNOPPIX
originale e copiate il risultato di "KNOPPIX.2
" in
"KNOPPIX/KNOPPIX
" nella vostra struttura di directory
per il CD-Rom. A questo punto preparate e masterizzate un altro
CD e provate la vostra "nuova" variante di Knoppix.
Abbiamo visto che non è poi cosà difficile creare un pratico
CD multi-boot, con utili tool che ci possono essere d'aiuto in
molte situazioni. Non abbiamo inventato tutte le ruote, ma abbiamo
usato ruote inventate da altri con un po' di magia aggiunta.
Abbiamo messo tutto quello che ci serviva in quel CD, quindi abbiamo
un backup sottomano - ed è possibile rimasterizzare il CD solo con i
tool contenuti nello stesso.
Spero vi sia piaciuto il mio piccolo articolo.
A presto!
Webpages maintained by the LinuxFocus Editor team
© Tjabo Kloppenburg "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
Translation information:
|
2005-01-14, generated by lfparser_pdf version 2.51