make bzimage¸¦ ½ÇÇà ÇßÀ» ¶§ ½ÇÇàµÇ´Â ¼ø¼¸¦ MakefileÀ» ±âÁØÀ¸·Î ³ª¿ÇØ ºÃ´Ù.
$(TOPDIR)/Makefile¿¡ Æ÷ÇÔµÈ $(TOPDIR)/arch/i386/Makefile¿¡ ÀÖ´Â 'bzimage:'·ÎºÎÅÍ ½ÃÀÛ
ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ vmlinux°¡ ¸ÕÀú ¸¸µé¾îÁü
À̶§ vmlinux°¡ ¸¸µé¾îÁö¸é $(TOPDIR)/arch/i386/boot·Î À̵¿ÇØ °è¼Ó ÁøÇà
vmlinuxÀÇ ÁøÇà
ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ version.h $(CONFIGURATION) init/main.o init/version.o linuxsubdirs°¡ ¸ÕÀú ¸¸µé¾îÁü
ÀÇÁ¸ °ü°è¿¡ ÀÇÇÑ ¸¸µé±â°¡ ³¡³ª¸é $(TOPDIR)/vmlinux°¡ ¸¸µé¾îÁü
ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ $(CONFIGURE) bbootsect bsetup compressed/bvmlinux tools/build°¡ ¸¸µé¾îÁø´Ù
compressed/bvmlinuxÀÇ ÁøÇà
ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ piggy.o $(OBJECTS)°¡ ¸ÕÀú ¸¸µé¾îÁü
piggy.o´Â $(TOPDIR)/vmlinux¸¦ ¾ÐÃàÇØ ¸¸µç´Ù.
¼ø¼´ë·Î ³ª¿ÇßÁö¸¸ MakefileÀÇ Æ¯¼º»ó Çϳª¸¦ ¸¸µé±â Àü¿¡ ÀÌ¹Ì ´Ù¸¥ °ÍÀÌ ¸ÕÀú ¸¸µé¾îÁ®¾ßÇÏ´Â µîÀÇ ÀÇÁ¸ °ü°è°¡ Àֱ⠶§¹®¿¡ ¼ø¼°¡ µÚÁýÈù °Íó·³ º¸ÀÏ °ÍÀÌ´Ù. À̸¦ ¹Ù·Î Àâ¾Æ ¸ÕÀú ¸¸µé¾îÁö´Â ¼øÀ¸·Î ³ª¿Çغ¸¸é ¾Æ·¡¿Í °°´Ù.
vmlinux
include/linux/version.h
init/main.o
init/version.o
linuxsubidrs(fs lib mm ipc kernel drivers net)
bzimage
bbootsect
bsetup
compressed/bvmlinux
piggy.o
head.o
misc.o
tools/build
MakefileÀ» ÅëÇØ ºÐ¼®µÈ °ÍÀ» ÀÌÁ¦´Â ½Ç¿¹¸¦ »ç¿ëÇØ ºÐ¼®Çغ¸ÀÚ. ¾Æ·¡ Log´Â 'make bzImage 2>&1 | tee log-bzImage.txt'¸¦ »ç¿ëÇØ ¾òÀº °ÍÀÌ´Ù. Àüü´Â ÇÊ¿ä ¾ø´Â ºÎºÐÀÌ ³Ê¹« ¸¹±â ¶§¹®¿¡ ÇÊ¿ä ¾ø´Â ºÎºÐÀº »èÁ¦Çϰųª Ãà¾àÇÏ°í ½Ç¾ú´Ù.
(1) gcc -D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -c -o init/main.o init/main.c . scripts/mkversion > .tmpversion (2) gcc -D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -DUTS-MACHINE='"i386"' -c -o init/version.o init/version.c make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C kernel (3) gcc -D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -DUTS-MACHINE='"i386"' -c -o init/version.o init/version.c make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/kernel' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/kernel' µð·ºÅ丮 rm -f kernel.o ld -m elf-i386 -r -o kernel.o sched.o dma.o fork.o exec-domain.o panic.o printk.o module.o exit.o itimer.o info.o time.o softirq.o resource.o sysctl.o acct.o capability.o ptrace.o timer.o user.o signal.o sys.o kmod.o context.o uid16.o ksyms.o pm.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/kernel' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/kernel' µð·ºÅ丮 (4) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C drivers make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/drivers' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/drivers' µð·ºÅ丮 (5) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C mm make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/mm' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/mm' µð·ºÅ丮 rm -f mm.o ld -m elf-i386 -r -o mm.o memory.o mmap.o filemap.o mprotect.o mlock.o mremap.o vmalloc.o slab.o bootmem.o swap.o vmscan.o page-io.o page-alloc.o swap-state.o swapfile.o numa.o oom-kill.o shmem.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/mm' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/mm' µð·ºÅ丮 (6) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C fs make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/fs' µð·ºÅ丮 rm -f fs.o ld -m elf-i386 -r -o fs.o open.o read-write.o devices.o file-table.o buffer.o super.o block-dev.o char-dev.o stat.o exec.o pipe.o namei.o fcntl.o ioctl.o readdir.o select.o fifo.o locks.o dcache.o inode.o attr.o bad-inode.o file.o iobuf.o dnotify.o filesystems.o namespace.o seq-file.o noquot.o binfmt-script.o binfmt-elf.o proc/proc.o partitions/partitions.o ext2/ext2.o isofs/isofs.o nls/nls.o autofs4/autofs4.o devpts/devpts.o jfs/jfs.o make[1]: ³ª°¨ `/usr/src/linux-2.4.16/fs' µð·ºÅ丮 (7) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C net make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/net' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/net' µð·ºÅ丮 (8) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C ipc make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/ipc' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/ipc' µð·ºÅ丮 rm -f ipc.o ld -m elf-i386 -r -o ipc.o util.o msg.o sem.o shm.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/ipc' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/ipc' µð·ºÅ丮 (9) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C lib make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/lib' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/lib' µð·ºÅ丮 rm -f lib.a ar rcs lib.a errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust-spinlocks.o rbtree.o rwsem.o dec-and-lock.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/lib' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/lib' µð·ºÅ丮 (10) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C arch/i386/kernel make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/kernel' µð·ºÅ丮 rm -f kernel.o ld -m elf-i386 -r -o kernel.o process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys-i386.o pci-dma.o i386-ksyms.o i387.o bluesmoke.o dmi-scan.o pci-i386.o pci-pc.o pci-irq.o mtrr.o apm.o mpparse.o apic.o nmi.o io-apic.o acpitable.o gcc -D--ASSEMBLY-- -D--KERNEL-- -I/usr/src/linux-2.4.16/include -traditional -c head.S -o head.o gcc -D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -c -o init-task.o init-task.c make[1]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/kernel' µð·ºÅ丮 (11) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C arch/i386/mm make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/mm' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/mm' µð·ºÅ丮 rm -f mm.o ld -m elf-i386 -r -o mm.o init.o fault.o ioremap.o extable.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/mm' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/mm' µð·ºÅ丮 (12) make CFLAGS="-D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 " -C arch/i386/lib make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/lib' µð·ºÅ丮 make all-targets make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/lib' µð·ºÅ丮 rm -f lib.a ar rcs lib.a checksum.o old-checksum.o delay.o usercopy.o getuser.o memcpy.o strstr.o mmx.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/lib' µð·ºÅ丮 make[1]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/lib' µð·ºÅ丮 (13) ld -m elf-i386 -T /usr/src/linux-2.4.16/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init-task.o init/main.o init/version.o \ --start-group \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \ drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/sound/sounddrivers.o drivers/pci/driver.o drivers/pcmcia/pcmcia.o drivers/net/pcmcia/pcmcia-net.o drivers/pnp/pnp.o drivers/video/video.o drivers/md/mddev.o \ net/network.o \ /usr/src/linux-2.4.16/arch/i386/lib/lib.a /usr/src/linux-2.4.16/lib/lib.a /usr/src/linux-2.4.16/arch/i386/lib/lib.a \ --end-group \ -o vmlinux nm vmlinux | grep -v '\(compiled\)\|\(\.o$\)\|\( [aUw] \)\|\(\.\.ng$\)\|\(LASH[RL]DI\)' | sort > System.map (14) make[1]: µé¾î°¨ `/usr/src/linux-2.4.16/arch/i386/boot' µð·ºÅ丮 gcc -E -D--KERNEL-- -I/usr/src/linux-2.4.16/include -D--BIG-KERNEL-- -traditional -DSVGA-MODE=NORMAL-VGA bootsect.S -o bbootsect.s as -o bbootsect.o bbootsect.s bbootsect.s: Assembler messages: bbootsect.s:257: Warning: indirect lcall without `*' ld -m elf-i386 -Ttext 0x0 -s --oformat binary bbootsect.o -o bbootsect (15) gcc -E -D--KERNEL-- -I/usr/src/linux-2.4.16/include -D--BIG-KERNEL-- -D--ASSEMBLY-- -traditional -DSVGA-MODE=NORMAL-VGA setup.S -o bsetup.s as -o bsetup.o bsetup.s bsetup.s: Assembler messages: bsetup.s:1716: Warning: indirect lcall without `*' ld -m elf-i386 -Ttext 0x0 -s --oformat binary -e begtext -o bsetup bsetup.o (16) make[2]: µé¾î°¨ `/usr/src/linux-2.4.16/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.16/vmlinux $tmppiggy; \ gzip -f -9 < $tmppiggy > $tmppiggy.gz; \ echo "SECTIONS { .data : { input-len = .; LONG(input-data-end - input-data) input-data = .; *(.data) input-data-end = .; }}" > $tmppiggy.lnk; \ ld -m elf-i386 -r -o piggy.o -b binary $tmppiggy.gz -b elf32-i386 -T $tmppiggy.lnk; \ rm -f $tmppiggy $tmppiggy.gz $tmppiggy.lnk (17) gcc -D--ASSEMBLY-- -D--KERNEL-- -I/usr/src/linux-2.4.16/include -traditional -c head.S (18) gcc -D--KERNEL-- -I/usr/src/linux-2.4.16/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -c misc.c (19) ld -m elf-i386 -Ttext 0x100000 -e startup-32 -o bvmlinux head.o misc.o piggy.o make[2]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/boot/compressed' µð·ºÅ丮 (20) gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o tools/build tools/build.c -I/usr/src/linux-2.4.16/include (21) objcopy -O binary -R .note -R .comment -S compressed/bvmlinux compressed/bvmlinux.out (22) tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage Root device is (3, 1) Boot sector 512 bytes. Setup is 4768 bytes. System is 899 kB make[1]: ³ª°¨ `/usr/src/linux-2.4.16/arch/i386/boot' µð·ºÅ丮 |
À§¿¡ ¿°ÅÇÑ °Í°ú °°ÀÌ ½ÇÁ¦ ÄÄÆÄÀÏ¿¡¼ÀÇ ¼ø¼°¡ ¸íÈ®ÇÏ°Ô ³ª¿Ô´Ù. drivers¿Í °°Àº ´Ü°è¿¡¼± ÇÏÀ§ µð·ºÅ丮°¡ ¹«Ã´ ¸¹¾Æ ¿©·¯ µð·ºÅ丮¸¦ ÄÄÆÄÀÏÇϴµ¥ ±×·± °ÍµéÀº ¸ðµÎ »ý·«Çß´Ù.