????????????????е???????£?
????$(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
????$(vmlinux-dirs): prepare scripts
????$(Q)$(MAKE) $(build)=$@
????????????????vmlinux-dir ?????????????prepare ?? scripts??????? prepare ??????????? makefile ?У?????????????????Σ?
????prepare: prepare0
????prepare0: archprepare FORCE
????$(Q)$(MAKE) $(build)=.
????archprepare: archheaders archscripts prepare1 scripts_basic
????prepare1: prepare2 $(version_h) include/generated/utsrelease.h /
????include/config/auto.conf
????$(cmd_crmodverdir)
????prepare2: prepare3 outputmakefile asm-generic
????????? prepare0 ????? archprepare ????????????? archheader ?? archscripts?????????????????? x86_64 ???? Makefile???????????????????x86_64 ????? makefile ????????忪?????Щ???????????????????????? (defconfig?????)?й??????????????? 16-bit ????????????????????? BITS ?????????? 32?? ???????????????????????????????????嶼??????arch/x86/Makefile??????????????? i386???? 64 ??????? x86_84??
?????????????? makefile ????????????б??syscall table???е? archheaders ??
????archheaders:
????$(Q)$(MAKE) $(build)=arch/x86/entry/syscalls all
?????????????? makefile ??? archscripts??
????archscripts: scripts_basic
????$(Q)$(MAKE) $(build)=arch/x86/tools relocs
?????????????? archscripts ????????? Makefile???scripts_basic ???????????????? scripts_basic ????? scripts/basic ?? makefile ??? make ???
????scripts_basic:
????$(Q)$(MAKE) $(build)=scripts/basic
????scripts/basic/Makefile ????????????????????? fixdep ?? bin2 ?????
????hostprogs-y := fixdep
????hostprogs-$(CONFIG_BUILD_BIN2C)     += bin2c
????always      := $(hostprogs-y)
????$(addprefix $(obj)/??$(filter-out fixdep??$(always))): $(obj)/fixdep
??????????????? fixdep????????? gcc ??????????б??????????±???????????????make????????????? bin2c???????????????????? CONFIG_BUILD_BIN2C?????????????????????????????LCTT ??????? stdin???????????????????????????????stdout??????? C ????????С?? C ??????????????????Щ?????????? hostprogs-y ????????????????е? kbuild ???????????????????documentation ??á??????????? hostprogs-y ???? kbuild ?????и???? fixed ?????????????????? Makefile ??????? fixdep.c ?????????
??????? make ???????????????? kbuild ??????
????$ make
????HOSTCC  scripts/basic/fixdep
????????? script_basic ????У???? archscripts ?? make arch/x86/tools ?μ? makefile ????? relocs:
????$(Q)$(MAKE) $(build)=arch/x86/tools relocs
?????????????λ ?????????? relocs_32.c ?? relocs_64.c ???????????????make ??????п?????
????HOSTCC  arch/x86/tools/relocs_32.o
????HOSTCC  arch/x86/tools/relocs_64.o
????HOSTCC  arch/x86/tools/relocs_common.o
????HOSTLD  arch/x86/tools/relocs
??????????? relocs.c ?????? version.h:
????$(version_h): $(srctree)/Makefile FORCE
????$(call filechk??version.h)
????$(Q)rm -f $(old_version_h)
????????????????????????
????CHK     include/config/kernel.release
?????????????? Makefiel ??? arch/x86/include/generated/asm ????? asm-generic ?????? generic ?????????????? asm-generic ???archprepare ????????????? prepare0 ????????У???????????д??
????prepare0: archprepare FORCE
????$(Q)$(MAKE) $(build)=.
??????? build?????????????? scripts/Kbuild.include???????????????
????build := -f $(srctree)/scripts/Makefile.build obj
????????????????????У????????????·????.??
????$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.build obj=.
??????? scripts/Makefile.build ??????? obj ??????????? Kbuild ???????????? kbuild ?????
????include $(kbuild-file)
???????????????????????????? . ?????????? kernel/bounds.s ?? arch/x86/kernel/asm-offsets.s ?? Kbuild ?????????????? prepare ?????????????? vmlinux-dirs ?????????????? scripts ???????????????????????filealias??mk_elfconfig??modpost ???????scripts/host-programs ?????????????????? vmlinux-dirs ???
??????????????????????? vmlinux-dirs ??????????Щ??????????????????????????????????????·????
????init usr arch/x86 kernel mm fs ipc security crypto block
????drivers sound firmware arch/x86/pci arch/x86/power
????arch/x86/video net lib arch/x86/lib
?????????????????? Makefile ????? vmlinux-dirs ????壺
????vmlinux-dirs    := $(patsubst %/??%??$(filter %/?? $(init-y) $(init-m) /
????$(core-y) $(core-m) $(drivers-y) $(drivers-m) /
????$(net-y) $(net-m) $(libs-y) $(libs-m)))
????init-y      := init/
????drivers-y   := drivers/ sound/ firmware/
????net-y       := net/
????libs-y      := lib/
????...
????...
????...
??????????????????? patsubst ?? filter??????????·???????? /???????????? vmlinux-dirs ?????????????? vmlinux-dirs ??????б?????????????
????$(vmlinux-dirs): prepare scripts
????$(Q)$(MAKE) $(build)=$@
???????? $@ ??????????? vmlinux-dirs??????????????????? vmlinux-dirs ??????????????????????????????????????????????? make ????????????????????????
????CC      init/main.o
????CHK     include/generated/compile.h
????CC      init/version.o
????CC      init/do_mounts.o
????...
????CC      arch/x86/crypto/glue_helper.o
????AS      arch/x86/crypto/aes-x86_64-asm_64.o
????CC      arch/x86/crypto/aes_glue.o
????...
????AS      arch/x86/entry/entry_64.o
????AS      arch/x86/entry/thunk_64.o
????CC      arch/x86/entry/syscall_64.o
??????????μ??????????????????? built-io.o ??
????$ find . -name built-in.o
????./arch/x86/crypto/built-in.o
????./arch/x86/crypto/sha-mb/built-in.o
????./arch/x86/net/built-in.o
????./init/built-in.o
????./usr/built-in.o
????...
????...
????????????е? built-in.o ???????????????????????? vmlinux ???????????????? vmlinux ?????????makefile ???????? vmlinux ?????????? samples?? Documentation ????????????????????????????????????Щ??
????vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
????...
????...
????+$(call if_changed??link-vmlinux)
?????????????????y?? scripts/link-vmlinux.sh ??????????????е? built-in.o ??????????????????????????? System.map?? ??????????????????????
????LINK    vmlinux
????LD      vmlinux.o
????MODPOST vmlinux.o
????GEN     .version
????CHK     include/generated/compile.h
????UPD     include/generated/compile.h
????CC      init/version.o
????LD      init/built-in.o
????KSYM    .tmp_kallsyms1.o
????KSYM    .tmp_kallsyms2.o
????LD      vmlinux
????SORTEX  vmlinux
????SYSMAP  System.map
????vmlinux ??System.map ?????????????????????
????$ ls vmlinux System.map
????System.map  vmlinux
??????????????vmlinux ??????????????????? bzImage.
????????bzImage
????bzImage ???????? linux ???????????????????? vmlinux ????????? make bzImage ???bzImage????????????????? make ???????κβ???????????? bzImage ??????????? arch/x86/kernel/Makefile ????????????????????
????all: bzImage
?????????????????????????????????????????????????????????????? bzImage ????????? arch/x86/kernel/Makefile?????????£?
????bzImage: vmlinux
????$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
????$(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot
????$(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@
?????????????????????????? boot ????? make????????????????????????
????boot := arch/x86/boot
?????????????????????? arch/x86/boot ?? arch/x86/boot/compressed ????????? setup.bin ?? vmlinux.bin??????????????????? bzImage????????????????? arch/x86/boot/Makefile ?? $(obj)/setup.elf:
????$(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
????$(call if_changed??ld)
??????????????? arch/x86/boot ?????????? setup.ld????????? boot ???????????????? SETUP_OBJS ??????????????????????
????AS      arch/x86/boot/bioscall.o
????CC      arch/x86/boot/cmdline.o
????AS      arch/x86/boot/copy.o
????HOSTCC  arch/x86/boot/mkcpustr
????CPUSTR  arch/x86/boot/cpustr.h
????CC      arch/x86/boot/cpu.o
????CC      arch/x86/boot/cpuflags.o
????CC      arch/x86/boot/cpucheck.o
????CC      arch/x86/boot/early_serial_console.o
????CC      arch/x86/boot/edd.o
????????????????? arch/x86/boot/header.S?????????????????????????????????????????????????????
????$(obj)/header.o: $(obj)/voffset.h $(obj)/zoffset.h
????????????? voffset.h ????? sed ??????????????? nm ????? vmlinux ??????????????
????#define VO__end 0xffffffff82ab0000
????#define VO__text 0xffffffff81000000
????????????????????????????????????????? zoffset.h ?? arch/x86/boot/compressed/Makefile ?????????????????? vmlinux???
????$(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE
????$(call if_changed??zoffset)
??????? $(obj)/compressed/vmlinux ?????? vmlinux-objs-y —— ???????????? arch/x86/boot/compressed ?μ????????????? vmlinux.bin??vmlinux.bin.bz2????????? mkpiggy???????????????????????????
????LDS     arch/x86/boot/compressed/vmlinux.lds
????AS      arch/x86/boot/compressed/head_64.o
????CC      arch/x86/boot/compressed/misc.o
????CC      arch/x86/boot/compressed/string.o
????CC      arch/x86/boot/compressed/cmdline.o
????OBJCOPY arch/x86/boot/compressed/vmlinux.bin
????BZIP2   arch/x86/boot/compressed/vmlinux.bin.bz2
????HOSTCC  arch/x86/boot/compressed/mkpiggy
????vmlinux.bin ??????????????????? vmlinux ?????????????????????? u32 ??LCTT ???????4-Byte???????????? vmlinux.bin.all ??????? vmlinux.bin.bz2?????? vmlinux.bin.all ?????? vmlinux.bin ??vmlinux.relocs??LCTT ?????vmlinux ?????λ??????????? vmlinux.relocs ?? vmlinux ???????? relocs ???????? vmlinux ??????????????????????????????????????Щ??????????? piggy.S ???? mkpiggy ???ɡ???????
????MKPIGGY arch/x86/boot/compressed/piggy.S
????AS      arch/x86/boot/compressed/piggy.o
?????????????????????????????????????????????????????????????????????????? zoffset ???????
????ZOFFSET arch/x86/boot/zoffset.h
???????? zoffset.h ?? voffset.h ??????????arch/x86/boot ??????????????????
????AS      arch/x86/boot/header.o
????CC      arch/x86/boot/main.o
????CC      arch/x86/boot/mca.o
????CC      arch/x86/boot/memory.o
????CC      arch/x86/boot/pm.o
????AS      arch/x86/boot/pmjump.o
????CC      arch/x86/boot/printf.o
????CC      arch/x86/boot/regs.o
????CC      arch/x86/boot/string.o
????CC      arch/x86/boot/tty.o
????CC      arch/x86/boot/video.o
????CC      arch/x86/boot/video-mode.o
????CC      arch/x86/boot/video-vga.o
????CC      arch/x86/boot/video-vesa.o
????CC      arch/x86/boot/video-bios.o
???????е??????????????????????? setup.elf ??
????LD      arch/x86/boot/setup.elf
?????????
????ld -m elf_x86_64   -T arch/x86/boot/setup.ld arch/x86/boot/a20.o arch/x86/boot/bioscall.o arch/x86/boot/cmdline.o arch/x86/boot/copy.o arch/x86/boot/cpu.o arch/x86/boot/cpuflags.o arch/x86/boot/cpucheck.o arch/x86/boot/early_serial_console.o arch/x86/boot/edd.o arch/x86/boot/header.o arch/x86/boot/main.o arch/x86/boot/mca.o arch/x86/boot/memory.o arch/x86/boot/pm.o arch/x86/boot/pmjump.o arch/x86/boot/printf.o arch/x86/boot/regs.o arch/x86/boot/string.o arch/x86/boot/tty.o arch/x86/boot/video.o arch/x86/boot/video-mode.o arch/x86/boot/version.o arch/x86/boot/video-vga.o arch/x86/boot/video-vesa.o arch/x86/boot/video-bios.o -o arch/x86/boot/setup.elf
???????????????????????? arch/x86/boot/* ?μ??????????? setup.bin??
????objcopy  -O binary arch/x86/boot/setup.elf arch/x86/boot/setup.bin
????????? vmlinux ???? vmlinux.bin :
????objcopy  -O binary -R .note -R .comment -S arch/x86/boot/compressed/vmlinux arch/x86/boot/vmlinux.bin
????????????????????? arch/x86/boot/tools/build.c?????????????? setup.bin ?? vmlinux.bin ????? bzImage:
????arch/x86/boot/tools/build arch/x86/boot/setup.bin arch/x86/boot/vmlinux.bin arch/x86/boot/zoffset.h arch/x86/boot/bzImage
????????? bzImage ??? setup.bin ?? vmlinux.bin ?????????????????????????????Щ???????????????е????????
????Setup is 16268 bytes (padded to 16384 bytes).
????System is 4704 kB
????CRC 94a88f9a
????Kernel: arch/x86/boot/bzImage is ready  (#5)
?????????????
????????
?????????????β???????????????????????????????裺????? make ??????????????? bzImage?????????linux ???? makefile ????? linux ????????????????????????????????????????????????????????? linux ?????????????