Initrd的加载过程.ppt

上传人:wuy****n92 文档编号:70792872 上传时间:2023-01-28 格式:PPT 页数:15 大小:280.99KB
返回 下载 相关 举报
Initrd的加载过程.ppt_第1页
第1页 / 共15页
Initrd的加载过程.ppt_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《Initrd的加载过程.ppt》由会员分享,可在线阅读,更多相关《Initrd的加载过程.ppt(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Initrd的加载过程(2.4.x)什么是什么是 Initrd典型的系统启动顺序典型的系统启动顺序函数调用关系与代码分析函数调用关系与代码分析什么是什么是 Initrd initrd 的英文含义是的英文含义是 initialized RAM disk,就是由,就是由 bootloader 初始化的内存初始化的内存盘。在盘。在 linux内核启动前,内核启动前,bootloader 会会将存储介质中的将存储介质中的 initrd 文件加载到内存,文件加载到内存,内核启动时会在访问真正的根文件系统前内核启动时会在访问真正的根文件系统前先访问该内存中的先访问该内存中的 initrd 文件系统。文件系

2、统。优点l把更多的内核功能条目编译成模块,减小了把更多的内核功能条目编译成模块,减小了内核大小;内核大小;l面对各种不同的硬件架构,可以使用面对各种不同的硬件架构,可以使用initrd中的中的linuxrc按需进行模块加载以驱动硬件,按需进行模块加载以驱动硬件,从而提高从而提高kernel的可移植性。的可移植性。1.bootloader1.bootloader将内核和将内核和将内核和将内核和initrdinitrd根文件系统加载到内存中;根文件系统加载到内存中;根文件系统加载到内存中;根文件系统加载到内存中;2.2.内核初始化内核初始化内核初始化内核初始化 ram disk ram disk

3、空间并把空间并把空间并把空间并把initrdinitrd根文件系统解压释放到根文件系统解压释放到根文件系统解压释放到根文件系统解压释放到 ram ram disk disk 中,同时释放原中,同时释放原中,同时释放原中,同时释放原initrdinitrd使用的内存;使用的内存;使用的内存;使用的内存;3.initrd3.initrd以读写方式被挂载;以读写方式被挂载;以读写方式被挂载;以读写方式被挂载;4.4.执行执行执行执行/linuxrc/linuxrc(此文件可以是任何可执行文件,如脚本。此时以(此文件可以是任何可执行文件,如脚本。此时以(此文件可以是任何可执行文件,如脚本。此时以(此文

4、件可以是任何可执行文件,如脚本。此时以uid 0uid 0运行运行运行运行,可以做任何初始化工作);可以做任何初始化工作);可以做任何初始化工作);可以做任何初始化工作);5.5.在在在在linuxrclinuxrc中挂载真正的根文件系统;中挂载真正的根文件系统;中挂载真正的根文件系统;中挂载真正的根文件系统;6.linuxrc6.linuxrc使用使用使用使用pivot_rootpivot_root系统调用把根文件系统挂载在根目录;系统调用把根文件系统挂载在根目录;系统调用把根文件系统挂载在根目录;系统调用把根文件系统挂载在根目录;7.7.正常的启动顺序(调用正常的启动顺序(调用正常的启动顺

5、序(调用正常的启动顺序(调用/sbin/init/sbin/init)在根文件系统上执行;)在根文件系统上执行;)在根文件系统上执行;)在根文件系统上执行;8.initrd8.initrd文件系统被移去。文件系统被移去。文件系统被移去。文件系统被移去。使用initrd时的系统启动顺序grub.conf示例 1#grub.conf generated by anaconda 1#grub.conf generated by anaconda 2#2#3#Note that you do not have to rerun grub after making changes to this fil

6、e 3#Note that you do not have to rerun grub after making changes to this file 4#NOTICE:You have a/boot partition.This means that 4#NOTICE:You have a/boot partition.This means that 5#all kernel and initrd paths are relative to/boot/,eg.5#all kernel and initrd paths are relative to/boot/,eg.6#root(hd0

7、,6)6#root(hd0,6)7#kernel/vmlinuz-version ro root=/dev/hda8 7#kernel/vmlinuz-version ro root=/dev/hda8 8#initrd/initrd-version.img 8#initrd/initrd-version.img 9#boot=/dev/hda 9#boot=/dev/hda 10 default=0 10 default=0 11 timeout=10 11 timeout=10 13 title Red Hat Linux(2.4.20-8)13 title Red Hat Linux(2

8、.4.20-8)14 root(hd0,6)14 root(hd0,6)15 kernel/vmlinuz-2.4.20-8 ro root=LABEL=/vga=0 x0317 15 kernel/vmlinuz-2.4.20-8 ro root=LABEL=/vga=0 x0317 17 title DOS 17 title DOS 18 rootnoverify(hd0,0)18 rootnoverify(hd0,0)19 chainloader+1 19 chainloader+1initrd-2.4.20-8.img中的/linuxrcinit目录内核初始化的源代码在 init目录下

9、,在这个目录下共有三个文件main.cdo_mounts.cversion.cinit(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_nam

10、espace(void):决定根设备的决定根设备的挂载以及切换根文件系统挂载以及切换根文件系统;initrd_load():创建创建 ramdisk 设备文件,设备文件,将将initrd文件系统释放到文件系统释放到 ramdisk 中去;中去;handle_initrd():挂载挂载 ramdisk 为根目录,为根目录,执行执行/linuxrc 脚本;脚本;init()函数分析static int init(void*unused)static int init(void*unused)lock_kernel();lock_kernel();do_basic_setup();do_basic_

11、setup();prepare_namespace();prepare_namespace();/*/*Ok,we have completed the initial bootup,and *Ok,we have completed the initial bootup,and *were essentially up and running.Get rid of the *were essentially up and running.Get rid of the *initmem segments and start the user-mode stuff.*initmem segments and start the user-mode stuff.*/*/free_initmem();free_initmem();unlock_kernel();unlock_kernel();if(open(/dev/console,O_RDWR,0)0)if(open(/dev/console,O_RDWR,0)0)if(pid 0)while(pid!=wait(&i)while(pid!=wait(&i)yield();yield();.执行初始化脚本

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com