A. Kernel Build Example
Here is a kernel build example (in Redhat 9.0). Statements between "/*" and "*/" are in-line comments, not console output.
[root@localhost root]# ln -s /usr/src/linux-2.4.20 /usr/src/linux [root@localhost root]# cd /usr/src/linux [root@localhost linux]# make xconfig /* Create .config * 1. "Load Configuration from File" -> * /boot/config-2.4.20-28.9, or whatever you like * 2. Modify kernel configuration parameters * 3. "Save and Exit" */ [root@localhost linux]# make oldconfig /* Re-check .config, optional */ [root@localhost linux]# vi Makefile /* Modify EXTRAVERSION in linux/Makefile, optional */ [root@localhost linux]# make dep /* Create .depend and more */ [root@localhost linux]# make bzImage /* ... Some output omitted */ ld -m elf_i386 -T /usr/src/linux-2.4.20/arch/i386/vmlinux.lds -e stext arch/i386 /kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_m ounts.o \ --start-group \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/f s.o ipc/ipc.o \ drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/n et/net.o drivers/media/media.o drivers/char/drm/drm.o drivers/net/fc/fc.o driver s/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o dri vers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver .o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/p np/pnp.o drivers/video/video.o drivers/net/hamradio/hamradio.o drivers/md/mddev. o drivers/isdn/vmlinux-obj.o \ net/network.o \ /usr/src/linux-2.4.20/arch/i386/lib/lib.a /usr/src/linux-2.4.20/lib/lib. a /usr/src/linux-2.4.20/arch/i386/lib/lib.a \ --end-group \ -o vmlinux nm vmlinux | grep -v '\(compiled\)\|\(\.o$\)\|\( [aUw] \)\|\(\.\.ng$\)\|\(LASH[R L]DI\)' | sort > System.map make[1]: Entering directory `/usr/src/linux-2.4.20/arch/i386/boot' gcc -E -D__KERNEL__ -I/usr/src/linux-2.4.20/include -D__BIG_KERNEL__ -traditiona l -DSVGA_MODE=NORMAL_VGA bootsect.S -o bbootsect.s as -o bbootsect.o bbootsect.s bootsect.S: Assembler messages: bootsect.S:239: Warning: indirect lcall without `*' ld -m elf_i386 -Ttext 0x0 -s --oformat binary bbootsect.o -o bbootsect gcc -E -D__KERNEL__ -I/usr/src/linux-2.4.20/include -D__BIG_KERNEL__ -D__ASSEMBL Y__ -traditional -DSVGA_MODE=NORMAL_VGA setup.S -o bsetup.s as -o bsetup.o bsetup.s setup.S: Assembler messages: setup.S:230: Warning: indirect lcall without `*' ld -m elf_i386 -Ttext 0x0 -s --oformat binary -e begtext -o bsetup bsetup.o make[2]: Entering directory `/usr/src/linux-2.4.20/arch/i386/boot/compressed' tmppiggy=_tmp_$$piggy; \ rm -f $tmppiggy $tmppiggy.gz $tmppiggy.lnk; \ objcopy -O binary -R .note -R .comment -S /usr/src/linux-2.4.20/vmlinux $tmppigg y; \ gzip -f -9 < $tmppiggy > $tmppiggy.gz; \ echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) inpu t_data = .; *(.data) input_data_end = .; }}" > $tmppiggy.lnk; \ ld -m elf_i386 -r -o piggy.o -b binary $tmppiggy.gz -b elf32-i386 -T $tmppiggy.l nk; \ rm -f $tmppiggy $tmppiggy.gz $tmppiggy.lnk gcc -D__ASSEMBLY__ -D__KERNEL__ -I/usr/src/linux-2.4.20/include -traditional -c head.S gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno- trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpref erred-stack-boundary=2 -march=i686 -DKBUILD_BASENAME=misc -c misc.c ld -m elf_i386 -Ttext 0x100000 -e startup_32 -o bvmlinux head.o misc.o piggy.o make[2]: Leaving directory `/usr/src/linux-2.4.20/arch/i386/boot/compressed' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o tools/build tools/buil d.c -I/usr/src/linux-2.4.20/include objcopy -O binary -R .note -R .comment -S compressed/bvmlinux compressed/bvmlinu x.out tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage Root device is (3, 67) Boot sector 512 bytes. Setup is 4780 bytes. System is 852 kB make[1]: Leaving directory `/usr/src/linux-2.4.20/arch/i386/boot' [root@localhost linux]# make modules modules_install /* ... Some output omitted */ cd /lib/modules/2.4.20; \ mkdir -p pcmcia; \ find kernel -path '*/pcmcia/*' -name '*.o' | xargs -i -r ln -sf ../{} pcmcia if [ -r System.map ]; then /sbin/depmod -ae -F System.map 2.4.20; fi [root@localhost linux]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.20 [root@localhost linux]# cp vmlinux /boot/vmlinux-2.4.20 [root@localhost linux]# cp System.map /boot/System.map-2.4.20 [root@localhost linux]# cp .config /boot/config-2.4.20 [root@localhost linux]# mkinitrd /boot/initrd-2.4.20.img 2.4.20 [root@localhost linux]# vi /boot/grub/grub.conf /* Add the following lines to grub.conf: title Linux (2.4.20) kernel /vmlinuz-2.4.20 ro root=LABEL=/ initrd /initrd-2.4.20.img */ |
Refer to Kernelnewbies FAQ: How do I compile a kernel and Kernel Rebuild Procedure for more details.
To build the kernel in Debian, also refer to Debian Installation Manual: Compiling a New Kernel, The Debian GNU/Linux FAQ: Debian and the kernel and Debian Reference: The Linux kernel under Debian. Check "zless /usr/share/doc/kernel-package/Problems.gz" if you encounter problems.