Hlavní navigace

Jak hubnou tučňáci

19. 7. 2002
Doba čtení: 7 minut

Sdílet

Před nějakým časem jsem na Rootu psal o linuxových minidistribucích. Tento článek je jakýmsi volným pokračováním a zabývá se tím, jak u běžné "velké" linuxové distribuce ušetřit co nejvíce místa na disku. Snažím se tím nabídnout alternativu pro ty, kterým žádná z dostupných minidistribucí nevyhovuje, ale přesto potřebují, aby jejich Linux běžel na stroji s omezeným diskovým prostorem.

Jako podtitul k názvu tohoto článku se přímo vnucovalo něco jako „Redukční dieta snadno a rychle“. Jelikož jsem ale pravdomluvný, poctivý a celkově oplývám samými dobrými vlastnostmi :-), nebudu nikoho už od začátku mystifikovat. Tímto se případné čtenáře snažím upozornit, že takové zeštíhlení není v praxi většinou ani rychlé, ani snadné. A jestliže je někdo nepozorný, může si celý systém úspěšně zlikvidovat. Užitečným může být tento článek pro majitele starších strojů, zejména notebooků, u kterých je nouze o místo na disku a každý volný MB navíc je nad zlato. Dále bych asi měl varovat, že se nejedná o popis postupu ve stylu „v té a té distribuci můžete smazat tyto soubory“. Snažím se pouze nastínit směr a zbytek je na zdravém úsudku uživatele – správce. Proto není minimalizace vhodná pro začátečníky, kteří o principech Linuxu nemají dostatečné vědomosti.

Pokud jste se rozhodli, že na svém stroji s omezenou diskovou kapacitou chcete provozovat Linux, je dobré před instalací zvážit, kolik místa dostane k dispozici. Rozumné minimum je asi 250MB (z toho je tak 200MB určeno pro základní systém a aplikace a zbytek je místo pro uživatelská data). Počítat se musí i s nějakým prostorem pro swap. Často používané pravidlo (se kterým ale občas někdo nesouhlasí) zní : „Swap má být dvojnásobkem velikosti RAM“. Samozřejmě není nutné uvedené hodnoty chápat jako jediné možné a korektní rozdělení. Tady záleží zejména na účelu, pro který bude systém určen. Též je dobré vzít v úvahu, kolik uživatelů bude na daném Linuxu pracovat. S minimalizací linuxové distribuce je dobré začít rovnou při instalaci. O tom, jestli má smysl instalovat na 486ku s 8MB paměti Xserver, je asi zbytečné diskutovat. Stejně tak nejspíš moc nevyužijete LaTeX na stroji, který poběží výlučně jako firewall. Abych to zkrátil – je lepší věnovat více času instalaci a vybrat pouze ty aplikace, které budou využívány.

Pro účely dalšího povídání předpokládejme, že máme k dispozici (na HD) funkční instalaci nějaké linuxové distribuce. Pokud nebyla instalace prováděna s ohledem na minimalizaci, tak dalším (zřejmým) krokem je odstranění nepotřebných aplikací. Snad ani nestojí za zmínku, že většinu zde popisovaných postupů může provádět jenom root. Proto je velmi důležité si dobře rozmyslet každý krok dříve, než jej provedete. Máte-li možnost vytvořit si záchrannou disketu, udělejte to. Myslím, že výstrah už bylo dost, a tak je načase přejít do „akce“.

Jedním z největších balíků aplikací a dat je systém XFree. Na něj se navíc nabaluje množství dalších programů (window managery, různé kancelářské balíky atd). Pro Linux je typické, že běžná „velká“ distribuce nabízí pro každý typ úkolu (např. editace textu) poměrně mnoho aplikací. Chceme-li šetřit místem, je dobré odstranit funkčně duplicitní aplikace. (K čemu je dobré mít nainstalovány současně KOffice, OpenOffice a StarOffice? Nestačil by jen AbiWord?). Zjevným příkladem plýtvání obecně je používaní GNOME a KDE. I když osobně proti žádnému z představitelů této „velké dvojky“ nic nemám, na starší stroje se hodí spíše WindowMaker , BlackBox nebo IceWM (pro opravdové tvrďáky je tu Twm :-)). Jednak nezaberou tolik místa na disku i v paměti, jednak jsou podstatně rychlejší.

Samostatnou kapitolou v knize zvané XFree jsou fonty. Prohlížet si dokumenty v thajštině je určitě super, ale pro obyčejné Středoevropany celkem postačuje kódování ISO8859–2 (a samozřejmě standardní ISO8859–1). Většina fontů je obvykle uložena v podadresářích adresáře /usr/X11R6/lib/­X11/fonts. (např. 100dpi, 75dpi, Speedo, …). Dalším možným místem je adresář /usr/share/fonts. Pokud není kódování zřejmé už ze jména souboru s fontem (např. „courR14-ISO8859–2.pcf“), lze znakovou sadu určit ze souboru fonts.dir, který je v každém adresáři obsahujícím nějaký font. Po dostatečném „vyčištění“ je nutné ve všech adresářích, ve kterých došlo ke změně, spustit program mkfontdir, který aktualizuje seznam v souborufonts.dir. Jestli někdo používá TrueType fonty, potřebuje navíc i utilitu typu ttmkfdir (součást balíčku freetype), která nejdříve vytvoří pomocný soubor fonts.scale. Na jeho základě potom mkfontdir vytvoří korektní fonts.dir.

