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

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

## 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 `emacs`a? Zamiast niego możesz używać `jed`a.

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''.

## 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.

- 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 `gzip`a, 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
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk