学习linux的时候如果要添加自己的系统调用,你不得不重新编译内核,哪怕是出于兴趣,也要有编译内核的经历。有句哲理是这样的:做一件事不难,难就难在你迈出了这一步,呵呵,有点假了。嗯,不多废话了,经过朋友的指点,首先掌握一个简单的,清晰的编译过程多初次体验者来说至关重要。所以先
记录下这个简单的第一次。
第一步:得有源码(废话么,编译程序没源码行吗?)在哪下载呢? 自己找一个源码包,记得
是点后面的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(需要包支持
apt-get install libcurses5-dev apt-get install libncurses-dev就可以了) 3,#make xconfig
我们使用的全是默认的配置。所以直接使用第二种方法,进入以后直接推出就可以了,以后再研究原因吧,
暂时先这样使用。
第三步:编译内核:(前面的两个步骤可以省略,一个#make dep 一个#make clean),这里直接#make
就行了,然后静静的等待吧,一般的机子一两个小时就编译完成了。编译完成后就是安装内核了。
第四步:安装内核,#make modules(编译模块)和#make modules_install
再生成内核镜像文件,我的命令是:mkinitramfs -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 选项
所以了,选择进入就是了。
阅读(1314) | 评论(0) | 转发(0) |