虽然一直对linux抱有企图,但直到前几天才开始实际动手。首先是自己编译linux内核。
编译在ubuntu 10.04下进行,系统使用的版本是linux-2.6.32-28,自己编译的是linux-2.6.32。
现在linux编译配置变得比较傻瓜化,默认会把许多不必要的模块编译进来,也基本可以满足启动需要。
但在实际编译过程中还是遇到了一些问题,以下分点列出,以供参考。
1、编译进去的文件系统。因为现在ubuntu安装都会使用最新的ext4文件系统,自己编译时也要注意将其编译进去。
2、编译进去的硬盘驱动。本来个人的pc或笔记本都是SATA接口(这主要是由于intel芯片组的选择),但linux会通过libata把SATA接口抽象成SCSI接口。所以编译时最好把SATA和SCSI的都加上去。其中SATA中有一个AHCI的驱动选项,这个是Intel HM55/3400系列芯片组中需要的驱动,没有的话无法访问硬盘。ubuntu原本内核的做法是将其编译成模块,放到initrd.img中。如果要把AHCI编译成模块,就要使用initrd,不过也很方便,直接用mkinitrd 命令就可以了,只是这样生成的initrd.img会很大,grub2加载起来有明显的延迟。最方便的还是直接把AHCI编译进内核。
3、NVIDIA驱动。其实只要注意前面的问题,我编译的内核就已经可以正常启动ubuntu了。只是电脑使用的是NVIDIA的显卡,还没有开源模块,需要使用NVIDIA官方提供的驱动nvidia-current。但nvidia-current使用了dkms工具管理的。而dkms对驱动在不同linux内核版本下的兼容问题是否注意,所以我原有的nvidia-current.ko在linux-2.6.32中加载不了。解决方法很简单,在新内核下再编译安装一次nvidia-current。先是dkm build,再是dkms install,就可以在两个内核下都使用nvidia显卡了。
本文详细记录了在Ubuntu 10.04环境下编译Linux内核2.6.32的过程,包括注意事项如选择编译ext4文件系统、确保SATA与SCSI驱动的包含,特别是AHCI驱动对于Intel HM55/3400芯片组的重要性。同时,文章还提及了NVIDIA驱动的安装问题,需要使用dkms在新内核下重新编译以适配。
272

被折叠的 条评论
为什么被折叠?



