LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1398|回复: 5

请教LFS为什么不使用initrd?

[复制链接]
发表于 2010-2-23 11:36:12 | 显示全部楼层 |阅读模式
initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。

Initrd 的用途主要有以下四种:

1. linux 发行版的必备部件

linux 发行版必须适应各种不同的硬件架构,将所有的驱动编译进内核是不现实的,initrd 技术是解决该问题的关键技术。Linux 发行版在内核中只编译了基本的硬件驱动,在安装过程中通过检测系统硬件,生成包含安装系统硬件驱动的 initrd,无非是一种即可行又灵活的解决方案。

2. livecd 的必备部件

同 linux 发行版相比,livecd 可能会面对更加复杂的硬件环境,所以也必须使用 initrd。

3. 制作 Linux usb 启动盘必须使用 initrd

usb 设备是启动比较慢的设备,从驱动加载到设备真正可用大概需要几秒钟时间。如果将 usb 驱动编译进内核,内核通常不能成功访问 usb 设备中的文件系统。因为在内核访问 usb 设备时, usb 设备通常没有初始化完毕。所以常规的做法是,在 initrd 中加载 usb 驱动,然后休眠几秒中,等待 usb设备初始化完毕后再挂载 usb 设备中的文件系统。

4. 在 linuxrc 脚本中可以很方便地启用个性化 bootsplash。


        以上是initrd的定义,在REDHAT中会经常的有一个initrd.img文件。关于这个文件的使用我有一些疑问:
       1.LFS 为什么没有使用initrd.img此文件?
       2.此文件在制作的时候,是否可以再任何目录下?因为一般都是设置好内核以后在去做initrd文件。


                                            谢谢!
发表于 2010-2-23 11:41:49 | 显示全部楼层
可以使用,不过LFS的系统都是为本地机器打造的,相应的驱动都可以包含在内核中,因此没有initrd的情况下也是可以正常使用的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-23 11:45:24 | 显示全部楼层
但是如果在本机制作了initrd文件,移动到其它不同计算机也是不能用。
回复 支持 反对

使用道具 举报

发表于 2010-2-23 20:57:38 | 显示全部楼层
用不用是您自己事情。
LFS 官网有相关 hint 指导使用 initrd。
不满意,您还可以自己动手做。

专机专用,或兼容机通用,也是您自己事情。
可以配置专用内核,也可以配置通用内核。
可以针对特定 CPU 优化,也可以针对某一类 CPU 优化。
回复 支持 反对

使用道具 举报

发表于 2012-3-15 18:19:40 | 显示全部楼层
恩, 又学到了一点知识。
回复 支持 反对

使用道具 举报

发表于 2012-3-17 09:25:22 | 显示全部楼层
我觉得在制作万能启动U盘,且以lfs为基础的linux时,可以考虑用initrd~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表