2.4. bzImage°¡ ¸¸µé¾îÁö´Â °úÁ¤ ÃßÀû-Log ºÐ¼®

2.4.1. make bzImage ¼ø¼­ Á¤¸®

make bzimage¸¦ ½ÇÇà ÇßÀ» ¶§ ½ÇÇàµÇ´Â ¼ø¼­¸¦ MakefileÀ» ±âÁØÀ¸·Î ³ª¿­ÇØ ºÃ´Ù.

  1. $(TOPDIR)/Makefile¿¡ Æ÷ÇÔµÈ $(TOPDIR)/arch/i386/Makefile¿¡ ÀÖ´Â 'bzimage:'·ÎºÎÅÍ ½ÃÀÛ

  2. ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ vmlinux°¡ ¸ÕÀú ¸¸µé¾îÁü

    À̶§ vmlinux°¡ ¸¸µé¾îÁö¸é $(TOPDIR)/arch/i386/boot·Î À̵¿ÇØ °è¼Ó ÁøÇà

  3. vmlinuxÀÇ ÁøÇà

    ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ version.h $(CONFIGURATION) init/main.o init/version.o linuxsubdirs°¡ ¸ÕÀú ¸¸µé¾îÁü

  4. ÀÇÁ¸ °ü°è¿¡ ÀÇÇÑ ¸¸µé±â°¡ ³¡³ª¸é $(TOPDIR)/vmlinux°¡ ¸¸µé¾îÁü

  5. ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ $(CONFIGURE) bbootsect bsetup compressed/bvmlinux tools/build°¡ ¸¸µé¾îÁø´Ù

  6. compressed/bvmlinuxÀÇ ÁøÇà

    ÀÇÁ¸ °ü°è¿¡ ÀÇÇØ piggy.o $(OBJECTS)°¡ ¸ÕÀú ¸¸µé¾îÁü

  7. piggy.o´Â $(TOPDIR)/vmlinux¸¦ ¾ÐÃàÇØ ¸¸µç´Ù.

¼ø¼­´ë·Î ³ª¿­ÇßÁö¸¸ MakefileÀÇ Æ¯¼º»ó Çϳª¸¦ ¸¸µé±â Àü¿¡ ÀÌ¹Ì ´Ù¸¥ °ÍÀÌ ¸ÕÀú ¸¸µé¾îÁ®¾ßÇÏ´Â µîÀÇ ÀÇÁ¸ °ü°è°¡ Àֱ⠶§¹®¿¡ ¼ø¼­°¡ µÚÁýÈù °Íó·³ º¸ÀÏ °ÍÀÌ´Ù. À̸¦ ¹Ù·Î Àâ¾Æ ¸ÕÀú ¸¸µé¾îÁö´Â ¼øÀ¸·Î ³ª¿­Çغ¸¸é ¾Æ·¡¿Í °°´Ù.

  1. vmlinux

    1. include/linux/version.h

    2. init/main.o

    3. init/version.o

    4. linuxsubidrs(fs lib mm ipc kernel drivers net)

  2. bzimage

    1. bbootsect

    2. bsetup

    3. compressed/bvmlinux

      1. piggy.o

      2. head.o

      3. misc.o

    4. tools/build

2.4.2. Log

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' µð·ºÅ丮
			
(1)
main.o
(2)
version.o
(3)
kernel
(4)
drivers
(5)
mm
(6)
fs
(7)
net
(8)
ipc
(9)
lib
(10)
arch/i386/kernel
(11)
arch/i386/mm
(12)
arch/i386/lib
(13)
vmlinux
(14)
bbootsect
(15)
bsetup
(16)
arch/i386/boot/compressed/piggy.o
(17)
arch/i386/boot/compressed/head.o
(18)
arch/i386/boot/compressed/misc.o
(19)
arch/i386/boot/compressed/bvmlinux
(20)
build
(21)
bvmlinux.out
(22)
bzImage

À§¿¡ ¿­°ÅÇÑ °Í°ú °°ÀÌ ½ÇÁ¦ ÄÄÆÄÀÏ¿¡¼­ÀÇ ¼ø¼­°¡ ¸íÈ®ÇÏ°Ô ³ª¿Ô´Ù. drivers¿Í °°Àº ´Ü°è¿¡¼± ÇÏÀ§ µð·ºÅ丮°¡ ¹«Ã´ ¸¹¾Æ ¿©·¯ µð·ºÅ丮¸¦ ÄÄÆÄÀÏÇϴµ¥ ±×·± °ÍµéÀº ¸ðµÎ »ý·«Çß´Ù.