未加星标

被忽视的另一个vmlinux

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

在x86平台,编译完内核后用find命令搜vmlinux,你可以看到有两个同名的文件。

./vmlinux
./arch/x86/boot/compressed/vmlinux

当我第一次见到的时候,也是有点吃惊的。要不是这么多年在江湖行走,也不会这么淡定。

谁会用到他

其实之前我们就见到过了,不过当时并没有仔细去研究。

"arch/x86/boot/Makefile"
$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
$(call if_changed,image)
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)

恩,这个就是制作bzImage的第二个部分。

他怎么来的 "arch/x86/boot/compressed/Makefile"
$(obj)/vmlinux: $(vmlinux-objs-y) FORCE
$(call if_changed,ld)
@:

简单明了,就是一堆obj链接而成。

都包含了谁 "arch/x86/boot/compressed/Makefile"
vmlinux-objs-y := $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o \
$(obj)/string.o $(obj)/cmdline.o \
$(obj)/piggy.o $(obj)/cpuflags.o
vmlinux-objs-$(CONFIG_EARLY_PRINTK) += $(obj)/early_serial_console.o
vmlinux-objs-$(CONFIG_RANDOMIZE_BASE) += $(obj)/aslr.o
$(obj)/eboot.o: KBUILD_CFLAGS += -fshort-wchar -mno-red-zone
vmlinux-objs-$(CONFIG_EFI_STUB) += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o \
$(objtree)/drivers/firmware/efi/libstub/lib.a
vmlinux-objs-$(CONFIG_EFI_MIXED) += $(obj)/efi_thunk_$(BITS).o

恩,这个问题解决了,不过别的困惑又来了。

bzImage中包含的是这个vmlinux,那根目录的vmlinux呢?启动的时候是怎么把根目录的vmlinux加载到内存的? 又是怎么跳转到根目录的vmlinux的呢?

本文地址 : http://www.codesec.net/Linux/2016-10/135906.htm

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: LinuxUB其实
分页:12
转载请注明
本文标题:被忽视的另一个vmlinux
本站链接:http://www.codesec.net/view/481313.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(26)