+ -
当前位置:首页 → 问答吧 → 在Gentoo下面编译安装2.6内核,老出问题

在Gentoo下面编译安装2.6内核,老出问题

时间:2007-08-13

来源:互联网

这几天编译2.6内核,因为想学一下模块编程,如果在当前内核的源文件下面做模块开发的话会相对顺利一些(针对2.6,不知道是不是这样?)。可是老出问题

环境是vm+gentoo (2.6),待编译的是2.6.17-14,虚拟机的硬盘是scsi形式的

开始把scsi等设别驱动和文件系统都编成模块,选择initrd ram支持,make并安装模块后,更改grub的配置文件。仿照的是gentoo的格式:
root (hd0,0)
kernel /* root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi
initrd /initramfs
我只是把kernel后面的内核文件更换成我的文件,启动后报告说找不到root。提示输入root或者shell。我试了好几个都不行,只好输入shell,启动一个shell,好像是什么busybox(是不是ramdisk里面的shell?),进去一看里面有个基本的文件系统,虽然命令比较少,在/dev下面确实没有sda,只有一些tty等什么一大堆。

后来我又更改了gentoo原来的启动项,把里面sda3换成了hda5,提示找不到root后我输入shell,也进入了busybox,在里面的/dev下面发现了sda3等好多常见的设备(在我的内核启动时,这些都没有的)

问题是:1)为什么同一个initramfs,dev下面的东西却不同?是内核根据检测到的情况(内核配置,硬件等)自动生成的吗?为什么我的里面没有sda3呢?
2)kernel后面一串参数都是什么意思?
3)gentoo的init fs 是什么格式的,不能解压:gunzip init ,提示说suffix不对。如何在gentoo下面制作initrd呢?


最后我把所有的东西都直接编译进内核,没有模块,按照下面的方式:
root (hd0,0)
kernel /vmliuz root=/dev/sda3
也照样报错:找不到root in block(0,0)
可能的原因是什么?
盼高手指点一下,困扰好久了

作者: unisun1981   发布时间: 2007-08-13

贴lspci
贴相关内核配置

内核参数看
/usr/src/linux/Documentation/kernel-parameters.txt
initramfs看
/usr/src/linux/Documentation/filesystems/ramfs-rootfs-initramfs.txt

作者: zhllg   发布时间: 2007-08-13

我的内核终于搞好了,现在内核的配置文件要是能分桌面版、服务器版、小型机版就好了。一路看下来很费时间哦,虽然内核文档的说明也挺详细的。

作者: sheep204   发布时间: 2007-08-14

很多小架构的机器都有def_config
比如ps3
直接拿来make,根本不用配置
pc的可能性实在是太多了

pc也可以make defconfig
不过还是要改一些东西,看我的这篇文章
http://zh.gentoo-wiki.com/HOWTO_Compile_Kernel

作者: zhllg   发布时间: 2007-08-14