Linux操作系统分析.pdf
《Linux操作系统分析.pdf》由会员分享,可在线阅读,更多相关《Linux操作系统分析.pdf(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.基于x86的Linux启动代码分析小结和作业.Linux操作系统分析2 基于x86的Linux启动代码分析陈香兰()计算机应用教研室计算机学院嵌入式系统实验室苏州研究院中国科学技术大学Fall 2010陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.Outline.1基于x86的Linux启动代码分析.2小结和作业陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.源代码来源内核版本:2.6.26ftp:/ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.gz解压缩后,成功编
2、译一次建立Source Insight工程Windows+Source InsightWine+Source Insight安装wine:sudo apt-get install wine在wine中安装SourceInsight:wine XXX.exe陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.基于x86的Linux启动代码分析了解linux的源码组织看目录结构了解linux的内核代码结构看Makefile了解基于x86的linux的boot image的结构看Makefile文件和链接描述文件掌握x86的启动流程阅读启动源码文件陈香兰()Linux操作
3、系统分析.基于x86的Linux启动代码分析小结和作业.Linux-2.6.26阅读linux目录下的README关于Linux的介绍(WHAT IS LINUX?)该版本内核支持的体系结构(ON WHAT HARDWAREDOES IT RUN?)Linux源代码目录中的文档目录(DOCUMENTATION)如何配置、编译、安装INSTALLING the kernelBUILD directory for the kernelCONFIGURING the kernelCOMPILING the kernel等等陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业
4、.Linux内核源代码中的主要子目录 IDocumentation 内核方面的相关文档。arch 与体系结构相关的代码。对应于每个支持的体系结构,有一个相应的目录如x86、arm、alpha等。每个体系结构子目录下包含几个主要的子目录:kernel 与体系结构相关的核心代码mm 与体系结构相关的内存管理代码lib 与体系结构相关的库代码include 内核头文件。对每种支持的体系结构有相应的子目录,如asm-x86、asm-arm、asm-alpha等。符号链接asm,如“asm-asm-x86”。实际上,“#include asm/xxxx.h”?陈香兰()Linux操作系统分析.基于x86
5、的Linux启动代码分析小结和作业.Linux内核源代码中的主要子目录 IIinit 内核初始化代码。提供main.c,包含start kernel函数。kernel 内核管理代码。mm 内存管理代码。ipc 进程间通讯代码。net 网络部分代码。lib 与体系结构无关的内核库代码。drivers 设备驱动代码。每类设备有相应的子目录,如char、block、net等fs 文件系统代码。每个支持文件系统有相应的子目录,如ext2、proc等。modules 可动态加载的模块。Scripts 配置核心的脚本文件。等等陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.
6、考虑Arch为i386 考察如下目录观察Linux源码的根目录观察arch目录观察arch下的x86目录arch/x86/bootarch/x86/boot/compressedarch/x86/kernel观察Linux的init目录陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.阅读documentation/i386/boot.txt I由于一些历史的原因,基于x86的Linux的启动比较复杂这个文档(THE LINUX/I386 BOOT PROTOCOL)包含如下内容.1Linux/i386的启动协议(若干个).2内存布局图(MEMORY LAYOUT
7、).3实模式下的内核头结构及细节(THE REAL-MODE KERNEL HEADER).4内核的命令行(THE KERNEL COMMAND LINE).5MEMORY LAYOUT OF THE REAL-MODE CODE.6启动配置示例(SAMPLE BOOT CONFIGURATION).7装载Linux的剩余部分(LOADING THE REST OF THE KERNEL)陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.阅读documentation/i386/boot.txt II.8特殊的命令行参数(SPECIAL COMMAND LINE
8、OPTIONS).9运行内核(RUNNING THE KERNEL).10高级启动回调函数(ADVANCED BOOT LOADER HOOKS).1132-bit BOOT PROTOCOL陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.阅读Linux源码根目录下的Makefile找到缺省目标all找到vmlinux目标,并阅读陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.解释:关于$(call if changed rule,vmlinux)rule vmlinux陈香兰()Linux操作系统分析.基于x86的Linux启动
9、代码分析小结和作业链接描述文件?链接顺序:vmlinux-initvmlinux-main陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.参见“Documentation/kbuild/makefiles.txt”陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业注意:vmlinux-initvmlinux-mainvmlinux-dirs陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.主要目标文件的编译.vmlinux不妨以core-y为例,观察体系相关和体系无关部分的代码是如何被包含进来的陈香兰()
10、Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.x86的启动文件.根据vmlinux-init找到head-y,init-y关于arch/x86/Makefile的引入根Makefile中以include的方式包含了X86体系结构相关部分的Makefile在这个Makefile中其中,变量BITS为32或者64,我们只考虑32位的情况在根Makefile中可以看到vmlinux包含如下内容i386/kernel/head 32.S等+init/main.c+init/version.o+CORE FILES+DRIVERS+NETWORKS+LIBS陈香兰()Linux操
11、作系统分析.基于x86的Linux启动代码分析小结和作业.为便于阅读,了解关于命令输出的相关内容.陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.make XXX若make install在x86的Makefile中有install规则若make bzImage/zImage等,则要找到对应的目标然后进行bzImage/zImage可在arch/x86的Makefile中找到相应规则其他的zXXX/bzXXX也都依赖于boot下的zImage/bzImage它们最终都找到i386/boot/Makefile陈香兰()Linux操作系统分析.基于x86的Linux
12、启动代码分析小结和作业.考虑boot bzImage IMake bzImage 在arch/X86/Makefile中z代表压缩;b代表大内核到boot目录下的Makefile观察boot目录和boot下的Makefile观察compressed目录及该目录下的Makefile陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.考虑boot bzImage II.最后:.在Linux内核源代码顶层目录下生成一个vmlinuxarch/x86/kernel/head 32.S+init/main.c+compressed下的vmlinux为compressed/he
13、ad 32.S+压缩后的顶层目录下的vmlinux boot下的bzImage为boot下header.S等(即setup.bin)+compressed/vmlinux陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.x86的启动(小结)boot/header.S等compressed/head 32.S等kernel/head 32.S等init/main.c陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.I386机器的启动层次.1BIOS(Basic I/O System).2Bootloader软盘启动硬盘启动嵌套boot
14、loader例如:grub、lilo、.3Linux kernel.Bootloader必须完成内核代码的加载,然后跳转到入口处运行.陈香兰()Linux操作系统分析.基于x86的Linux启动代码分析小结和作业.BIOS I加电,RESET引脚.CPU加电后,将会初始化程序指针到某个约定好的地址上取指令运行,在这个地指处,往往安排了启动相关的代码,例如BIOS或者reset向量处理入口.初始化寄存器;CS:IP=0 xfffffff0,in ROMROM?BIOSBIOS启动内容POST(上电自检)初始化硬件设备搜索一个操作系统来启动根据配置,操作系统可以在软盘/硬盘/CD ROM上把对应设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 分析
限制150内