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<61>
|
|||
|
lation into the least possible space. It's particularly aimed at note<74>
|
|||
|
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:
|
|||
|
|
|||
|
|
|||
|
<20> a fully working Linux system (any version should be OK);
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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>;
|
|||
|
|
|||
|
<20> 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:
|
|||
|
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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:
|
|||
|
|
|||
|
|
|||
|
<20> I didn't remove the kernel sources and the kernel headers;
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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;
|
|||
|
|
|||
|
<20> 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-)
|
|||
|
|
|||
|
|
|||
|
|