Stalo se dobrým zvykem, že dokumentace je nedílnou součástí každé distribuce. Obvykle jsou k dispozici manuálové stránky a dokumentace ve formátu info. Tyto dva systémy si často konkurují a mohou obsahovat redundantní informace. Proto nemusí být od věci některé dokumenty z vašeho méně oblíbeného systému odstranit (tip – man dle mého názoru používá mnohem víc lidí než info). Manuálové stránky bývají obvykle zkomprimované (gzip, bzip2). Pokud ne, není nic jednoduššího, než zadat

gzip -r /usr/share/man

nebo

find /usr/share/man -type f -exec bzip2 {} \;

Další adresáře s nápovědou, které je možné zkomprimovat, jsou např. /usr/X11R6/man nebo /usr/local/sha­re/man. Pak už stačí přidat do konfiguračního souboru /etc/man.config řád­ky

.gz             /usr/bin/gunzip -c
.bz2            /usr/bin/bzip2 -c -d
.z
.Z              /bin/zcat

a je to v suchu. Systém man si vytváří „cache“ často používaných stránek (standardně je to adresář /var/catman). Toto chování lze vypnout přidáním řádku

NOCACHE

do konfiguračního souboru /etc/man.config. Formátovaní manuálové stránky bude sice pokaždé trvat déle, ale odstraní se tím nežádoucí duplikace.

Většina programů má navíc nějakou dokumentaci uloženou v adresáři /usr/doc/ nebo /usr/share/doc. Pro každý program existuje adresář, kde jsou nějaké README, skoro vždy je tam znění GPL (nebo jiné) licence a někdy i nějaké příklady (u knihoven, programovacích jazyků atp). Této dokumentace se lze většinou bez rizika jednoduše zbavit smazáním. Šetrnější alternativou je komprese celého adresáře pomocí gzip nebo bzip2. Máte-li na svém Linuxu nainstalován LaTex (což samo o sobě není z hlediska úspory místa na disku rozumné), určitě zkomprimujte příslušnou dokumentaci v adresáři /usr/share/tex­mf/doc nebo /usr/lib/texmf/doc.

Opravdu kvalitní způsob, jak plýtvat místem na disku, je instalace zdrojáků kernelu. Tady platí jednoduchá rada – pryč s tím! Jakmile už máte přeložený a otestovaný vlastní kernel, zdrojových textů se zbavte. Při mazání pozor!!! Je možné, že v adresáři /usr/include jsou symlinky (asm, linux, net, …) na položky adresáře /usr/src/linux/in­clude. Je-li tomu tak, pak některé podadresáře v adresáři /usr/src/linux/in­clude jsou důležité pro překladač gcc a musí zůstat. Pro architekturu i386 je podstatný adresář asm-i386. Dále musí zůstat i asm-generic. Jiné adresáře, které začínají na asm-, je možné smazat. Všechny zbylé adresáře jsou (někdy) potřebné.

Pokud někomu nestačí dosud navrhované úpravy, může přejít k drastičtějším metodám. První je použití programu strip. Ten je součástí balíčku binutils a slouží k odstranění symbolů ze spustitelných souborů a knihoven. K demonstraci účinků může posloužit jednoduchý prográmek hello.c :

#include <stdio.h>

int main() {

  printf("Hello World\n");
  return 0;
}

Po přeložení pomocí

gcc -o hello hello.c

má výsledný soubor velikost 13580 bytů (při použití gcc 2.96). Po odstranění symbolů pomocí

strip hello

se velikost zmenší na 3164 bytů. To sice může vypadat na první pohled velmi slibně, ale ve většině distribucí jsou už spustitelné soubory a knihovny takto upravené. Proto má smysl zkusit strip pouze na binárky, které jste sami překládali a instalovali pomocí klasického postupu

configure
make
make install

Pokud se i tak chcete pokusit „stripnout“ jiné binárky, vyhněte se adresářům /bin, /sbin a /lib, jinak se může stát, že bude nutné celý systém přeinstalovat.

UX DAy - tip 2

Nebylo-li ani odstranění symbolů dostatečně účinné, můžeme nasadit kompresi spustitelných binárek pomocí programu upx. Domovské stránky projektu jsou na upx.sourcefor­ge.net. I když je upx poměrně spolehlivý, platí podobně jako u stripu, že adresáře /bin a /sbin jsou tabu. Dobrým místem pro kompresi jsou adresáře /usr/bin a /usr/X11R6/bin. Velikost souboru se může smrsknout až na 30 procent původního stavu. Nevýhodou je, že takto upravené programy zaberou při startu více místa v paměti a i samotný start je kvůli dekompresi pomalejší.

U upx toto povídání končí. Aktivitě se však žádné meze nekladou. Pokud na to má někdo nervy, klidně může procházet adresáře se spustitelnými soubory a postupně mazat ty programy, které uzná za nepotřebné. Stejně tak lze promazat položky v adresáři /dev a uvolnit tak několik tisíc i-nodů, nebo přidat do kernelu podporu devfs a odstranit z /dev všechno. Další finta, která uvolní trochu místa, je komprese modulů jádra (/lib/modules) pomocí gzipu. Při natahování do paměti se odzipují automaticky (i když nevím, nakolik to funguje pod kernelem starším než 2.2.x). Zoufalci mohou odstranit nadbytečné záznamy (adresáře) z databáze locales (obvykle/usr/sha­re/locale). Existuje mnoho dalších drobností, které dohromady mohou ušetřit nějaký ten MB. Takže pokud máte čas, chuť a záchrannou disketu vždy po ruce, tak s minimalizací experimentujte dle libosti.

Byl pro vás článek přínosný?

Autor článku