Initrd的加载过程.ppt_第1页
Initrd的加载过程.ppt_第2页
Initrd的加载过程.ppt_第3页
Initrd的加载过程.ppt_第4页
Initrd的加载过程.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Initrd的加载过程 2 4 x 什么是Initrd典型的系统启动顺序函数调用关系与代码分析 什么是Initrd initrd的英文含义是initializedRAMdisk 就是由bootloader初始化的内存盘 在linux内核启动前 bootloader会将存储介质中的initrd文件加载到内存 内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统 优点 把更多的内核功能条目编译成模块 减小了内核大小 面对各种不同的硬件架构 可以使用initrd中的linuxrc按需进行模块加载以驱动硬件 从而提高kernel的可移植性 1 bootloader将内核和initrd根文件系统加载到内存中 2 内核初始化ramdisk空间并把initrd根文件系统解压释放到ramdisk中 同时释放原initrd使用的内存 3 initrd以读写方式被挂载 4 执行 linuxrc 此文件可以是任何可执行文件 如脚本 此时以uid0运行 可以做任何初始化工作 5 在linuxrc中挂载真正的根文件系统 6 linuxrc使用pivot root系统调用把根文件系统挂载在根目录 7 正常的启动顺序 调用 sbin init 在根文件系统上执行 8 initrd文件系统被移去 使用initrd时的系统启动顺序 grub conf示例 1 grub confgeneratedbyanaconda2 3 Notethatyoudonothavetorerungrubaftermakingchangestothisfile4 NOTICE Youhavea bootpartition Thismeansthat5 allkernelandinitrdpathsarerelativeto boot eg 6 root hd0 6 7 kernel vmlinuz versionroroot dev hda88 initrd initrd version img9 boot dev hda10default 011timeout 1012splashimage hd0 6 grub splash xpm gz13titleRedHatLinux 2 4 20 8 14root hd0 6 15kernel vmlinuz 2 4 20 8roroot LABEL vga 0 x031716initrd initrd 2 4 20 8 img17titleDOS18rootnoverify hd0 0 19chainloader 1 initrd 2 4 20 8 img中的 linuxrc init目录 内核初始化的源代码在init目录下 在这个目录下共有三个文件main cdo mounts cversion c init void unused do basic setup void prepare namespace free initmem initrd load handle initrd rd load image char from do linuxrc char shell initrd相关调用 do basic setup 对系统初始化 系统硬件此时只有cpu子系统在运转 内存管理和进程管理也开始工作了 prepare namespace void 决定根设备的挂载以及切换根文件系统 initrd load 创建ramdisk设备文件 将initrd文件系统释放到ramdisk中去 handle initrd 挂载ramdisk为根目录 执行 linuxrc脚本 init 函数分析 staticintinit void unused lock kernel do basic setup prepare namespace Ok wehavecompletedtheinitialbootup and we reessentiallyupandrunning Getridofthe initmemsegmentsandstarttheuser modestuff free initmem unlock kernel if open dev console O RDWR 0 0 printk Warning unabletoopenaninitialconsole n init 函数分析 续 void dup 0 void dup 0 Wetryeachoftheseuntilonesucceeds TheBourneshellcanbeusedinsteadofinitifweare tryingtorecoverareallybrokenmachine if execute command execve execute command argv init envp init execve sbin init argv init envp init execve etc init argv init envp init execve bin init argv init envp init execve bin sh argv init envp init panic Noinitfound Trypassinginit optiontokernel voidprepare namespace void if mount initrd if initrd load 根文件系统的挂载 staticint initinitrd load void ifdefCONFIG BLK DEV INITRDcreate dev dev ram MKDEV RAMDISK MAJOR 0 NULL create dev dev initrd MKDEV RAMDISK MAJOR INITRD MINOR NULL endifreturnrd load image de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论