- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LinuxKernelImage生成过程
我详细解析了bootsect.s,同时阅读了setup.s。其中bootsect.s存放于
磁盘的主引导扇区,bios-startup程序加载该程序(bootsect.s)到内存 0x700
处,并由此执行bootsect.s来引导Linux kernel。在bootsect.s中加载setup.s
至内存中,并在执行完它自身后,jump跳至刚刚已读入的setup部份,继续执
行。
Linux Kernel Image 生成过程:
一. 引导扇区汇编代码bootsect.s被预处理成bbootsect.s或bootsect.s
(无论有无D_BIG_KERNEL),当然这取决于编译目标是bzImage还是bImage。
bbootsect.s被汇编,然后被转化成合法的二进制文件,通过调用bbootsect.s。
(或者是bootsect.s被汇编,然后被转化成合法的二进制文件,通过调用
bootsect.s。)
二. 启动代码setup.s(include video.s)被预处理成bsetup.s(就bzImage
而言),或者是setup.s(就zImage而言)。和bootsect.s一样,不同的是bzImage
使用-D_BIG_KERNEL来标志。结果同样也将被转化成合法的二进制文件,通过调
用bsetup.s或setup.s。
三. 进入子目录 arch/i386/boot/compressed 把/usr/src/linux/vmlinux
转变成$tmppiggy.gz(临时文件名,合法的二进制格式)。删除.note 和.comment
文件,在这个目录arch/ARM/boot/ compressed下的Makefile文件中TEXTADDR
(0xC0008000)表示内核起始运行的地址,在这个arch/ARM/boot/目录下
arch/i386/boot/下的Makefile中ZRELADDR(0是将内核解压到目
标板上的地址,
四. gzip -9 $tmppiggy $tmppiggy.gz。(gunzip()在main.c中被实现。
用于解压缩部份Linux内核,负责解压缩Linux内核的函数还有
decompressed())
五. 联接(Link)$temppiggy.gz ,使其成为 ELF relocate(ld -r)文件
piggy.0。
六. 编译压缩程序 head.s 和 misc.c(仍然存在于子目录
arch/i386/boot/compressed中。)成ELF的目标文件head.o和misc.o。
七. 联接 (Link)所有的目标文件head.o、misc.o、piggy.o成bvmlinux(或
者vmlinux,就zImage而言,注意:不要错误地把它认为是
/usr/src/linux/vmlinux !)。一定要注意到这两者之间的不同:-Ttext
0x1000(调用的是经过压缩的内核镜像vmlinux),-Ttext 0x100000(调用的是未
经过压缩的大内核镜像bvmlinux,还有bzImage compression loader 将被
high-loaded,调到内存高地址处)。
八.最后返回 arch/i386/boot 子目录,bvmlinux转化成合法的二进制文
件 bvmlinux.out ,删除 .note 和.comment部份。
九. 最后返回 arch/i386/boot 子目录,使用编程工具把
bbootsect+bsetup+compressed/bvmlinux.out 编译成bzImage。(也可以使编
译成zImage)。
总结:
1.在/usr/src/linux/这个目录的Makefile文件中先把
『include arch/$(ARCH)/Makefile
vmlinux: include/linux/version.h init/main.o init/version.o
kernel drivers mm fs net ipc lib
$(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \
--start-group \
您可能关注的文档
- isg200200(I)A立式管道离心泵性能参数及价格.pdf
- ISOFLEXTOPASNB152合成润滑脂.doc
- IT7300交流电源在LED行业测试应用.pdf
- IGBT导热硅脂涂敷工艺研究.pdf
- IVCV测试差异说明.doc
- IXUS870IS说明书.pdf
- JAPANLFP10AH水系粘结剂对磷酸铁锂电池的影响.pdf
- Java数组操作的10大方法.docx
- Java数组元素.pdf
- Java有好用的JavaDoc文档生成工具.pdf
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)