Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->内核研究 ->正文

Linux 2.6 内核的 Initrd 机制解析

来源: 作者: 时间:2007-04-11 点击: [收藏] [投稿]

handle_initrd函数的主要功能是执行initrd的linuxrc文件,并且把realfs的根目录设置为当前目录。

代码[1]:real_root_dev,是一个全局变量保存的是realfs的设备号。

代码[2]:调用mount_block_root函数把initrd文件系统挂载到了VFS的/root下。

代码[3]:提取rootfs的根的文件描述符并把其保存到root_fd。它的作用就是为了在chroot到initrd的文件系统,处理完initrd之后要,还能够返回rootfs。返回的代码参考代码[7]。

代码[4]:chroot进入initrd的文件系统。前面initrd已挂载到了rootfs的/root目录。

代码[5]:执行initrd的linuxrc文件,等待其结束。

代码[6]:initrd处理完之后,重新chroot进入rootfs。

代码[7]:如果real_root_dev在 linuxrc中重新设成Root_RAM0,则initrd就是最终的realfs了,改变当前目录到initrd中,不作后续处理直接返回。

代码[8]:在linuxrc执行完后,realfs设备已经确定,调用mount_root函数把realfs挂载到root_fs的 /root目录下,并把当前目录设置为/root。

代码[9]:后面的代码主要是做一些收尾的工作,把initrd的内存盘释放。

到此代码分析完毕。

6.结束语

通过本文前半部分对cpio-initrd和imag-initrd的阐述与对比以及后半部分的代码分析,我相信读者对Linux 2.6内核的initrd技术有了一个较为全面的了解。在本文的最后,给出两点最重要的结论:

1. 尽管Linux2.6既支持cpio-initrd,也支持image-initrd,但是cpio-initrd有着更大的优势,在使用中我们应该优先考虑使用cpio格式的initrd。

2. cpio-initrd相对于image-initrd承担了更多的初始化责任,这种变化也可以看作是内核代码的用户层化的一种体现,我们在其它的诸如FUSE等项目中也看到了把内核功能扩展到用户层实现的尝试。精简内核代码,把部分功能移植到用户层必然是linux内核发展的一个趋势。



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4下一页


上一篇:Linux之父:内核发展已经完全超越了我   下一篇:Linux内核源代码的阅读及相关工具介绍

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·使用 Linux 系统调用的内核命令
·Linux 和对称多处理
·Relay:一种高效的数据传输技术
·使用 SystemTap 调试内核
·配置FreeBSD内核
·在FreeBSD4.x中制作启动菜单
·制作软盘上运行的FreeBSD系统
·FreeBSD光盘运行版的制作过程
·制作RAMDISK in KERNEL的NetBSD
·制作RAMDISK in KERNEL的OpenBSD
推荐文章
·开源空间:自己做个迷你型linux内核
·Linux系统2.4和2.6内核上Web服务比
·开发团队:Linux内核中的bug越来越
·busybox 制作tiny linux
·何把内核中的信息打印到文件的方法
·深入浅出分析Linux系统内核漏洞的问
·Linux内核入侵检测安全增强实现(下
·怎么样把内核中的信息打印到文件
精彩文章
·Linux系统可卸载内核模块完全指南(
·Linux操作系统自如的装卸内核模块
·Linux之父:内核发展已经完全超越了
·一个Linux爱好者的2.6.11内核编译过
·Linux操作系统内核分析方法
·Linux基础知识:内核编译-编译方法
·Linux系统内核中的Device Mapper机
·Novell推出Linux2.6内核OS源操作系
·快速编译Linux内核所需模块新方法
·把驱动及应用软件移植到Linux2.6内
·让你的Linux内核重编译之路走得更通
·Linux内核对I/O端口的管理实现(下)
·FreeBSD光盘运行版的制作过程
·向Alan Cox——Linux内核的维护者致
·Linux内核重编译常见故障及其解决方
·关于Linux操作系统的NTFS和内核分析
·使用范例:用户态和内核共享内存
·解析Linux内核获取当前进程指针的方
·Linux可加载内核模块:入侵响应分析
·关于Linux操作系统的内核重入的分析
·重新编译Linux内核必要性及其准备工
·用tags/cscope看内核源代码-HOWTO
·Linux中用GDB与QEMU来调试内核分析
·2.6.x版Linux内核发现安全漏洞
·剖析Linux 2.6内核移植—超线程篇
·Linux内核按需动态装载和卸掉模块
Power by linux-cn.com 粤ICP备05006655号