Denne delen er valgfri. Hvis den tiltenkte brukeren ikke er en programmerer og ikke planlegger å gjøre noen feilsøking på systemprogramvaren, kan systemstørrelsen reduseres med omtrent 2 GB ved å fjerne feilsøkingssymbolene, og noen unødvendige symboltabelloppføringer fra binærfiler og biblioteker. Dette medfører ingen ulemper for en typisk Linuxbruker.
De fleste som bruker kommandoene nevnt nedenfor, opplever ikke noen vanskeligheter. Det er imidlertid lett å gjøre en skrivefeil og gjør det nye systemet ubrukelig, så før du kjører strip kommandoer, er det en god idé å lage en sikkerhetskopiering av LFS systemet i gjeldende tilstand.
En strip kommando med
--strip-unneeded
alternativet
fjerner alle feilsøkingssymboler fra en binær eller et bibliotek. Og
det fjerner alle symboltabelloppføringer som ikke er nødvendig for
linkeren (for statiske biblioteker) eller dynamisk linker (for
dynamisk koblede binære filer og delte biblioteker).
Feilsøkingssymbolene for utvalgte biblioteker er plassert i separate filer. Denne feilsøkingsinformasjonen er nødvendig hvis det kjøres regresjonstester som bruker valgrind eller gdb senere i BLFS.
Merk at strip vil
overskrive binær eller bibliotek filen den behandler. Dette kan
krasje prosessene som bruker kode eller data fra filen. Hvis
prosessen som kjører strip selv er påvirket, kan
binærfilen eller biblioteket som blir strippet bli ødelagt og kan
gjøre systemet helt ubrukelig. For å unngå det, kopierer vi noen
biblioteker og binærfiler til /tmp
,
stripper dem der, og installer dem tilbake med install kommandoen. (Den relaterte
oppføringen i Section 8.2.1,
“Oppgraderingsproblemer” gir begrunnelsen for å bruke
install kommandoen
her.)
ELF lasterens navn er ld-linux-x86-64.so.2 på 64-bits systemer og ld-linux.so.2 på 32-bits systemer. Konstruksjonen nedenfor velger riktig navn for gjeldende arkitektur, unntatt noe som slutter med “g”, i tilfelle kommandoene nedenfor allerede har vært kjørt.
Hvis en pakke som versjonen er forskjellig fra versjonen
spesifisert av boken (enten etter et sikkerhetsråd eller som
tilfredsstiller personlige preferanser), kan det være nødvendig å
oppdatere bibliotekets filnavn i save_usrlib
eller online_usrlib
. Unnlatelse
av å gjøre det kan gjøre systemet helt ubrukelig.
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) libc.so.6 libthread_db.so.1 libquadmath.so.0.0.0 libstdc++.so.6.0.30 libitm.so.1.0.0 libatomic.so.1.2.0" cd /usr/lib for LIB in $save_usrlib; do objcopy --only-keep-debug $LIB $LIB.dbg cp $LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done online_usrbin="bash find strip" online_usrlib="libbfd-2.40.so libsframe.so.0.0.0 libhistory.so.8.2 libncursesw.so.6.4 libm.so.6 libreadline.so.8.2 libz.so.1.2.13 $(cd /usr/lib; find libnss*.so* -type f)" for BIN in $online_usrbin; do cp /usr/bin/$BIN /tmp/$BIN strip --strip-unneeded /tmp/$BIN install -vm755 /tmp/$BIN /usr/bin rm /tmp/$BIN done for LIB in $online_usrlib; do cp /usr/lib/$LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ $(find /usr/lib -type f -name \*.a) \ $(find /usr/{bin,sbin,libexec} -type f); do case "$online_usrbin $online_usrlib $save_usrlib" in *$(basename $i)* ) ;; * ) strip --strip-unneeded $i ;; esac done unset BIN LIB save_usrlib online_usrbin online_usrlib
Et stort antall filer vil bli rapportert som at filformatet ikke er gjenkjent. Disse advarslene kan trygt ignoreres. De indikerer at disse filene er skript i stedet for binære filer.