293 lines
9.2 KiB
Plaintext
293 lines
9.2 KiB
Plaintext
Saving Space mini-HOWTO
|
||
By Guido Gonzato, <mailto:guido@ibogeo.df.unibo.it>
|
||
v1.0.1, 7 April 1999
|
||
|
||
This mini-HOWTO gives you directions for squeezing your Linux instal
|
||
lation into the least possible space. It's particularly aimed at note
|
||
book users.
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
1. Introduction
|
||
|
||
2. Software requirements
|
||
|
||
3. The procedure
|
||
|
||
3.1 Removing the Kernel Sources
|
||
3.2 Pruning Out Applications
|
||
3.3 Stripping Binaries
|
||
3.4 Compressing with
|
||
3.5 Gzipping around
|
||
|
||
4. A Real Life Example
|
||
|
||
5. The End
|
||
|
||
5.1 Copyright
|
||
5.2 Disclaimer
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
1. Introduction
|
||
|
||
|
||
I've got a notebook I installed Linux on, beside Windows 95 that was
|
||
pre--installed. I squeezed the Windows partition to 500 Mb, making
|
||
space for a 240 Mb Linux one. Small though the latter may seem, I've
|
||
managed to install a fairly complete Linux system on it, based on Red
|
||
Hat 4.1 and some magic to save as much space as possible.
|
||
|
||
If you're in need for space, the indications you'll find in the
|
||
following sections will free up a considerable chunk of hard disk. The
|
||
only caveat I'm giving you is: don't blame me if something goes wrong!
|
||
We'll be using a couple of programs that worked fine for me, but are
|
||
inherently dangerous. You've been warned.
|
||
|
||
|
||
|
||
2. Software requirements
|
||
|
||
|
||
You need:
|
||
|
||
|
||
· a fully working Linux system (any version should be OK);
|
||
|
||
· the common gzip compression utility, or alternatively bzip2 that
|
||
you find on <ftp://sunsite.unc.edu:/pub/Linux/utils/compress>; this
|
||
tool compresses better than gzip, but it's also a wee bit slower
|
||
and consumes a lot of memory;
|
||
|
||
· the upx executable compressor, whose home page is at
|
||
<http://cdata.tvnet.hu/~ml/upx.html> and <http://wildsau.idv.uni-
|
||
linz.ac.at/mfx/upx.html>;
|
||
|
||
· the zlibc package, available on
|
||
<ftp://sunsite.unc.edu:/pub/Linux/libs/compression>. It's called
|
||
zlibc-X.X.tar.gz, where X.X is the latest version.
|
||
|
||
There are other executable compressors. One is gzexe (forget it),
|
||
while tcx was probably the best before upx became available; yet
|
||
another is tzx, in theory better than tcx. The thing is, it screwed
|
||
everything up when I tried it on a spare PC, though I'm not sure if I
|
||
did something wrong. You had better stick with upx: it's reliable,
|
||
efficient, and very handy.
|
||
|
||
There are kernel patches that provide transparent file system
|
||
compression a la Stacker, but as of this writing none of them has yet
|
||
a reputation for stability and reliability. For safety's sake, steer
|
||
clear.
|
||
|
||
|
||
|
||
3. The procedure
|
||
|
||
|
||
|
||
3.1. Removing the Kernel Sources
|
||
|
||
|
||
The kernel sources take up more than 20 Mb, and you may want to remove
|
||
them. If so, I suggest that you compile a new kernel that is tailored
|
||
to your machine once and for all, then get rid of the sources. Take
|
||
care, though.
|
||
|
||
I don't recommend that you remove the kernel sources unless you are
|
||
sure that your machine is properly configured. Besides, you need the
|
||
kernel #includes to compile C programs. Think twice!
|
||
|
||
If you do decide so, do not remove the include/linux tree unless you
|
||
know you'll never compile applications on your machine.
|
||
|
||
|
||
|
||
3.2. Pruning Out Applications
|
||
|
||
|
||
Now, decide which applications you really need. Some may prove
|
||
redundant: for instance, are you sure you can't live without emacs?
|
||
You could use jed instead.
|
||
|
||
It's up to you to decide what you want to keep. Some general points:
|
||
|
||
|
||
· gcc is a fairly large package. It's needed to recompile the kernel
|
||
and all the applications for which there are no pre--built Linux
|
||
binaries. It's also needed, of course, if you write your own C or
|
||
Fortran (with f2c or g77) programs; consider your needs before
|
||
removing it. Other compilers like lcc are fine, but not up to gcc
|
||
level. I suggest that you keep it;
|
||
|
||
· X11 is awfully large, but it's a nice thing to have. If you decide
|
||
you can't give it up, at least try to make do with as little as
|
||
necessary: only the right X server, one simple window manager, only
|
||
one xterm, no 100 dpi fonts, and so on;
|
||
|
||
· TeX and accompanying packages are very large indeed. Giving up
|
||
LaTeX and sticking to plain TeX saves a lot of space; giving up X11
|
||
previewers like xdvi and ghostview is possible if you use dvitty,
|
||
dvivga and some such. Eliminating the need for X11 dviware could
|
||
even make X11 redundant;
|
||
|
||
· games are never ``necessary''.
|
||
|
||
|
||
|
||
3.3. Stripping Binaries
|
||
|
||
|
||
Let's start reducing the size of binaries. Move to /usr/bin and issue
|
||
the command
|
||
|
||
|
||
|
||
machine:/usr/bin# strip *
|
||
|
||
|
||
|
||
which will do away with symbols embedded in binaries. Repeat this step
|
||
in /usr/X11R6/bin/ and other directories containing executables you
|
||
may have (don't forget to locate TeX's and gcc's binaries), but do not
|
||
run it under /sbin, /bin, or /usr/sbin/ if you value your
|
||
installation!
|
||
|
||
|
||
|
||
3.4. Compressing with upx
|
||
|
||
|
||
First, install upx and read its documentation. Then go to /usr/bin and
|
||
run it with the command upx *; it will compress all executables,
|
||
including suid ones (tcx wouldn't). Repeat this step in other
|
||
directories as seen above.
|
||
|
||
Remember to compress the executables whenever you install a new
|
||
package!
|
||
|
||
|
||
|
||
3.5. Gzipping around
|
||
|
||
|
||
There are lots of other files that can be compressed once and for all.
|
||
Let's start with /usr/doc/; move to this directory and issue the
|
||
command
|
||
|
||
|
||
|
||
machine:/usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null
|
||
|
||
|
||
|
||
Remember to compress the docs whenever you install a new package!
|
||
|
||
Repeat this step in the directory containing the documentation for TeX
|
||
(on my system, /usr/lib/texmf/texmf/doc/. If you're really sure,
|
||
remove these directories altogether.
|
||
|
||
Now, install zlibc and compile it. If your system is like mine, the
|
||
compilation process will abort complaining about a missing (static)
|
||
libc. Never mind; you'll find a file called uncompress.o that is
|
||
what's needed. Move it to /usr/local/lib/ and add this line to your
|
||
/etc/profile:
|
||
|
||
|
||
|
||
export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o
|
||
|
||
|
||
|
||
Now, you can compress with gzip not only documentation, but also data
|
||
files: the applications that use them will be able to use them
|
||
nonetheless. In theory, the trick should work with most applications,
|
||
but in practice your degree of success may vary. Mine was rather
|
||
unimpressive.
|
||
|
||
|
||
|
||
4. A Real Life Example
|
||
|
||
|
||
This is what I got applying the above procedure to one of my machines.
|
||
Before the treatment, df reported I used 398,798 1024--blocks:
|
||
|
||
|
||
· I didn't remove the kernel sources and the kernel headers;
|
||
|
||
· I uninstalled several applications and all of the games, but I left
|
||
X11, X11 development, C and Fortran development, Tcl/Tk, networking
|
||
tools, and a few other standard applications. df reported 244,668
|
||
used blocks;
|
||
|
||
· I ran upx on /usr/bin, /usr/X11R6/bin,
|
||
/usr/lib/texmf/bin/i586-linux, and /usr/lib/gcc-
|
||
lib/i386-linux/2.7.2.1. 226,270 used blocks;
|
||
|
||
· I compressed the documentation under /usr/doc and
|
||
/usr/lib/texmf/texmf/doc: 198,745 used blocks.
|
||
|
||
To sum up, I started with 398,798 blocks and finished with 198,745.
|
||
Think of the stuff you can shove in those 200,000 spared blocks! I
|
||
would have saved even more if I had used bzip2 instead of gzip.
|
||
|
||
On average, if you are careful from the beginning and install only the
|
||
necessary applications, compressing executables and documents will
|
||
save you some 20 Mb. On a notebook, this can be a lifesaver.
|
||
|
||
|
||
|
||
5. The End
|
||
|
||
|
||
|
||
5.1. Copyright
|
||
|
||
|
||
Unless otherwise stated, Linux HOWTO documents are copyrighted by
|
||
their respective authors. Linux HOWTO documents may be reproduced and
|
||
distributed in whole or in part, in any medium physical or electronic,
|
||
as long as this copyright notice is retained on all copies. Commercial
|
||
redistribution is allowed and encouraged; however, the author would
|
||
like to be notified of any such distributions.
|
||
|
||
All translations, derivative works, or aggregate works incorporating
|
||
any Linux HOWTO documents must be covered under this copyright notice.
|
||
That is, you may not produce a derivative work from a HOWTO and impose
|
||
additional restrictions on its distribution. Exceptions to these rules
|
||
may be granted under certain conditions; please contact the Linux
|
||
HOWTO coordinator at the address given below.
|
||
|
||
In short, we wish to promote dissemination of this information through
|
||
as many channels as possible. However, we do wish to retain copyright
|
||
on the HOWTO documents, and would like to be notified of any plans to
|
||
redistribute the HOWTOs.
|
||
|
||
If you have questions, please contact Tim Bynum, the Linux HOWTO
|
||
coordinator, at tjbinum@sunsite.unc.edu via email.
|
||
|
||
|
||
5.2. Disclaimer
|
||
|
||
|
||
``Saving Space mini-HOWTO''was written by Guido Gonzato,
|
||
<REMOVE_MEguido@ibogeo.df.unibo.it>.
|
||
|
||
This document is provided ``as is''. I put great effort into writing
|
||
it as accurately as I could, but you use the information contained in
|
||
it at your own risk. In no event shall I be liable for any damages
|
||
resulting from the use of this work.
|
||
|
||
Feedback is welcome. For any requests, suggestions, flames, etc., feel
|
||
free to contact me.
|
||
|
||
Enjoy Linux and life,
|
||
|
||
Guido =8-)
|
||
|
||
|
||
|