Gentoo编译内核


启动Gentoo发现x server无法启动,察看了一下log,是nvidia驱动没有安装,记得升级的时候,已经安装过了,不知道为什么出现这么个问题.

那就重新安装nvidia-drivers

#emerge nvidia-drivers

出现错误,找不到.config文件,察看了一下,内核2.6.37的/usr/src/linux-2.6.37-gentoo-r4里面已经没有内核源码了,察看一下gentoo最新的稳定内核是39了,就接着

#emerge gentoo-sources

先安装内核39吧,为了省事儿,采用genkernel编译,eselect过后,wk,无法编译啊,出现

ERROR: Could not find source tarball: /var/cache/genkernel/src/busybox-1.7.4.tar.bz2!

于是换用手动编译内核,编译完成后,kernel panic, 没有搞懂gentoo的加载内核的方式是怎么实现的,

genkernel是需要initrd的,但是手动编译的不需要,kernel panic的原因应该就在于此,应该是内核启动起来过后,没有相应的驱动(模块)来识别硬盘导致的.

还是暂时换用genkernel吧,

#etc-update

更新配置文件,这下genkernel正常了,接着安装nvidia的驱动,可以起来了.

这个问题有时间好好研究一下.

********************************************************************************

原来在编译的时候,选择了Initial  RAM filesystem and RAM disk support ,在这里(删掉了)

这个选上了,内核在启动过程中,会挂载这个小型的文件系统(主要成分为busybox),加载完磁盘驱动和其他驱动过后,开始挂载磁盘分区到根文件系统,系统就起来了.

而自己手动编译的时候,没有生成initrd,所以运行到这里就出错了.

有两种解决方案:

1.不使用initrd,把磁盘等驱动编译到内核里,并且不要编译Initial  RAM filesystem and RAM disk support

2.使用initrd,可以手动生成initrd,也可以使用genkernl来生成initrd.

相关内容