Ik heb een notebook waarop ik Linux heb geïnstalleerd, naast Windows 95 wat was voorgeïnstalleerd. Ik perste de Windows-partitie samen tot 500 Mb, om ruimte te maken voor een 240 Mb partitie voor Linux. De laatste partitie kan klein lijken, ik heb het echter voor elkaar gekregen om er een tamelijk compleet Linux Systeem op te installeren, gebaseerd op Red Hat 4.1 en wat magic om zoveel mogelijk ruimte te besparen.
Als je om ruimte verlegen zit, zullen de te vinden aanwijzingen in de volgende secties een aanmerkelijke hoeveelheid harddiskruimte vrijmaken. De enige waarschuwing die ik je geef is: geef mij niet de schuld als er iets verkeerd gaat! We zullen gebruik gaan maken van een paar programma's die voor mij prima werkte, maar die inherent gevaarlijk zijn. Je bent gewaarschuwd.
Je hebt nodig:
gzip
compressie utility, of als alternatief bzip2
dat je kunt vinden op
ftp://sunsite.unc.edu:/pub/Linux/utils/compress;
deze tool comprimeert beter dan gzip
, maar het is ook wat langzamer
en slurpt een hoop geheugen op;upx
uitvoerbare compressor, waarvan de home-page te vinden
is op
http://cdata.tvnet.hu/~ml/upx.html en
http://wildsau.idv.uni-linz.ac.at/mfx/upx.html;zlibc
package, beschikbaar op
ftp://sunsite.unc.edu:/pub/Linux/libs/compression. Het wordt
zlibc-X.X.tar.gz
genoemd, waar X.X
voor de laatste versie staat.Er zijn andere uitvoerbare compressors. Één daarvan is
gzexe
(vergeet het), terwijl tcx
waarschijnlijk de beste was
voordat upx
beschikbaar kwam; nog een ander is
tzx
, in theorie beter dan tcx
. Het geval is, dat het
alles verpestte toen ik het op een reserve PC uitprobeerde, alhoewel ik er
niet zeker van ben, of ik iets verkeerds deed.
Je kunt je maar beter bij upx
houden: het is betrouwbaar,
efficïent en erg handig.
Er zijn kernel-patches beschikbaar die voorzien in een transparante compressie van bestandssystemen a la Stacker, maar tijdens dit schrijven, heeft geen daarvan nog de reputatie stabiel en betrouwbaar te zijn. Blijf het voor de zekerheid uit de weg.
De kernel-sources nemen meer dan 20 Mb in beslag, en misschien dat je ze wilt verwijderen. Als dit zo is, raad ik je aan een nieuwe kernel te compileren die voor eens en voor altijd aan je computer is aangepast. Wees echter voorzichtig.
Ik raad je niet aan je kernel-sources te verwijderen, tenzij je er zeker van bent dat je computer juist is geconfigureerd. Bovendien heb je de kernel #includes nodig om C-programma's te compileren. Bedenk je tweemaal!
Als je toch besluit dit te doen, verwijder dan niet de include/linux tree, tenzij je weet dat je nooit applicaties op je computer zal compileren.
Neem nu de beslissing over welke applicaties je echt nodig hebt.
Een aantal kan overtollig blijken: ben je er bijvoorbeeld zeker van niet
zonder emacs
te kunnen? Je zou in plaats daarvan jed
kunnen gebruiken.
Het is aan jou te beslissen wat je wilt behouden. Een aantal algemene punten:
gcc
is een tamelijke groot package. Het is nodig voor het
compileren van de kernel en alle applicaties waar geen voorgefabriceerde
binaire Linux-bestanden voor zijn. Het is uiteraard ook nodig als je je
eigen C of Fortran (met f2c
of g77
) programma's schrijft; overweeg
wat je nodig hebt voordat je het verwijdert.
Andere compilers zoals lcc
zijn prima, maar niet tot aan het niveau
van gcc
. Ik raad je aan het te houden;xterm
, geen 100 dpi fonts, enzovoort;xdvi
en ghostview
is mogelijk als je dvitty
,
dvivga
en dergelijke gebruikt. Het elimineren van
X11 dviware zou zelfs X11 overtollig maken;
Laten we beginnen met het laten afnemen van de grootte van binaire bestanden. Ga naar /usr/bin en geef het commando
machine:/usr/bin# strip *
waarmee alle symbolen ingesloten in de binaire bestanden zullen worden
verwijderd. Herhaal deze stap in /usr/X11R6/bin/ en andere
directory's met uitvoerbare bestanden die je mogelijk hebt
(vergeet de binaire bestanden van TeX en gcc
niet te lokaliseren),
maar voer het niet uit onder /sbin, /bin, of
/usr/sbin/ als je prijs stelt op je installatie!
Installeer als eerste upx
en lees de documentatie ervan. Ga dan naar
/usr/bin en voer 't uit met het commando upx *
; het zal
alle uitvoerbare bestanden comprimeren, inclusief de suid bestanden
(tcx
zou dit niet doen). Herhaal deze stap net als hierboven in andere
directory's.
Denk eraan de uitvoerbare bestanden te comprimeren wanneer je een nieuw package installeert!
Er zijn heel wat andere bestanden die voor eens en voor altijd kunnen worden gecomprimeerd. Laten we eens beginnen met /usr/doc/; ga naar deze directory en pas het volgende commando toe:
machine:/usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null
Denk eraan de docs te comprimeren als je een nieuw package installeert!
Herhaal deze stap in de directory met de documentatie voor TeX (op mijn systeem, /usr/lib/texmf/texmf/doc/. Als je het echt zeker weet, verwijder deze directory's dan voorgoed.
Installeer nu zlibc
en compileer het. Als je systeem net als dat
van mij is, dan zal het compilatie-proces worden afgebroken en een melding
geven over een ontbrekend (static) libc.
Doet er niet toe: er zal een bestand genaamd uncompress.o
te vinden zijn,
dat is wat ik nodig had. Verplaats het naar /usr/local/lib/ en
voeg deze regel toe aan /etc/profile:
export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o
Nu kun je met gzip
niet alleen documentatie comprimeren, maar
ook gegevenbestanden:
de applicaties waarmee ze worden gebruikt, zullen ze niettemin kunnen
gebruiken. In theorie zou de truc bij de meeste applicaties moeten kunnen
werken, maar in praktijk kan de mate van succes variëren. De mijne
was niet bepaald indrukwekkend.
Dit kreeg ik toen ik de bovenstaande procedure op één van
mijn computers toepaste.
Voor de behandeling, rapporteerde df
dat ik 398,798 1024--blokken
in gebruik had:
df
rapporteerde 244,668
gebruikte blokken;upx
toe op /usr/bin,
/usr/X11R6/bin, /usr/lib/texmf/bin/i586-linux,
en /usr/lib/gcc-lib/i386-linux/2.7.2.1. 226,270 gebruikte blokken;Samenvattend startte ik met 398,798 blokken en eindigde met 198,745.
Bedenk je eens wat je in die 200.000 vrijgekomen blokken kunt stoppen!
Ik zou zelfs meer kunnen hebben bespaard, als ik bzip2
had gebruikt
in plaats van gzip
.
Gemiddeld zal je zo ongeveer 20 Mb besparen als je vanaf het begin zorgvuldig te werk gaat en alleen de benodigde applicaties installeert, uitvoerbare bestanden en documenten comprimeert. Voor een notebook kan dit voldoende zijn om 't mee te redden.
Tenzij anders vastgesteld, vallen Linux HOWTO documenten onder het copyright van de respectieve auteurs. Linux HOWTO documenten mogen geheel of gedeeltelijk via elke fysiek of elektronisch medium worden gereproduceerd en gedistribueerd, zolang deze copyrightmelding behouden blijft op alle kopieën. Commerciële herdistributie is toegestaan en wordt aangemoedigd; de auteur zou echter graag in kennis worden gesteld van een dergelijke distributie.
Alle vertalingen, afgeleide werken, of verzamelde werken waarin Linux HOWTO documenten zijn verenigd moeten van deze copyright-melding zijn voorzien. Dat wil zeggen dat je geen afgeleide werken van een HOWTO mag produceren en aanvullende beperkingen mag opleggen op de distributie ervan. Uitzonderingen op deze regels worden onder bepaalde condities verleend; neem alsjeblieft contact op met de Linux HOWTO coördinator via het hieronder gegeven adres.
In het kort, we willen verspreiding van deze informatie zoveel mogelijk aanmoedigen via zo veel mogelijk kanalen. We willen echter het copyright op deze HOWTO documenten blijven behouden, en zouden graag in kennis worden gesteld van plannen om deze HOWTO's opnieuw te distribueren.
Neem alsjeblieft voor vragen contact op met Tim Bynam, de Linux HOWTO coördinator, op [email protected] via email.
``Saving Space mini-HOWTO'' werd geschreven door Guido Gonzato, [email protected].
Dit document onder voorwaarde ``zoals 't er staat''. Ik heb veel moeite gedaan om dit zo accuraat mogelijk te beschrijven, maar je gebruikt de informatie hieruit op eigen risico. In geen enkel geval zal ik aansprakelijk kunnen worden gesteld voor schade die voortkomt uit het gebruik van dit document.
Feedback is welkom. Voor alle verzoeken, suggestie, flames, enz., kun je gerust contact met me opnemen.
Veel plezier met Linux en 't leven.
Guido =8-)