LinuxSir.cn,穿越时空的Linuxsir!

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

求助:内核问题

[复制链接]
发表于 2006-2-18 23:10:48 | 显示全部楼层 |阅读模式
按照book上讲的,弄一个内核出来只有bzImage一个关键的文件,而其它的发行版还有一个initrd文件,这个文件是怎么编译出来的?
发表于 2006-2-18 23:31:47 | 显示全部楼层
一般情况下是不需要的。如果你需要的话,那么你就知道他是干嘛的了。
回复 支持 反对

使用道具 举报

发表于 2006-2-18 23:38:51 | 显示全部楼层
initrd是ramdisk
分2步在开机GRUB以后启动内核 第一步非模块化 第二步载入模块
就知道这些。。
谁有initrd的文档。。我找很久了。。。livecd卡在这个的制作上。。参考gentoo未果
回复 支持 反对

使用道具 举报

发表于 2006-2-18 23:50:53 | 显示全部楼层
http://www.linuxsir.cn/bbs/showthread.php?t=162466

可以参考一下,至少给你一个起步。
回复 支持 反对

使用道具 举报

发表于 2006-2-18 23:55:23 | 显示全部楼层
Post by 终极幻想
http://www.linuxsir.cn/bbs/showthread.php?t=162466

可以参考一下,至少给你一个起步。

谢谢。。这文章我看过了 就是做到initrd这里。。里面写明了initrd是一个极小的系统根 可以执行十分有限的命令。通过ldd查询 bash等相关。来查找并挂载CD根
个人更喜欢isolinux来制作 因为前面的keymap 和帮助 都可以自己用message来做 还能生成不同的引导办法
他使用的是gentoo的initrd.img 过于庞大 我想裁减一下 自己做映射= = 当然直接拿来也不错- -
所以十分想了解ramdisk在启动时候的详细作用。orz
回复 支持 反对

使用道具 举报

发表于 2006-2-19 00:12:51 | 显示全部楼层
你说出错,具体出错信息是什么?贴出来看看?

我看了一下 isolinux,也测试了一下,挺好的。

你的 initrd 问题应该和 isolinux 无关,是你的 initrd 问题。isolinux 只管启动的,又不管 initrd 的运行。:)。

至于 initrd 如何运行,我觉得和我提到的那篇文章中应该差不多的。都是一个作用,承上启下。SUSE 9.3 的启动盘中,initrd 解开有15M之大。呵呵。你的呢?:)
回复 支持 反对

使用道具 举报

发表于 2006-2-19 09:49:44 | 显示全部楼层
Post by 终极幻想
你说出错,具体出错信息是什么?贴出来看看?

我看了一下 isolinux,也测试了一下,挺好的。

你的 initrd 问题应该和 isolinux 无关,是你的 initrd 问题。isolinux 只管启动的,又不管 initrd 的运行。:)。

至于 initrd 如何运行,我觉得和我提到的那篇文章中应该差不多的。都是一个作用,承上启下。SUSE 9.3 的启动盘中,initrd 解开有15M之大。呵呵。你的呢?:)

偶知道和grub和isolinux无关。。顺便提一下isolinux比grub的优势= = 呵呵
现在的计划是做一个万用的rescue cd就像redhat那个但是redhat那个做得很多不支持 不是很完善 和国外那个rescue站点的CD有点区别(想法上)
要做得更简单易用 就这么个想法
我当时直接使用lfs的initrd的。。最后回来给我说 无法找到lfs系统。。我想肯定需要修改initrd里面的linuxrc脚本 但是解开了挂不上。。gentoo的再看。。。里面的脚本超常。。可是理论上不需要这么长。。我就想改。。。现在到这步。。其实我不想直接拿来用。。想自己写。。所以要了解格式和理论。。。就卡这边
回复 支持 反对

使用道具 举报

发表于 2006-2-19 11:48:32 | 显示全部楼层
计划很不错。
不管用谁的initrd,找到根系统应该是没问题的吧。我自己是从来没有用过,如果兄弟能把已经作好的给我一个例子(不能启动的也可以),那我就看看。我只是不想从头开始而已。

要了解格式和理论,我认为上边的那个帖子里边说的内容就已经足够了。

还是要看你到底是哪里出错了,相信也就是一个小问题。
回复 支持 反对

使用道具 举报

发表于 2006-2-20 17:29:02 | 显示全部楼层
现在不能随便用别人的 initrd ,这关系到 devfs 和 udev 的问题.

lfs 的 /dev 都是 动态加载的 tmpfs ,initrd里至少要
mount -t dev /dev /dev
startudev
才能生成 /dev/hdaX ,这是必须的设备, / 分区.

我用过 mdv 和 redhat 的, /dev 的情况不同,一般是半动态的, 在udev加载前,/dev 里已经有了几个关键设备.
还有的加载dev用的是 hotplug.
这样,都不能用于 lfs.
回复 支持 反对

使用道具 举报

发表于 2006-2-20 18:08:18 | 显示全部楼层
具体到细节的话:

你也可以自己加载几个关键设备,LFS 第六章不是也是这么做的么?

lfs 的 dev 启动后是动态加载,但是默认还是有2个文件在里边的,就是 console 和 null。你自己重新 mount 一下根目录就可以看到了。

先说说你的需求,为什么 udev 不能满足你的要求?LFS 系统本身也是启动后才加载udev的。initrd只是中间多了一个环节。
回复 支持 反对

使用道具 举报

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

本版积分规则

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