Linux Base - Capitolo n. 15 Edizioni ByteMan (15-05-2005) revisione: 25/01/2008 Rimasterizzare una Kanotix .... Dopo aver provato tante distribuzioni Linux, alcune Live altre tradizionali, sono giunto alla conclusione che è meglio provare a farsi la propria distribuzione. Questo è anche il bello di Linux! Convinto sostenitore dell'impostazione data dagli sviluppatori del progetto Debian, entusiasta dell'idea geniale dell'autore di Knoppix, ho finito per adottare come distribuzione preferita Kanotix 2005-3, derivata dalla Knoppix, ma ottimizzata per l'installazione sull'hard-disk. Tutto bene quindi, tranne per la scelta dei pacchetti presenti nella versione originale. Ecco la voglia di rimasterizzare con una scelta personale dei pacchetti installati, ecco cos'è Livix. Requisiti Preparazione Editing Modifiche 1 Requisiti di Sistema per la versione CD-ISO Sistema Operativo Linux già installato sull'hard-disk. Una copia del LiveCD di sicura affidabilita' (scaricabile da www.kanotix.org). Almeno 1 GB di memoria libera disponibile: RAM+SWAP (es.: 256M ram + 750M swap) Circa 3 GB di spazio libero in una partizione formattata con filesistem Linux (ext2, ext3, reiserfs, xfs, etc.). Principali caratteristiche del sistema usato Scheda madre: ASUS P4P800-E CPU: Intel Pentium 4 dual a 3 GHz Scheda grafica: nVidia GeForce FX 5200 RAM: 2 GB Hard-Disk: hda = Samsung SP1604N da 160 GB Hard-Disk: hdc = Maxtor 6Y120 da 120 GB Swap area: hda5 da 2.4 GB Distribuzione: Kanotix 2005-3 installata su hda7 da 37.7 GB formattata con reiserfs Partizione di lavoro: hdc1 da 12 GB formattata con reiserfs Masterizzatore: LG DVDRAM GSA-4120B Router ADSL: Ericsson HN294dp, connessione Alice 4 Mbit/s Livix - Preparazione 1 Scopo di questa fase è la preparazione dell'ambiente di lavoro per ospitare il materiale sorgente con cui costruire la nuova distribuzione. Poichè il software presente sul CD Live è in forma compressa (2 GB circa) è necessario provvedere a scompattarlo. Ci sono alcuni modi per raggiungere lo scopo, la modalità utilizzata in questa esperienza sfrutta lo stesso sistema Live che, dopo l'avvio, crea con l'aiuto della RAM una cartella /KNOPPIX contenente virtualmente l'intero sistema operativo. Con un'operazione di copia si obbliga quindi l'effettiva scompattazione di tutto il sistema. Ecco come procedere: Boot da LiveCD Kanotix 2005-3 Apertura di una shell root tramite Menu: Kmenu -->Knoppix -->Root Shell da questa shell verranno dati tutti i comandi seguenti (se non altrimenti specificato). (Opzionale) Qualora si rendesse necessario eseguire operazioni che richiedano esplicitamente la password, meglio impostare adesso una password di root: passwd Enter new UNIX password: Retype new UNIX password: password updated successfully (Opzionale) Verifica della connessione internet: ping www.google.it PING www.l.google.com (66.249.85.99) 56(84) bytes of data. 64 bytes from 66.249.85.99: icmp_seq=1 ttl=244 time=113 ms 64 bytes from 66.249.85.99: icmp_seq=2 ttl=244 time=113 ms ..... Ctrl-C Predisposizione della partizione hdc1, formattata reiserfs (o altrimenti), montandola in lettura/scrittura: mount -rw /dev/hdc1 /mnt/hdc1 cd /mnt/hdc1 Creazione di due directory di lavoro per contenere il sistema in sviluppo: mkdir -p knx/source/KNOPPIX mkdir -p knx/master/KNOPPIX L'opzione -p evita la visualizzazione di errori in caso di preesistenza delle directory. source/KNOPPIX contiene il sistema da modificare master/KNOPPIX conterrà la copia compressa del nuovo sistema, knx conterrà il file immagine ISO da masterizzare: knoppix.iso Tenendo presente che il boot e' avvenuto da LiveCD e che quindi il sistema operativo si trova installato in RAM occorre copiare l'intero contenuto della directory /KNOPPIX (decompresso dinamicamente in RAM) in knx/source/KNOPPIX: cp -Rp /KNOPPIX/* knx/source/KNOPPIX L'opzione -p preserva gli attributi specificati (mode, ownership, timestamps,...). L'intera operazione di copiatura ricorsiva (-R) può durare una decina di minuti (dipende dalla velocità del computer). Il CD live e' per la maggior parte occupato dalla directory /KNOPPIX (circa 697 MB). Bene occorrera' copiare il poco che resta in knx/master: cp -ar /cdrom/boot knx/master/boot cp /cdrom/*.* knx/master 2 Tutto il materiale necessario e' adesso sistemato in knx, distribuito nelle sottodirectory source e master, ma prima di passare alla fase successiva non è una cattiva idea quella di creare una copia di riserva (spazio permettendo) della struttura fin qui creata: cp -ar knx dupknx Si potrebbe, a questo punto, procedere con le modifiche al sistema, ma poichè questa è una attività che sicuramente verrà svolta a più riprese è meglio effettuarla avviando il computer normalmente: da hard-disk. Quindi chiudiamo questa fase con il CD-Live e procediamo allo spegnimento del sistema. Livix - Editing La messa a punto della distribuzione viene spesso fatta nel corso di parecchie sedute, occorre infatti decidere cosa togliere alla distribuzione e cosa aggiungere, preparare nuovo materiale, correggere, provare. Quindi questa attività verrà svolta con il normale sistema operativo installato su hard-disk. L'ipotesi di lavoro è quella di disporre di un sistema di avvio Debian o derivato da essa (Knoppix, Kanotix, Ubuntu, etc.). Nel seguito supporremo di utilizzare un sistema con installato Kanotix 2005-3 nella partizione hda7. Boot da Hard-Disk Apertura di una shell root tramite Menu: Kmenu -->Knoppix -->Root Shell da questa shell verranno dati tutti i comandi seguenti (se non altrimenti specificato). umount /mnt/hdc1 mount -rw /dev/hdc1 /mnt/hdc1 cd /mnt/hdc1 Nel seguito supporremo sempre di partire da questo punto prima di ogni aggiornamento. Le modifiche da apportare al nuovo sistema sono essenzialmente di due tipi: 1. Aggiunta/Sostituzione/Eliminazione di file 2. Installazione/Rimozione di applicativi e configurazioni a caldo Mentre per il primo tipo si procede con i normali comandi (cp, rm), per il secondo tipo occorre prima effettuare un cambio della directory radice. Cambio della directory radice Occorre utilizzare una funzione di sistema che permette di far funzionare un processo in un file system ridotto, in cui una certa directory diventa temporaneamente la sua nuova directory radice. Si tratta della funzione chroot() che può essere utilizzata solo da un processo che abbia i privilegi dell'utente root. In sostanza viene circoscritto l'ambiente di un determinato processo (e dei suoi discendenti), e si richiede l'indicazione della directory che diventerà la nuova directory radice. Il processo da avviare in questo ambiente deve trovare lì tutto quello che gli può servire, per esempio le librerie, o altri programmi se il suo scopo è quello di avviare altri sottoprocessi. Ecco come operare: a) Entrata in chroot root = /mnt/hdc1/knx/source/KNOPPIX viene montata /proc chroot /mnt/hdc1/knx/source/KNOPPIX mount -t proc /proc proc b) Esecuzione modifiche di tipo 2 (install/remove) o altre operazioni con l'uso di internet 3 c) Uscita da chroot smontaggio /proc uscita da chroot umount /proc exit Verifica connessione internet Prima di cominciare le modifiche al sistema occorre verificare che la connessione internet sotto chroot funzioni correttamente. Pertanto occorrerà entrare in chroot ed eseguire un ping: ping www.google.it PING www.l.google.com (66.249.85.99) 56(84) bytes of data. 64 bytes from 66.249.85.99: icmp_seq=1 ttl=244 time=113 ms 64 bytes from 66.249.85.99: icmp_seq=2 ttl=244 time=113 ms ..... Ctrl-C Se tale verifica dovesse risultare negativa occorrera' uscire da chroot ed eseguire la copia del seguente file: cp /etc/dhcpc/resolv.conf /mnt/hdc1/knx/source/KNOPPIX/etc/dhcpc/resolv.conf Rientrare in chroot e riverificare la connessione con ping, come prima. Adesso tutto dovrebbe funzionare correttamente, e si è in grado di procedere ad effettuare le modifiche di tipo 1 e di tipo 2. Livix - Modifiche Tipo 1 Questo genere di modifiche si effettua normalmente da terminale con i privilegi di root e posizionati in /mnt/hdc1. Vengono coinvolti file di immagini, script, documentazione. Per comodità ho predisposto alcune directory di servizio sotto /mnt/hdc1, si tratta delle cartelle: img, doc, dosprg, contenenti materiale per personalizzare la distribuzione. Supporto a dosbox Livix eredita da Kanotix il pacchetto dosbox che consente l'emulazione di applicativi dos all'interno di un'apposita finestra. A supporto di questo pacchetto verranno inseriti alcuni tools dos, in una apposita directory: mkdir knx/source/KNOPPIX/usr/share/dosprg cp dosprg/* knx/source/KNOPPIX/usr/share/dosprg Da notare che la directory /mnt/hdc1/dosprg contiene i tools desiderati, nel nostro caso: asm.ng debug.com lkbit.com ng.exe q.exe tasm.exe tlib.exe tlink.exe tpc.exe turbo.tpl A proposito di debug.com, ho dovuto trovarne una release che non effettua la verifica della versione DOS perchè altrimenti non funzionerebbe in dosbox. Immagini, sfondi, temi Sostituzione immagine di default dello sfondo: cp img/livix.png knx/source/KNOPPIX/usr/local/lib/kanotix.png 4 pdf ludendum .... Produrre file pdf è semplicissimo con OpenOffice, da qualunque applicativo (writer, calc, impress, ...), basta esportare in pdf ed il gioco è fatto. Ma spesso occorrono degli interventi, più o meno forti, sia sui file prodotti in proprio, sia su file pdf di terze parti e di cui non si possiedono i sorgenti. Lo scopo di questa miniguida è la presentazione di alcuni strumenti utili in simili circostanze: pstill pdftk psutils pstill L'utility pstill svolge quello che in ambiente Classic è il compito del più conosciuto Acrobat Distiller, cioè la creazione di documenti Pdf, con l'aggiunta anche del trattamento dei file EPS (previa presenza dell'estensione .eps). Con opzioni precise, quasi quanto il concorrente più blasonato, pstill svolge il lavoro con inaspettata velocità, mostrando solo qualche imbarazzo con gli archivi di font. Installazione ed utilizzo Ho scaricato il pacchetto dal sito http://www.pstill.com/, prelevando la versione 1.72.7 per Linux/i386, trattandosi di un file .tar.gz l'ho scompattato in una cartella d'appoggio, nella quale mi sono poi posizionato. Lette le istruzioni, allegate nel file INSTALL, ho eseguito le seguenti operazioni: Creazione della cartella /usr/local/pstill_dist, con tutto il contenuto della cartella appoggio mkdir /usr/local/pstill_dist cp -r -p * /usr/local/pstill_dist cd /usr/local/pstill_dist Verifica ed aggiornamento della variabile PATH, in modo che contenga la nuova cartella. Ad esempio aggiungendo la riga seguente in ~/.bashrc export PATH=$PATH:/usr/local/pstill_dist e rendendo subito operativa la variazione con il comando: source ~/.bashrc Installazione dei fonts, con i comandi: cd PSFonts ../linkAllFonts.sh cd .. ./pstill -vI L'impiego principale di pstill è la conversione in .pdf di file .ps, provenienti generalmente dalle operazioni di stampa su file. Ecco alcune tipiche righe: pstill -o file.pdf file.ps base pstill -2 -o file.pdf file.ps compatibilità Livello 2 pstill -c -c -c -c -2 -o file.pdf file.ps con aggiunta di compressione Come fonte di aiuto, oltre al già citato file INSTALL, risulta utilissima la consultazione e la stampa dell'help interno: pstill --help su video x consultazione pstill --help > help.txt su file x la stampa Il programma è gratuito per uso personale o didattico, mentre per uso commerciale è 5 richiesta una appropriata registrazione. Ho trovato necessario includere, in coda a ~/.bashrc, la seguente riga: export PSTILL_PATH=/usr/local/pstill_dist per evitare le ripetute richieste di definizione di PSTILL_PATH, ad ogni nuova sessione di Linux. Forse potrebbe esserci una diversa soluzione, ma ho risolto comunque così il problema. Ho notato che l'esportazione di pagine HTML in PDF risulta più efficacemente gestibile, anche se con un processo più lungo, tramite un passaggio intermedio al formato PS (stampa su file) e poi con l'uso di pstill per ottenere il PDF. pdftk Si tratta di una utility a riga di comando, reperibile su http://www.accesspdf.com/pdftk/, che serve per il trattamento dei file pdf. Come recita il sito, è possibile manipolare i document PDF in molti modi, ovvero: unirli/spezzarli, criptarli/decriptarli, aggiungergli allegati, impostare un marchio, spezzarli in pagine singole, e tanto altro ancora ... Per chi non gradisce la linea di comando, esiste anche una interfaccia grafica, reperibile presso: http://dpaehl.dp.funpic.de/portal/?GUI_for_PDFTK. Personalmente preferisco le utility a riga di comando per la possibilità di realizzare facilmente degli script per le operazioni ripetitive. Installazione ed utilizzo Il pacchetto è disponibile in formato Debian e si installa facilmente con il classico: apt-get install pdftk La principale funzione, che è quella che inizialmente mi interessava maggiormente, consente di concatenare più file PDF in uno solo. Ecco un esempio per unire f1.pdf ed f2.pdf: pdftk f1.pdf f2.pdf cat output ftot.pdf Per estrarre, invece, un gruppo di pagine da due file, per ottenerne un terzo con una selezione di pagine, agiremo così: pdftk A=f1.pdf B=f2.pdf cat A1-7 B1-5 A8 output f3.pdf In pratica: A è il primo file, B il secondo. Con cat si estraggono le pagine 1-7 dal primo, poi la 1-5 dal secondo e infine la 8 ancora dal primo. Il tutto viene concatenato nel file f3.pdf. Usare il comando seguente, per spezzettare il file fx.pdf in tutte le sue pagine: pdftk fx.pdf burst verranno generati tanti file (pg_0001.pdf, pg_0002.pdf, ...), ciascuno contenente una singola pagina del file fx.pdf. Si può ancora aggiungere una password al file fx.pdf, con il comando: pdftk fx.pdf output fxcrp.pdf user_pw psw ma, attenzione a non dimenticarla ! Volendo, si può ancora aggiungere uno sfondo, a mo' di filigrana, a ciascuna pagina del file fx.pdf, con il comando: pdftk fx.pdf background sfondo.pdf output fxbis.pdf dove sfondo.pdf è l'immagine desiderata preventivamente convertita in formato pdf. 6 Per maggiorni informazioni, infine, è meglio leggere/stampare attentamente l'help interno: pdftk --help pdftk --help > help.txt su video x consultazione su file x la stampa che contiene, oltre alla descrizione di tutte le possibilità offerte dal programma, moltissimi esempi pronti all'uso. psutils E' un insieme di programmi di utilità per manipolare file PostScript, ottenuti generalmente con il comando stampa su file. Il pacchetto è disponibile in formato Debian e si installa facilmente nel modo classico: apt-get install psutils I programmi di utilità contenuti in psutils sono: psbook, psselect, pstops, psnup, psresize, epsffit, getafm, showchar, fixdlsrps, fixfmps, fixmacps, fixpsditps, fixpspps, fixscribeps, fixtpps, fixwfwps, fixwpps, fixwwps, extractres, includeres, psmerge. Descriversli tutti non è lo scopo di queste note, informazioni dettagliate su ciascuna utility sono consultabili tramite le pagine man, ad esempio: man psbook man psnup oppure consultando gli Appunti di Informatica Libera alla voce Rielaborazione PostScript. Ecco un rapido cenno ad alcune delle funzioni più importanti: psresize: riadatta le dimensioni pagina in funzione dello standard di carta usato, in base a quanto specificato con le opzioni, e genera un nuovo file. psselect: estrae, anche selettivamente, alcune pagine, in funzione delle opzioni, e genera un nuovo file con queste. psnup: genera un file in cui diverse pagine di origine sono assemblate in un'unica pagina finale. In pratica permette una reimpaginazione con due o più pagine in un'unica facciata. psbook: rielabora un file PostScript generando un altro file in cui la sequenza delle pagine risulta alterata in modo da poter favorire la stampa a libretto. Per esempio, nel caso della stampa di gruppi di quattro pagine, la sequenza generata è 4-1-2-3, in modo da poter stampare un foglio in cui sul fronte (recto) appaiano le pagine 4-1 e sul retro (tergo) le pagine 2-3. Questo permette di piegare il foglio e di leggerlo a modo di libretto. In tal caso si hanno legature (segnature) di un solo foglio. Attenzione: a volte alcuni dei programmi di psutils producono dei file PostScript non conformi allo standard di Adobe DSC. CUPS (il gestore delle stampanti) potrebbe stampare tali file in modo inesatto. 7