打印

如何做到不用initrd启动系统

如何做到不用initrd启动系统

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

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

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

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

TOP

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

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

TOP

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

我要思考一下

其实心里面有答案

但是要核实以后才能说
http://8bao.info

如果你更热爱金钱而非自由,更习惯于被奴役的安宁而
畏惧令人充满活力的争取自由的抗争,那么,请你静静
地走开。我们不会乞求你的建议或是帮助。伏下身去讨
好那喂养你的人吧。但愿身上的锁链不会给你造成太多
的痛苦,但愿未来的人们不会记起你曾经是我们的国人

TOP

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


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

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

TOP

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



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

TOP

sed -i "s,^\(.*=\)m,\1y,g" .config
然后就可以 make love && make baby
      
ps: 请注意安全,不要中招了
偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]

TOP

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

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

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

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

牛人们。该你牛的时候来了
  [/quote]

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

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

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

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

TOP

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

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

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

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

牛人们。该你牛的时候来了
  [/quote]

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

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

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

(2)你有没有在启动选项加上vga=xxx参数使fb生效?[/quote]
破坏规矩打 PP.   
偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]

TOP

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

TOP

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

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

TOP

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

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

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

TOP

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

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

TOP

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

偶自己来做个总结吧

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

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

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

TOP

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

TOP

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

2 可能你的Xserver是使用framebuffer设备的(普通的x org和 xfree86是不用的),我的个人经验就是必须在启动时在内核后加入参数激活fb设备,否则用普通的字符模式启动后fb0是一个不能用的设备。

TOP