成功的编译内核2.6.21.5

昨天和姜维聊了聊,对于编译内核了解又多了一点点,然后决定再try一次。过程如下:
  1. make mrproper
    清除以前的编译记录
  2. make gconfig
    超级繁琐的内核配置,第一次搞的时候用的menuconfig,这次用gconfig,易用性又好了一些,不过gconfig需要安装glade-gnome,而libglade2-dev我也装了,不过不知道是否必须。配置的时候可以保存或者读取配置,我想在编译不同版本的内核的时候,配置文件应该有一定的通用性吧,不然每次都选那么多东西,挺麻烦的。
  3. make
    20多分钟的漫长等待,可怜的笔记本阿,好烫,我一直在给他扇风,下次配个电扇给它。
    由于是第一次编译,我以为到这里就结束了,然后我自己把./system.map和./arch/i386/boot/bzImage复制到了/boot/,然后在/boot/grub/menu.lst中加入相应的启动项,不过有些疑惑,initrd后面写什么?我看了看bzImage所在的目录,没发现有什么img文件阿,抱着一丝侥幸的心里,我重启了。结果是很显然的,不行,出错提示忘了,反正只能强行关机。
    (出错了之后,就开始瞎琢磨,大致知道做了些什么,但是顺序忘了,不知道成功的用上新的内核是否于这些命令的执行顺序有关,我现在只能按照我的理解,把自己认为正确的一种顺序写出来)
  4. sudo make modules_install install
    再make之后应该执行这一步,会自动把内核文件和system.map复制到/boot/目录。如果此刻重启,会提示找不到/lib/modules/2.6.21.5/modules.dep,原因应该就是没有正确的initrd.img
  5. sudo mkinitramfs -o /boot/initrd.img-2.6.21.5 2.6.21.5
    生成对应于2.6.21.5内核版本的initrd.img,再这一步之前我做过"sudo depmod -a",depmod就是用于生成modules.dep的,但是我执行的时候没有加版本号,所以我估计这个命令并不是必须的,我猜在modules_install的时候,modules.dep应该已经生成了。
    在menu.lst里面指定好正确的initrd.img,重启,ok

自己编译的内核是1.2MB,原来的2.6.20.16的是1.7MB,小了一些。成功了一次,就让我有了继续尝试的动力,下次把config的东西再仔细选选。编译的时候driver是最耗时间的,而且driver里面的选项也超级多,高手们应该都知道自己机器需要什么不需要什么,而我为了保证编译出来的能用,就没有做太多的改动,更多的配置,有待于进一步的尝试。


Powered by ScribeFire.

Comments