如何做到不用initrd启动系统
现在才真让我晕了,到底如何做到不用initrd启动系统,我发现有的内核不用initrd能够加载“/”分区,但是有的非要initrd才行,这到底是怎么实现的呢?编译内核的时候做了什么设置造成的(不是因为根分区文件格式的模块要加载),比如说CDlinux的内核吧,ext2的驱动是有的,解开死活不能挂载硬盘根分区,他是怎么做到的呢????
此外我换了一个支持fb的内核,不用initrd可以加载根分区,但是启动进去后不能进X,说少/dev/fb0,可是那个设备文件的确存在,而且内核也支持fb,就是提示没有fb0怎么办啊
内核能不能直接加载根分区到底是在什么地方做了什么设置?
这个问题好象没看见人说过
牛人们。该你牛的时候来了
:evil::evil: 这个问题该去内核版问,问水区要先恳求大家别BT.
btw :这个东西我也一知半解,那位具体讲一下? 还真没有认真对待过这个问题
我要思考一下
其实心里面有答案
但是要核实以后才能说 听hew哥哥的话,恳请各位不要BT(偶也不知道怎么BT)
知道的请不吝赐教
特别是楼上的,知道麻烦第一时间来解释一下
这个问题好象没人注意过,那么多教程编译内核心后好象理所当然地就把系统引导了 这个问题我也遇见过,反正你别动就对了,你要是敢删的话:
我可以负责人的告诉你,系统会生气,后果很严重!!! :mrgreen: sed -i "s,^\(.*=\)m,\1y,g" .config
然后就可以 make love && make baby
:mrgreen::mrgreen::mrgreen::mrgreen:
ps: 请注意安全,不要中招了
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生效?
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) 也许公社将来的发展方向是 茶话会 的讨论方式 :lol: 楼上的,我感觉不是因为文件系统驱动的问题
不信你自己去看看 CDlinux里面,没有什么模块啊
内核是肯定支持ext2的,就是搞不懂原因
第二个问题已经解决,正如你说的,谢谢 反正这个主题肯定要砍,我就说了吧。
你的硬盘分区不是ext2,你启动后没有modprobe相应的模块。
模块在/lib/modules/2.4.25-cd1/里面。 楼上的那我告诉你啊
我的分区就是ext2的
但是就不认
那几个包我都搞开了,没什么模块啊 仔细重找了一遍,果然有一些模块
偶自己来做个总结吧
整个问题的原因可能是:CDlinux用了一个奇怪的格式来编制initrd也就是CDlinux.gz,而其他的格式都要进去才挂上,但是没办法看出是什么格式,但是问题还是有的
就是CDlinux的initrd也包括了整个文件系统,但是并不跟其他的initrd一样,里面缺少根目录下的那个linuxrc脚本,奇怪啊
不过我总算把他移植到硬盘上了,谢谢各位啊 hhuyf, 帮你的贴子改个标题,然后移到内核版。 :P 1 查看你的根分区文件系统类型,编译内核时选成编入内核就行。
2 可能你的Xserver是使用framebuffer设备的(普通的x org和 xfree86是不用的),我的个人经验就是必须在启动时在内核后加入参数激活fb设备,否则用普通的字符模式启动后fb0是一个不能用的设备。
页:
[1]
2