Oszczêdzanie miejsca na dysku twardym (ma³e JTZ) Guido Gonzato, guido@ibogeo.df.unibo.it v1.0.1, 07 kwietnia 1999 WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk v1.01, 14 grudnia 2001 Dokument zawiera informacje pomagaj±ce w najwiêkszym mo¿liwym stopniu ograniczyæ miejsce zajmowane przez Linuksa na twardym dysku. Przyda siê szczególnie u¿ytkownikom laptopów. ______________________________________________________________________ Spis tre¶ci 1. Wstêp 2. Potrzebne oprogramowanie 3. Procedura odzyskiwania miejsca 3.1 Usuwanie ¼róde³ j±dra 3.2 Usuwanie zbêdnych aplikacji 3.3 Usuwanie symboli z plików binarnych ("strip") 3.4 Kompresowanie plików wykonywalnych 3.5 Kompresowanie pozosta³ych plików 4. Przyk³ad z ¿ycia wziêty 5. Formalno¶ci 5.1 Prawa autorskie 5.2 Zastrze¿enia 6. Od t³umacza ______________________________________________________________________ 11.. WWssttêêpp Posiadam laptopa, na którym obok fabrycznie do³±czonego Windows 95 zainstalowa³em Linuksa. Zajmowan± przez Windows przestrzeñ dyskow± ograniczy³em do 500 MB, co da³o mi 240 MB wolnego miejsca. Niby niewiele, a jednak dziêki rozs±dnej gospodarce woln± przestrzeni± zmie¶ci³em tam w pe³ni funkcjonaln± instalacjê Linuksa (Red Hat 4.1). Je¶li brakuje ci wolnej przestrzeni na twardym dysku, wykorzystaj informacje zawarte w niniejszym dokumencie -- pomog± ci one znacznie zwiêkszyæ jej ilo¶æ. Zanim jednak przejdziemy do rzeczy, muszê ciê ostrzec: nie obwiniaj mnie, je¶li co¶ pójdzie nie tak. Niektóre z wykorzystywanych w procedurze odzyskiwania wolnego miejsca programów mog± byæ niebezpieczne pomimo, i¿ sprawdzi³y siê u mnie. 22.. PPoottrrzzeebbnnee oopprrooggrraammoowwaanniiee Potrzebowaæ bêdziesz: · w pe³ni sprawnej dowolnej wersji Linuksa, · popularnego programu do kompresji gzip lub jego zamiennika: bzip2. bzip2 kompresuje lepiej, ni¿ gzip, jest jednak nieco powolniejszy i zu¿ywa mnóstwo pamiêci. Oba te programy znajdziesz pod adresem <ftp://sunsite.unc.edu:/pub/Linux/utils/compress>, · programu kompresuj±cego pliki wykonywalne upx dostêpnego pod adresami <http://cdata.tvnet.hu/~ml/upx.html> oraz <http://wildsau.idv.uni-linz.ac.at/mfx/upx.html>, · pakietu zlibc dostêpnego pod adresem <ftp://sunsite.unc.edu:/pub/Linux/libs/compression>. Plik nazwany jest zlibc-X.X.tar.gz, gdzie X.X jest numerem najnowszej wersji programu. Istniej± te¿ inne programy do kompresji plików wykonywalnych. Jednym z nich jest gzexe -- najlepiej od razu o nim zapomnij. tcx by³ niez³y, zosta³ jednak zdetronizowany przez upx. Kolejny program, tzx, teoretycznie powinien sprawowaæ siê nawet lepiej, ni¿ tcx. Niestety, kompletnie zawiód³ podczas prób, które przeprowadzi³em na zapasowym komputerze; byæ mo¿e z mojej winy. Najlepiej u¿yj wiêc upx -- jest to program sprawdzony, wydajny i wygodny. Istniej± ³atki umo¿liwiaj±ce j±dru obs³ugê skompresowanych systemów plików "w locie", jednak w momencie pisania tego tekstu ¿adna z nich nie cieszy siê opini± stabilnej i bezpiecznej. Najbezpieczniej jest trzymaæ siê od nich z daleka. 33.. PPrroocceedduurraa ooddzzyysskkiiwwaanniiaa mmiieejjssccaa 33..11.. UUssuuwwaanniiee ¼¼rróóddee³³ jj±±ddrraa ¬ród³a j±dra zajmuj± ponad 20 MB, mo¿esz wiêc rozwa¿yæ ich usuniêcie. Je¶li siê na to zdecydujesz, proponujê, ¿eby¶ najpierw raz a dobrze skompilowa³ j±dro odpowiednie dla twojego komputera; potem mo¿esz ¼ród³a skasowaæ. Ale uwa¿aj: NNiiee kkaassuujj ¼róde³ j±dra dopóki nie jeste¶ pewien, ¿e twój system jest prawid³owo skonfigurowany. Pamiêtaj równie¿, ¿e kompilacja programów napisanych w C wymaga plików nag³ówkowych (#include) j±dra. Przemy¶l to! Kasuj±c ¼ród³a j±dra _o_s_z_c_z_ê_d_¼ katalog include/linux/, chyba, ¿e jeste¶ pewien, ¿e nigdy niczego nie bêdziesz na swoim komputerze kompilowa³. 33..22.. UUssuuwwaanniiee zzbbêêddnnyycchh aapplliikkaaccjjii Teraz musisz zadecydowaæ, których programów _n_a_p_r_a_w_d_ê potrzebujesz. Niektóre aplikacje mog± okazaæ siê w twoim przypadku zbêdne; na przyk³ad zastanów siê, czy naprawdê musisz mieæ na dysku emacsa? Zamiast niego mo¿esz u¿ywaæ jeda. Decyzja nale¿y do Ciebie; przed jej podjêciem rozwa¿ nastêpuj±ce fakty: · gcc jest bardzo du¿ym pakietem u¿ywanym do kompilowania j±dra oraz wszelkich aplikacji, które rozprowadzane s± w formie kodów ¼ród³owych. Pakiet ten jest oczywi¶cie równie¿ niezbêdny, je¶li piszesz w³asne programy w C lub Fortranie (z f2c lub g77). Zastanów siê nad swoimi potrzebami, zanim usuniesz gcc. Alternatywne kompilatory, jak np. lcc te¿ s± niez³e, ale ustêpuj± gcc. Podsumowuj±c, proponujê pozostawiæ ten pakiet na dysku. · X Window System zajmuje na olbrzymi± ilo¶æ miejsca na dysku twardym, czasem jednak szkoda z niego rezygnowaæ. Je¶li czujesz, ¿e nie móg³by¶ tego zrobiæ, spróbuj przynajmniej ograniczyæ zajmowan± przez X przestrzeñ dyskow±. W tym celu pozostaw sobie tylko w³a¶ciwy dla twojego sprzêtu serwer X, jakiego¶ niewielkiego Window-Managera, tylko jeden xterm, usuñ czcionki 100 dpi, itd. · TeX i towarzysz±ce mu pakiety zajmuj± naprawdê wiele miejsca. Zrezygnowanie z LaTeXa i ograniczenie siê do czystego TeXa znacznie zwiêkszy ilo¶æ dostêpnej przestrzeni dyskowej. Dodatkowe miejsce mo¿esz uzyskaæ rezygnuj±c z dzia³aj±cych pod X przegl±darek plików dvi i ps, takich jak xdvi czy ghostview. Zamiast nich u¿yj programów dvitty, dvivga i podobnych. Przy okazji zastanów siê: skoro nie u¿ywasz X do przegl±dania dvi, mo¿e wcale tego pakietu nie potrzebujesz...? · gry nigdy nie s± ``niezbêdne''. 33..33.. UUssuuwwaanniiee ssyymmbboollii zz pplliikkóóww bbiinnaarrnnyycchh ((""ssttrriipp"")) Rozpoczynamy proces zmniejszania wielko¶ci plików binarnych. Wejd¼ do katalogu /usr/bin i wydaj w nim polecenie: /usr/bin# strip * Usunie to symbole z plików binarnych. Powtórz ten krok w /usr/X11R6/bin/ i pozosta³ych zawieraj±cych binarne pliki wykonywalne katalogach (nie zapomnij te¿ odnale¼æ binariów pakietów TeX i gcc). Je¶li cenisz sobie swój system, nniiee wwyykkoonnuujj tteeggoo ppoolleecceenniiaa w katalogach /sbin, /bin ani /usr/sbin/ ! 33..44.. KKoommpprreessoowwaanniiee pplliikkóóww wwyykkoonnyywwaallnnyycchh Rozpocznij od zainstalowania pakietu upx i przeczytania jego dokumentacji. Nastêpnie wejd¼ do katalogu /usr/bin i wykonaj w nim polecenie /usr/bin# upx * Skompresuje to wszystkie pliki wykonywalne, w tym te z suid (txc nie poradzi³by sobie z tym). Powtórz ten krok w kolejnych katalogach wed³ug opisu zawartego w poprzednim podrozdziale. Pamiêtaj o kompresowaniu plików wykonywalnych pojawiaj±cych siê po instalacji nowego oprogramowania! 33..55.. KKoommpprreessoowwaanniiee ppoozzoossttaa³³yycchh pplliikkóóww W systemie znajduje siê mnóstwo plików, które mo¿esz raz na zawsze skompresowaæ. Rozpocznij od wej¶cia do katalogu /usr/doc/ (od t³umacza: w nowszych dystrybucjach jest to /usr/share/doc/) i wydaj w nim polecenie: /usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null Pamiêtaj o kompresowaniu dokumentów do³±czanych do pó¼niej instalowanych programów! Powtórz ten krok w katalogu zawieraj±cych dokumentacjê systemu TeX (u mnie jest to /usr/lib/texmf/texmf/doc/). Je¶li _n_a_p_r_a_w_d_ê wiesz, co robisz, mo¿esz katalogi z dokumentacj± ca³kowicie skasowaæ. Zainstaluj teraz program zlibc i skompiluj go. Je¶li twój system przypomina mój, podczas kompilacji zobaczysz komunikaty o braku statycznej biblioteki libc. Nie przejmuj siê: jest to kwestia odnalezienia pliku uncompress.o, przeniesienia go do /usr/local/lib/ i dodania nastêpuj±cej linii do pliku /etc/profile: export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o Dziêki powy¿szemu bêdziesz teraz móg³ kompresowaæ gzipem nie tylko dokumentacjê, ale równie¿ pliki z wykorzystywanymi przez ró¿ne programy danymi; programy bêd± nadal mog³y ich u¿ywaæ. Teoretycznie sztuczka ta powinna dzia³aæ z wiêkszo¶ci± aplikacji, praktycznie nie zawsze tak jest -- w moim przypadku sukces nie by³ osza³amiaj±cy. 44.. PPrrzzyykk³³aadd zz ¿¿yycciiaa wwzziiêêttyy Oto co ja osi±gn±³em zastosowawszy wy¿ej opisan± procedurê. Przed rozpoczêciem operacji system wg df zajmowa³ 398.798 bloków 1024. · Nie usun±³em ¼róde³ j±dra ani plików nag³ówkowych, · Usun±³em kilka aplikacji i wszystkie gry. Zostawi³em sobie X11, X11-narzêdzia, C- i Fortran-narzêdzia, Tcl/Tk, programy obs³uguj±ce sieæ oraz kilka standardowych aplikacji. Zajêtych bloków: 244.668, · Skompresowa³em programem upx pliki znajduj±ce siê katalogach /usr/bin, /usr/X11R6/bin, /usr/lib/texmf/bin/i586-linux oraz /usr/lib/gcc-lib/i386-linux/2.7.2.1. Zajêtych bloków: 226.270. · Skompresowa³em dokumentacjê w katalogach /usr/doc oraz /usr/lib/texmf/texmf/doc. Zajêtych bloków: 198.745. Liczba zajêtych bloków przed rozpoczêciem operacji: 398.798, po jej zakoñczeniu: 198.745. Uzyska³em 200.000 wolnych bloków! A gdybym u¿y³ bzip2 zamiast gzipa, wolnych bloków by³oby jeszcze wiêcej. Je¶li od samego pocz±tku dzia³asz ¶wiadomie, instaluj±c wy³±cznie niezbêdne aplikacje i kompresuj±c pliki wykonywalne i dokumentacjê, oszczêdzisz oko³o 20 MB. W przypadku laptopów jest to znacz±ca liczba. 55.. FFoorrmmaallnnoo¶¶ccii 55..11.. PPrraawwaa aauuttoorrsskkiiee O ile nie zaznaczono inaczej dokumenty HOWTO chronione s± prawami autorskimi nale¿±cymi odpowiednio do ich autorów. Zezwala siê na powielanie i dystrybucjê tych dokumentów w ca³o¶ci lub w czê¶ci na jakimkolwiek fizycznym b±d¼ elektronicznym no¶niku pod warunkiem pozostawienia na wszystkich kopiach niniejszej informacji o prawach autorskich. Zezwala siê i zachêca do redystrybucji komercjalnej; autor jednak ¿yczy sobie byæ powiadamiany o ka¿dej z takiej dystrybucji. Niniejsze prawa autorskie dotycz± równie¿ wszelkich t³umaczeñ, prac pochodnych, sk³adaj±cych siê z, lub zawieraj±cych jakiekolwiek dokumenty HOWTO. Oznacza to, ¿e niedozwolone jest stworzenie pracy pochodnej od dokumentu HOWTO i na³o¿enie dodatkowych ograniczeñ na jej dystrybucjê. W pewnych szczególnych okoliczno¶ciach mo¿liwe s± odst±pienia od tych zasad. Po bli¿sze informacje nale¿y skontaktowaæ siê z koordynatorem projektu Linux HOWTO pod adresem podanym poni¿ej. W skrócie: chcemy promowaæ rozprzestrzenianie siê podanych tu informacji poprzez mo¿liwie wiele kana³ów. Zatrzymujemy jednak prawa autorskie do dokumentów HOWTO i chcieliby¶my byæ informowani o jakichkolwiek planach redystrybucji tych dokumentów. W przypadku pytañ skontaktuj siê z koordynatorem projektu Linux HOWTO Timem Bynymem, tjbinum@sunsite.unc.edu. 55..22.. ZZaassttrrzzee¿¿eenniiaa Autorem niniejszego dokumentu jest Guido Gonzato, <REMOVE_MEguido@ibogeo.df.unibo.it>. Dokument ten jest udostêpniony 'jak jest'. Stara³em siê napisaæ go jak najlepiej, jednak wszelkich zawartych tu informacji mo¿esz u¿yæ tylko na w³asne ryzyko. Nie ponoszê odpowiedzialno¶ci za ¿adne szkody wynik³e z zastosowania tych informacji. Uciesz± mnie wszelkie reakcje: pro¶by, sugestie, wyzwiska, itd. Ciesz siê Linuksem i ¿yciem, Guido =8-) 66.. OOdd tt³³uummaacczzaa Wersja oryginalna niniejszego dokumentu znajduje siê pod adresem <http://sunsite.unc.edu/LDP/>. T³umaczenia pozosta³ych dokumentów HOWTO na jêzyk polski: <http://www.jtz.org.pl>. Copyright for the translation (c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk