|
|
1.1 ! root 1: ! 2: [ NOTE! As of linux-0.97.pl5, the linux kernel include-files have ! 3: finally been totally integrated with the normal headers. That means ! 4: no more "-nostdinc -I$(KERNELHDRS)" in the Makefiles etc, but it ! 5: also means that you /have/ to have the correct /usr/include/linux ! 6: and ../asm symlinks. See "Basic configuration 2" ] ! 7: ! 8: VERY QUICK AND DIRTY README ! 9: by Lars Wirzenius ! 10: ! 11: This is the README for the Linux kernel sources. It tells a few small ! 12: things about kernel configuration and other things that can perhaps be ! 13: useful if you want to compile the kernel from scratch. It leaves out a ! 14: lot as well, probably because the person who wrote it doesn't understand ! 15: very much about operating systems. Linus did his best to help, but all ! 16: problems this causes are my fault. ! 17: ! 18: In order to compile this version of the kernel you need GCC 2.2.2 or ! 19: newer. Some makefile targets require special commands which may not be ! 20: available on all machines (see below). Normal utilities like ls etc are ! 21: not explicitly listed, they are assumed to be available on all systems. ! 22: ! 23: Kernel sources are usually kept in /usr/src/linux. If you have them ! 24: elsewhere, you will have to change path names in a few places. ! 25: Filenames that aren't absolute are supposed to be relative to the ! 26: toplevel kernel source directory. ! 27: ! 28: ! 29: * Basic configuration ! 30: ! 31: 1. Edit Makefile: Check the definitions of macros ROOTDEV, KEYBOARD, ! 32: MATH_EMULATION, RAMDISK and SVGA_MODE before you run make. They are ! 33: explained in the Makefile. MATH_EMULATION does not hurt much even if ! 34: you have an FPU (387 or a 486 with a built in FPU), since Linux uses ! 35: the FPU if it finds one, even with MATH_EMULATION defined. The kernel ! 36: will be slightly bigger. It is probably not worth it to recompile the ! 37: kernel just to get rid of the emulation. ! 38: ! 39: 2. Create the symlinks: ! 40: ! 41: ln -fs /usr/src/linux/include/linux /usr/include/linux ! 42: ln -fs /usr/src/linux/include/asm /usr/include/asm ! 43: ! 44: This is required so that the linux sources will correctly find their ! 45: header files - it is also used by the normal user-level header files to ! 46: get some system-specific information. ! 47: ! 48: [ Linus' note2: This is automatically done by the gcc-2.2.2d and newer ! 49: installation script, so if you have the new compiler, you should ! 50: already have these links ] ! 51: ! 52: * Things you may want to get rid of ! 53: ! 54: 3. To remove SCSI drivers, do this: ! 55: ! 56: - remove kernel/blk_drv/scsi/scsi.a from DRIVERS in the Makefile ! 57: - remove the commands for the subdirs dependency in ! 58: kernel/blk_drv/Makefile ! 59: - add "#undef CONFIG_SCSI" to the end of include/linux/config.h ! 60: ! 61: The SCSI drivers take a bit of memory, and also slow the bootup a bit, ! 62: so you may want to get rid of them if you don't have an SCSI drive. ! 63: ! 64: 4. The kernel contains code for the extended filesystem (extfs), ! 65: MS-DOS filesystem (dosfs) and proc-fs (proc), all of which are in ! 66: testing phases and are not recommended for real use yet. If you don't ! 67: want to include these in the kernel, do the following: ! 68: ! 69: - remove references to these in the FILESYSTEMS macro in the ! 70: root Makefile ! 71: - remove directory names from the SUBDIRS macro in fs/Makefile ! 72: - remove the corresponding lines in the initialization of ! 73: file_systems in fs/super.c. ! 74: ! 75: 5. The TCP/IP code is in the standard sources as of version 0.98, but ! 76: it is not compiled into the normal binary. To get TCP/IP working, you ! 77: have to: ! 78: ! 79: - edit 'net/Makefile', defining the SUBDIRS and SOCK_FLAGS ! 80: variables correctly (currently commented out). Likewise, you ! 81: have to edit the rule for linking net.o in the Makefile (again ! 82: removing a '#' to make tcp/tcpip.o active) ! 83: - make sure you have the /usr/include/netinet/protocols.h header ! 84: file. If you don't have it, you should be able to find it at ! 85: the same place you got the kernel, or with a newer compiler ! 86: version. ! 87: - remove all object (*.o) files in the net/ subdirectory, making ! 88: sure that they are recompiled with the correct Makefile ! 89: definitions. ! 90: - Additionally, you obviously need the tcp/ip programs to make any ! 91: use of the kernel feature. If you haven't joined the TCP/IP ! 92: mailing list, do so. ! 93: ! 94: ! 95: * Running make ! 96: ! 97: [ Linus' note3: if you have problems with make not working correctly, ! 98: get a new copy of GNU make. pmake may or may not work due to the ! 99: macro inheritation assumptions etc ] ! 100: ! 101: Unless you know what you're doing, don't ever run the makefiles in ! 102: subdirectories by hand. There is a bit of interaction between the ! 103: various makefiles, e.g. in the form of inherited macros and the like. ! 104: ! 105: The following targets all apply for the makefile at the root of the ! 106: kernel source tree. ! 107: ! 108: "make" or "make all" compiles everything. ! 109: ! 110: "make Image" is like "make all", but it doesn't bump the number in ! 111: .version, which tells how many times this version has been compiled ! 112: (helps you differentiate between different configurations etc). ! 113: ! 114: "make disk" is like "make Image", but it additionally writes out a copy ! 115: of the boot image to a floppy in your first floppy drive (/dev/fd0; ! 116: change the filename if you want a different floppy). You need to have ! 117: a formatted, overwritable floppy in that drive when it is time to do the ! 118: copy. This requires dd. ! 119: ! 120: "make dep" updates all dependencies. This requires sed. It modifies ! 121: the makefiles directly (the end of them, starting at the ###Dependencies ! 122: -line at the end). "make dep" is required after patching, or the kernel ! 123: may not compile cleanly. ! 124: ! 125: "make clean" will remove all object files and other files created by the ! 126: compilation. This requires basename. ! 127: ! 128: You may wish to redirect compiler error messages to a file so that you ! 129: can review them later and to ease problem fixing. You can do this with ! 130: Bash with: ! 131: ! 132: make something 2>&1 | tee make.out ! 133: ! 134: The tee part is so that you can check what is going on while the ! 135: compilation runs. If you have GNU emacs and use M-x compile you don't ! 136: need this, of course. ! 137: ! 138: Lars Wirzenius
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.