hhuyf 发表于 2004-12-27 22:33:05

如何做到不用initrd启动系统

现在才真让我晕了,到底如何做到不用initrd启动系统,
我发现有的内核不用initrd能够加载“/”分区,但是有的非要initrd才行,这到底是怎么实现的呢?编译内核的时候做了什么设置造成的(不是因为根分区文件格式的模块要加载),比如说CDlinux的内核吧,ext2的驱动是有的,解开死活不能挂载硬盘根分区,他是怎么做到的呢????

此外我换了一个支持fb的内核,不用initrd可以加载根分区,但是启动进去后不能进X,说少/dev/fb0,可是那个设备文件的确存在,而且内核也支持fb,就是提示没有fb0怎么办啊

内核能不能直接加载根分区到底是在什么地方做了什么设置?
这个问题好象没看见人说过

牛人们。该你牛的时候来了
:evil::evil:

hew 发表于 2004-12-27 22:53:16

这个问题该去内核版问,问水区要先恳求大家别BT.

btw :这个东西我也一知半解,那位具体讲一下?

atfa 发表于 2004-12-27 22:58:08

还真没有认真对待过这个问题

我要思考一下

其实心里面有答案

但是要核实以后才能说

hhuyf 发表于 2004-12-27 23:06:38

听hew哥哥的话,恳请各位不要BT(偶也不知道怎么BT)
知道的请不吝赐教


特别是楼上的,知道麻烦第一时间来解释一下

这个问题好象没人注意过,那么多教程编译内核心后好象理所当然地就把系统引导了

卖火柴的小男孩 发表于 2004-12-27 23:17:50

这个问题我也遇见过,反正你别动就对了,你要是敢删的话:



我可以负责人的告诉你,系统会生气,后果很严重!!! :mrgreen:

sunmoon1997 发表于 2004-12-27 23:24:35

sed -i "s,^\(.*=\)m,\1y,g" .config
然后就可以 make love && make baby
:mrgreen::mrgreen::mrgreen::mrgreen:
ps: 请注意安全,不要中招了

kde2000 发表于 2004-12-27 23:29:45

Re: 这个问题真是太复杂了,牛人们都别跑啊,进来牛一把

现在才真让我晕了,到底如何做到不用initrd启动系统,
我发现有的内核不用initrd能够加载“/”分区,但是有的非要initrd才行,这到底是怎么实现的呢?编译内核的时候做了什么设置造成的(不是因为根分区文件格式的模块要加载),比如说CDlinux的内核吧,ext2的驱动是有的,解开死活不能挂载硬盘根分区,他是怎么做到的呢????

此外我换了一个支持fb的内核,不用initrd可以加载根分区,但是启动进去后不能进X,说少/dev/fb0,可是那个设备文件的确存在,而且内核也支持fb,就是提示没有fb0怎么办啊

内核能不能直接加载根分区到底是在什么地方做了什么设置?
这个问题好象没看见人说过

牛人们。该你牛的时候来了
:evil::evil:

这是因为有的内核编译的时候没有把某些分区的驱动程序(也叫模块)包含进去,所以必须制作一个包含模块的initrd,在启动的时候事先加载,从而实现挂载某些文件系统(如reiserfs,xfs,ext3,jfs)

initrd文件可由mkinitrd命令来制作,详细用法,在命令行下
man mkinitrd

制作完后,修改启动管理器,lilo(或grub)的配置文件,然后运行lilo使之生效。

(2)你有没有在启动选项加上vga=xxx参数使fb生效?

sunmoon1997 发表于 2004-12-27 23:47:08

Re: 这个问题真是太复杂了,牛人们都别跑啊,进来牛一把

现在才真让我晕了,到底如何做到不用initrd启动系统,
我发现有的内核不用initrd能够加载“/”分区,但是有的非要initrd才行,这到底是怎么实现的呢?编译内核的时候做了什么设置造成的(不是因为根分区文件格式的模块要加载),比如说CDlinux的内核吧,ext2的驱动是有的,解开死活不能挂载硬盘根分区,他是怎么做到的呢????

此外我换了一个支持fb的内核,不用initrd可以加载根分区,但是启动进去后不能进X,说少/dev/fb0,可是那个设备文件的确存在,而且内核也支持fb,就是提示没有fb0怎么办啊

内核能不能直接加载根分区到底是在什么地方做了什么设置?
这个问题好象没看见人说过

牛人们。该你牛的时候来了
:evil::evil:

这是因为有的内核编译的时候没有把某些分区的驱动程序(也叫模块)包含进去,所以必须制作一个包含模块的initrd,在启动的时候事先加载,从而实现挂载某些文件系统(如reiserfs,xfs,ext3,jfs)

initrd文件可由mkinitrd命令来制作,详细用法,在命令行下
man mkinitrd

制作完后,修改启动管理器,lilo(或grub)的配置文件,然后运行lilo使之生效。

(2)你有没有在启动选项加上vga=xxx参数使fb生效?
破坏规矩打 PP. 8)8)

kde2000 发表于 2004-12-27 23:52:27

也许公社将来的发展方向是 茶话会 的讨论方式 :lol:

hhuyf 发表于 2004-12-28 00:22:14

楼上的,我感觉不是因为文件系统驱动的问题
不信你自己去看看 CDlinux里面,没有什么模块啊
内核是肯定支持ext2的,就是搞不懂原因

第二个问题已经解决,正如你说的,谢谢

kde2000 发表于 2004-12-28 01:15:09

反正这个主题肯定要砍,我就说了吧。

你的硬盘分区不是ext2,你启动后没有modprobe相应的模块。

模块在/lib/modules/2.4.25-cd1/里面。

hhuyf 发表于 2004-12-28 13:34:33

楼上的那我告诉你啊
我的分区就是ext2的

但是就不认
那几个包我都搞开了,没什么模块啊

hhuyf 发表于 2004-12-28 13:46:58

仔细重找了一遍,果然有一些模块

偶自己来做个总结吧

整个问题的原因可能是:CDlinux用了一个奇怪的格式来编制initrd也就是CDlinux.gz,而其他的格式都要进去才挂上,但是没办法看出是什么格式,但是问题还是有的

就是CDlinux的initrd也包括了整个文件系统,但是并不跟其他的initrd一样,里面缺少根目录下的那个linuxrc脚本,奇怪啊

不过我总算把他移植到硬盘上了,谢谢各位啊

蓝宁 发表于 2004-12-28 13:58:00

hhuyf, 帮你的贴子改个标题,然后移到内核版。 :P

kakuyou 发表于 2004-12-28 14:10:04

1 查看你的根分区文件系统类型,编译内核时选成编入内核就行。

2 可能你的Xserver是使用framebuffer设备的(普通的x org和 xfree86是不用的),我的个人经验就是必须在启动时在内核后加入参数激活fb设备,否则用普通的字符模式启动后fb0是一个不能用的设备。
页: [1] 2
查看完整版本: 如何做到不用initrd启动系统