dal 2015 - visita n. 686
Rifiniture Definitive
Rifiniture Definitive

 

Rifiniture Definitive

Molti programmi e librerie sono compilati, per default, con i simboli di debug inclusi (con il parametro di gcc -g). Questo significa che, facendo il debug di un programma o libreria compilato con le informazioni di debug incluse, il debugger può dare non solo indirizzi di memoria, ma anche nomi di routine e variabili.

L'inclusione di questi simboli di debug, tuttavia, aumenta significativamente le dimensioni di un programma o libreria. Per avere un'idea dell'ammontare di spazio occupato da questi simboli si dia un'occhiata ai dati seguenti:

Le dimensioni possono in qualche modo variare in funzione di quale compilatore è stato usato e quale libreria C, ma quando si confrontano programmi con e senza i simboli di debug la differenza di solito sarà di un fattore tra 2 e 5.

Dal momento che la maggior parte delle persone probabilmente non userà mai un debugger col proprio software di sistema, è possibile guadagnare un sacco di spazio disco rimuovendo questi simboli.
Informazioni su altri modi di ottimizzare il proprio sistema si possono trovare su optimization.txt.

Se non si è programmatori e non si intende fare nessun debugging sul proprio software di sistema, è possibile ridurne l'ingombro di circa 90 MB rimuovendo i simboli di debug dai binari e dalle librerie. Questo non causa alcun inconveniente, tranne il non avere più alcuna possibilità di fare un debug completo del software.

Molte persone che usano il comando mostrato di seguito non hanno alcun problema. È facile, tuttavia, fare un errore di digitazione e rendere il proprio sistema inutilizzabile, così prima di eseguire il comando strip è probabilmente una buona idea fare un backup del sistema LFS nella situazione corrente.

NOTA
Nel mio percorso didattico, essendo un programmatore, ho preferito lasciare tutte le informazioni di debug e non ho eseguito i comandi indicati per lo strip.

Strip o compattazione
Prima di eseguire la compattazione, è necessario porre particolare attenzione ad assicurare che non siano in esecuzione nessuno dei binari che stanno per essere compattati. Se non si è certi di essere entrati in chroot con il comando indicato all'inizio della Sezione n.6 (Accesso all'ambiente chroot), uscire prima da chroot e rientrarvi con i comandi:

logout
chroot $LFS /tools/bin/env -i \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /tools/bin/bash --login

Ora è possibile compattare in sicurezza binari e librerie:

/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
   -exec /tools/bin/strip --strip-debug '{}' ';'

Il sistema segnalerà che non riconosce il formato di un grande numero di file. Questi avvisi possono essere tranquillamente ignorati. Questi avvisi significano solo che questi file sono script invece che binari.


Modifica per accesso in chroot

Se i file system virtuali del kernel sono stati smontati, sia manualmente sia con un reboot, assicurarsi che siano ri-montati quando si entra di nuovo nel chroot. Questo processo è stato inizialmente illustrato in File System Virtuali, ed è sintetizzato nei comandi:

mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys

D'ora in avanti quando si rientrerà nell'ambiente chroot dopo essere usciti, usare il seguente comando chroot modificato:

chroot "$LFS" /usr/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

La ragione per questo è che i programmi presenti in /tools non sono più necessari. Perciò si può anche cancellare la directory /tools se lo si desidera.

La rimozione di /tools rimuoverà anche le copie temporanee di Tcl, Expect e DejaGNU, che sono state usate per eseguire i test della toolchain. Se in seguito si ha bisogno di questi programmi, essi dovranno essere ricompilati e reinstallati. Nel libro BLFS ci sono le istruzioni per questo.


















Introduzione 0
Prerequisiti 1
Partizioni LFS 2
Pacchetti e Patch 3
Ultimi preparativi 4
Stima dei tempi
Sistema Provvisorio 5
Costruzione Provvisoria
Rifiniture
Sistema Definitivo 6
File System Virtuali
Gestione Pacchetti
Ambiente Chroot
Creazione Directories
Creazione Files e Link
Costruzione Definitiva
Rifiniture Definitive


LinuxFrom Scratch
Beyond LinuxFrom Scratch
Errata Corrige
F.A.Q.
Editor: nano
Shell Bash
Pseudoterminali PTY



Nelle persone di capacità limitate la modestia è semplice onestà, ma in chi possiede un grande talento è ipocrisia.
Arthur Schopenhauer

Valid CSS!
pagina generata in 0.001 secondi