红联Linux门户
Linux帮助

ubuntu下编译内核简单步骤

发布时间:2012-03-20 10:31:19来源:Linux社区作者:linux使用者

  学习linux的时候如果要添加自己的系统调用,你不得不重新编译内核,哪怕是出于兴趣,也要有编译内核的经历。有句哲理是这样的:做一件事不难,难就难在你迈出了这一步,呵呵,有点假了。


  嗯,不多废话了,经过朋友的指点,首先掌握一个简单的,清晰的编译过程多初次体验者来说至关重要。所以先


  记录下这个简单的第一次。


  第一步:得有源码(废话么,编译程序没源码行吗?)在哪下载呢?www.kernel.org 自己找一个源码包,记得是点后面的F(完全版)下载。我的源码包是:linux-2.6.33.1.tar.bz2


  在终端下拷贝源码到/usr/src/下:#cp linux-2.6.33.1.tar.bz2 /usr/src/


  这里得是超级用户权限。然后在/usr/src/目录下解压源码包:#tar -jxvf linux-2.6.33.1.tar.bz2


  第二步:配置相关文件,这里有三种方法 1,#make config 2,#make menuconfig 3,#make xconfig


  我们使用的全是默认的配置。所以直接使用第二种方法,进入以后直接推出就可以了,以后再研究原因吧,暂时先这样使用。


  第三步:编译内核:(前面的两个步骤可以省略,一个#make dep 一个#make clean),这里直接#make就行了,然后静静的等待吧,一般的机子一两个小时就编译完成了。编译完成后就是安装内核了。


  第四步:安装内核,#make modules(编译模块)和#make modules_install


  再生成内核镜像文件,我的命令是:makinitramfs -o /boot/initrd-2.6.33.1.img 2.6.33.1


  然后安装即可 #make install


  第五步:设置启动项的配置在ubuntu9.04以及之前的发行版上也就使使用grub2.0之前的启动配置都是在/boot/grub/menu.lst进行修改,后再来的版本上是在/boot/grub/grub.cfg里面修改,不过要改动的地方很类似


  这里就不赘述了,只是记录下#gedit /boot/grub/grub.cfg


  先看我的示例:


  这个是我之前的,所以只要复制一下这个,然后在这里面进行修改


  menuentry "Ubuntu, Linux 2.6.31-21-generic" {

  recordfail=1

  if [ -n ${have_grubenv} ]; then save_env recordfail; fi

  set quiet=1

  insmod ext2

  set root=(hd0,5)

  search --no-floppy --fs-uuid --set d18b116e-7143-4f74-84b9-17c27e283bfc

  linux /boot/vmlinuz-2.6.31-21-generic root=UUID=d18b116e-7143-4f74-84b9-17c27e283bfc ro quiet splash

  initrd /boot/initrd.img-2.6.31-21-generic

  }


  ##修改后的:


  menuentry "Test-Ubuntu, Linux 2.6.33-1" {

  recordfail=1

  if [ -n ${have_grubenv} ]; then save_env recordfail; fi

  set quiet=1

  insmod ext2

  set root=(hd0,5)

  search --no-floppy --fs-uuid --set d18b116e-7143-4f74-84b9-17c27e283bfc

  linux /boot/vmlinuz-2.6.33.1 root=UUID=d18b116e-7143-4f74-84b9-17c27e283bfc ro quiet splash

  initrd /boot/initrd-2.6.33.1.img

  }


  完成后保存,基本上就好了。然后重启你会发现启动项里面多了个Test-Ubuntu, Linux 2.6.33-1 选项


  所以了,选择进入就是了。