
		DON'T PANIC

This is the README for the Linux kernel sources.  It tells a few small
things about kernel configuration and other things that can perhaps be
useful if you want to compile the kernel from scratch.  It leaves out a
LOT as well, but it shouldn't really be that hard to compile the kernel. 
I hope. 

In order to compile this version of the kernel you need GCC 2.4.3 or
newer (older compiler versions have problems - no guarantees it will
even compile much less work).  Some makefile targets require special
commands which may not be available on all machines (see below).  Normal
utilities like ls etc are not explicitly listed, they are assumed to be
available on all systems. 

Kernel sources are usually kept in /usr/src/linux.  If you have them
elsewhere, you will have to change path names in a few places. 
Generally, if you aren't sure of what you are doing, make your life
easier by using the standard /usr/src/linux source tree.  Filenames that
aren't absolute are supposed to be relative to the toplevel kernel
source directory. 

* Basic configuration

	* SETUP

1.  make sure /usr/include/asm and /usr/include/linux are symlinks to
the linux source tree include files.  The output of

  # ls -ld /usr/include/asm /usr/include/linux

should look like this:

  lrwxrwxrwx   1 root     root           26 Apr 19 20:03 /usr/include/asm -> /usr/src/linux/include/asm
  lrwxrwxrwx   1 root     root           28 Apr 19 20:03 /usr/include/linux -> /usr/src/linux/include/linux

If it doesn't, create the appropriate symlinks with

  # cd /usr/include
  # rm -rf linux asm
  # ln -s /usr/src/linux/include/linux .
  # ln -s /usr/src/linux/include/asm .

Also, if you are installing a new version of linux over the sources of
an old one (or have user kernel patches to get a new version), you
should probably do a "make mrproper" to remove any traces of old object
files or incorrect dependency information. 

2.  Edit Makefile: Check the definitions of macros ROOTDEV, RAMDISK and
SVGA_MODE before you run make.  They are explained in the Makefile. 

3.  Run "make config" in /usr/src/linux, and answer the questions that
the config script asks you.  It should hopefully set up most of the rest
of the flags for your system. 

4.  Run "make dep" to set up all the dependencies correctly.  The
default dependencies may not fit your system due to different compiler
versions or similar.  Also, you may wish to run "make clean" first to
make sure you don't have any old object files that mess things up if you
have changed or patched your kernel. 

* Running make

Unless you know what you're doing, don't ever run the makefiles in
subdirectories by hand.  There is a bit of interaction between the
various makefiles, e.g.  in the form of inherited macros and the like. 

The following targets all apply for the makefile at the root of the
kernel source tree. 

"make" or "make all" compiles the kernel and makes a compressed kernel
image called "zImage".  It also bumps compilation numbers to help you
keep track of different kernels. 

"make Image" is like "make all", but it doesn't bump the number in
.version, which tells how many times this version has been compiled
(helps you differentiate between different configurations etc). 

"make disk" is like "make Image", but it additionally writes out a copy
of the boot image to a floppy in your first floppy drive (/dev/fd0;
change the filename if you want a different floppy).  You need to have a
formatted, overwritable floppy in that drive when it is time to do the
copy.  This requires dd. 

"make zdisk" and "make zImage" are the same as their 'z-less'
counterparts, but create a compressed kernel that autodecompresses on
bootup.  This is the preferred mode of operation, as it both allows for
a larger kernel and makes the images smaller. 

"make dep" updates all dependencies.  This requires sed.  It modifies
the makefiles directly (the end of them, starting at the ###Dependencies
-line at the end).  "make dep" is required after patching, or the kernel
may not compile cleanly. 

"make clean" will remove all object files and other files created by the
compilation.  This requires basename. 

You may wish to redirect compiler error messages to a file so that you
can review them later and to ease problem fixing.  You can do this with
Bash with:

	make something 2>&1 | tee make.out

The tee part is so that you can check what is going on while the
compilation runs.  If you have GNU emacs and use M-x compile you don't
need this, of course. 

		Lars Wirzenius & Linus Torvalds
