Oszczędzanie miejsca na dysku twardym (małe JTZ)

Guido Gonzato, guido@ibogeo.df.unibo.it
v1.0.1, 07 kwietnia 1999
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
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.

1. Wstęp

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.

2. Potrzebne oprogramowanie

Potrzebować będziesz:

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.

3. Procedura odzyskiwania miejsca

3.1 Usuwanie źródeł jądra

Ź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:

Nie kasuj ź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 oszczędź katalog include/linux/, chyba, że jesteś pewien, że nigdy niczego nie będziesz na swoim komputerze kompilował.

3.2 Usuwanie zbędnych aplikacji

Teraz musisz zadecydować, których programów naprawdę 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:

3.3 Usuwanie symboli z plików binarnych ("strip")

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, nie wykonuj tego polecenia w katalogach /sbin, /bin ani /usr/sbin/ !

3.4 Kompresowanie plików wykonywalnych

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!

3.5 Kompresowanie pozostałych plików

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 naprawdę 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.

4. Przykład z życia wzięty

Oto co ja osiągnąłem zastosowawszy wyżej opisaną procedurę. Przed rozpoczęciem operacji system wg df zajmował 398.798 bloków 1024.

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.

5. Formalności

5.1 Prawa autorskie

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.

5.2 Zastrzeżenia

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-)

6. Od tłumacza

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
© 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk