设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
计算机认证考试学习与经验交流
›
/initrd目录的作用和当删除时出现的错误
1
2
/ 2 页
下一页
返回列表
查看:
5364
|
回复:
10
/initrd目录的作用和当删除时出现的错误
[复制链接]
liweioop
liweioop
当前离线
积分
213
IP卡
狗仔卡
发表于 2004-12-16 22:23:13
|
显示全部楼层
|
阅读模式
自己的机器安装的redhat linux 9(以下为rh9)好多次了,每次出了故障搞不定时就是-----重装
其中有一个排错,是自己多次摸索出来的,希望对大家有用!
在安装好rh9后,查看根目录有一个 /initrd,很多的linux书上没有提到为个目录!它是一个非标准目录,查看了一个,里面是空的!于时出于清洁系统的目的
rm -rf /initrd
结果在下次重启时,发现系统不能启动!
内核load之后,提示无法mount 根目录,找不到init
自己以前有过编译内核的经验,好几次也是编译内核无法工作,因为配置的原因而无法mount根目录!
这次出现同样的问题肯定不会是内核问题,因为我用是rh9自带的内核!
好几天没有搞定这个问题,只好重装!
初学者往往是这样,以前为了运行级别3和5,我也重装过几次……
重装后
mv /initrd ~/
重启后出了问题!当然问题可能出在/initrd这个目录上了!
用急救盘启动,将原来的/initrd目录还原!
重启ok,l正常 !
结论:/initrd这个目录是空目录,但是内核在启动时会用到它!如果册除它,将无法启动!!!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
hwtazl
hwtazl
当前离线
积分
58
IP卡
狗仔卡
发表于 2004-12-16 22:34:39
|
显示全部楼层
系统在启动前的内核是压缩的(和ramdisk有关),启动时需要解压缩,这个目录是解压缩时的临时目录,当启动完后又将该目录清空。所以不能删除
回复
支持
反对
使用道具
举报
显身卡
kissingwolf
kissingwolf
当前离线
积分
1311
IP卡
狗仔卡
发表于 2004-12-17 09:24:37
|
显示全部楼层
如果你man initrd就不会有这样的疑问!
回复
支持
反对
使用道具
举报
显身卡
rjyang
rjyang
当前离线
积分
68
IP卡
狗仔卡
发表于 2004-12-17 10:14:08
|
显示全部楼层
这样的好贴应该——顶!!!
好贴!很有帮助啊!两位大侠的回复也很精!谢谢!!!
回复
支持
反对
使用道具
举报
显身卡
liweioop
liweioop
当前离线
积分
213
IP卡
狗仔卡
楼主
|
发表于 2004-12-17 13:11:26
|
显示全部楼层
多谢!
man得太好的结果
回复
支持
反对
使用道具
举报
显身卡
northwindrocker
northwindrocker
当前离线
积分
78
IP卡
狗仔卡
发表于 2004-12-21 11:12:55
|
显示全部楼层
哈哈!!!支持!!
回复
支持
反对
使用道具
举报
显身卡
sourai
sourai
当前离线
积分
98
IP卡
狗仔卡
发表于 2004-12-21 12:50:01
|
显示全部楼层
如果考试的时候,不小心出现这个故障,在恢复,会有问题么
回复
支持
反对
使用道具
举报
显身卡
shhgs
shhgs
当前离线
积分
18
IP卡
狗仔卡
发表于 2006-5-22 20:37:38
|
显示全部楼层
initrd这个目录非常重要,是内核挂载硬盘的rootfs之前文件系统的挂载点。这个initrd的man,以及rh的reference guide都提到过。
回复
支持
反对
使用道具
举报
显身卡
jhuangjiahua
jhuangjiahua
当前离线
积分
9502
IP卡
狗仔卡
发表于 2006-5-24 11:35:04
|
显示全部楼层
这原贴有些老了,麻烦不要再顶起来
有些老了
linux 2.6 的 cpio-initrd 跟早期 linux 的 image-initrd 不太一样了
linux2.6 内核的 initrd 的文件格式由原来的 image-initrd 文件系统镜像文件转变成了 cpio 格式( cpio-initrd ),变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。
先看
Linux2.4内核对 Initrd 的处理流程
Linux2.4内核的initrd的格式是文件系统镜像文件,称为image-initrd
linux2.4内核对initrd的处理流程如下:
1. boot loader把内核以及/dev/initrd的内容加载到内存,/dev/initrd是由boot loader初始化的设备,存储着initrd。
2. 在内核初始化过程中,内核把 /dev/initrd 设备的内容解压缩并拷贝到 /dev/ram0 设备上。
3. 内核以可读写的方式把 /dev/ram0 设备挂载为原始的根文件系统。
4. 如果 /dev/ram0 被指定为真正的根文件系统,那么内核跳至最后一步正常启动。
5. 执行 initrd 上的 /linuxrc 文件,linuxrc 通常是一个脚本文件,负责加载内核访问根文件系统必须的驱动, 以及加载根文件系统。
6. /linuxrc 执行完毕,真正的根文件系统被挂载。
7. 如果真正的根文件系统存在 /initrd 目录,那么 /dev/ram0 将从 / 移动到 /initrd。否则如果 /initrd 目录不存在, /dev/ram0 将被卸载。
8. 在真正的根文件系统上进行正常启动过程 ,执行 /sbin/init。 linux2.4 内核的 initrd 的执行是作为内核启动的一个中间阶段,也就是说 initrd 的 /linuxrc 执行以后,内核会继续执行初始化代码,
再看
Linux2.6 内核对 Initrd 的处理流程
cpio-initrd 的处理流程
1. boot loader 把内核以及 initrd 文件加载到内存的特定位置。
2. 内核判断initrd的文件格式,如果是cpio格式。
3. 将initrd的内容释放到rootfs中。
4. 执行initrd中的/init文件,执行到这一点,内核的工作全部结束,完全交给/init文件处理。
Linux 2.6 的 cpio-initrd 相对以前的,最主要的变化是
1. cpio-initrd并没有使用额外的ramdisk,而是将其内容输入到rootfs中,其实rootfs本身也是一个基于内存的文件系统。这样就省掉了ramdisk的挂载、卸载等步骤。
2. cpio-initrd启动完/init进程,内核的任务就结束了,剩下的工作完全交给/init处理;而对于image-initrd,内核在执行完/linuxrc进程后,还要进行一些收尾工作,并且要负责执行真正的根文件系统的/sbin/init。
回复
支持
反对
使用道具
举报
显身卡
oldniu
oldniu
当前离线
积分
8
IP卡
狗仔卡
发表于 2006-5-28 09:34:05
|
显示全部楼层
谢谢斑竹的授业解惑。我在RHEL4的根目录中的确做过删除/initrd的操作,发现对启动没有影响,正在困惑。
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表