Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | 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.3.3 or newer (older compiler versions may work, but I haven't tested it). 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 |