| |
| [ NOTE! As of linux-0.97.pl5, the linux kernel include-files have |
| finally been totally integrated with the normal headers. That means |
| no more "-nostdinc -I$(KERNELHDRS)" in the Makefiles etc, but it |
| also means that you /have/ to have the correct /usr/include/linux |
| and ../asm symlinks. See "Basic configuration 2" ] |
| |
| VERY QUICK AND DIRTY README |
| by Lars Wirzenius |
| |
| 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, probably because the person who wrote it doesn't understand |
| very much about operating systems. Linus did his best to help, but all |
| problems this causes are my fault. |
| |
| In order to compile this version of the kernel you need GCC 2.2.2 or |
| newer. 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. |
| Filenames that aren't absolute are supposed to be relative to the |
| toplevel kernel source directory. |
| |
| |
| * Basic configuration |
| |
| 1. Edit Makefile: Check the definitions of macros ROOTDEV, KEYBOARD, |
| RAMDISK and SVGA_MODE before you run make. They are explained in the |
| Makefile. |
| |
| 2. Create the symlinks: |
| |
| ln -fs /usr/src/linux/include/linux /usr/include/linux |
| ln -fs /usr/src/linux/include/asm /usr/include/asm |
| |
| This is required so that the linux sources will correctly find their |
| header files - it is also used by the normal user-level header files to |
| get some system-specific information. |
| |
| [ Linus' note2: This is automatically done by the gcc-2.2.2d and newer |
| installation script, so if you have the new compiler, you should |
| already have these links ] |
| |
| 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. |
| |
| * Running make |
| |
| [ Linus' note3: if you have problems with make not working correctly, |
| get a new copy of GNU make. The linux kernel makefiles are written |
| for GNU make and will not work for anything else ] |
| |
| 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 everything. |
| |
| "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 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 |