ubuntu编译内核

65296349

Step 1:

下载最新的(或你想要的Linux内核源码)

下载地址:www.kernel.org

可以通过uname -a命令查看当前系统内核的版本好及编译时间

得到源码后,将其解压到某个目录下

推荐解压到~/linux/ 目录下,至于为什么,等我明白了再告诉你

Step 2:

打开终端,进入源代码目录下,比如:

cd ~/linux/linux-2.6.20.1/

进入后,安全起见,先 make mrproper 一下,

以清除目录下所有配置文件和先前生成内核时产生的中间文件

接下来将要进行内核配置,这是最难也是最关键的一步

有四种方法可完成这件事情:

 
#make config

#make menuconfig

#make xconfig

#make oldconfig

我用的是第二种,但这时问题来了,运行命令后发生错误,而且一堆

最关键的错误信息是少一个库

原来,Ubuntu安装时缺少很多东西,尤其是编程方面的,需要自己通过“源”来安装

所谓“源”,不清楚,大概就相当于Windows的在线升级程序吧

Ubuntu自己带的源不全,速度慢不说,有的还连不上,所以要自己添加一些源

具体方法参见:http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97/DapperDrake

把源设置好之后,就可以在线安装所需要的东西了

在这提醒一下使用Ubuntu的朋友:

使用源第一次进行自动更新的时候,Ubuntu里带的输入法也会更新

但这次的更新与上个版本不兼容,因此会导致输入法无法使用

我为这个问题郁闷半天,上网查很久才找到解决方法:

sudo apt-get remove fcitx
rm -R ~/.fcitx
sudo apt-get install fcitx

就是把原来的fcitx输入法卸掉,移除它在根目录下的配置文件(?好像是),然后重装

ok,言归正传,编译内核需要下面一些东西:

apt-get install libncurses5-dev  (meke menuconfig要调用的)

apt-get install libqt3-headers   (make xconfig要调用的)

上面列的不全,但你安装的时候,源会提示你,哪些包是推荐安装的

都装上就是了
如果连基本的编程库(gcc, make等)也没有的话

apt-get install build-essential

如果上面的东西都装完了,恭喜你,终于可以make menuconfig了

但先别急,相信你现在的系统正用得很爽

上网,声音,显示···什么问题都没有

但等你重新编译内核后,可能你就少些东西了,比如上不了网,声音没了等等
 

严重的连系统都进不了

为此,你最好把现在内核用的.config文件拷贝过来,当作模版

当你make menuconfig后,选倒数第二项:load config(好像是这个名字,记不清了)

把.config加载进来,这样你就能在原来内核的基础之上修改了

这时相信你只要别随便减去什么东西

编好内核后一样用得很爽

至于menuconfig里面数不清的选项都是什么意思

相信你即使很懂英文也看不太明白

但有一个选项,一般很少提到,就是如果你发现编译完之后

重启时进度条没有了

多半是因为你在Device-drivers==>Graphic ···==>Console···(路径记不清了)下有个

CONFIG_FRAMEBUFFER_CONSOLE,不能是M(动态加载),而是要×(编译进内核)

就是顺便提一下,如果你有这个问题,去找一找,呵呵
配置好后,强烈建议你把生成的.config文件备份一下

这样将来一旦有什么问题

你可以马上copy过来,在原来的基础上继续


--------------------------------------------------------------------------------

Step 3:

接下来就简单了
 

如果你人品够好,下面四个命令之后就ok了:

make clean

make -j4  (-j4是让处理器分成四个线程来编译内核,速度快,推荐CPU好的使用)

make modules_install

make install

结束后重启,就可以在启动菜单上看到新内核了

我人品不够,或者说Ubuntu太另类

居然不给我生成initrd文件

上网查,原来要用下面的命令:

make-kpkg clean (kpkg具体什么作用不懂)

make-kpkg --initrd --append to version Wing1 kernel_image kernel_headers  //这里原文有错误

应该是:(用root权限)

make-kpkg --initrd --append_to_version fly1 kernel_image kernel_headers

其中--initrd必需要,不然生成不了initrd文件

--append生成多重镜像,也就是在启动菜单里看到的选项

Wing1是你自己取的镜像的名字,必须以数字结尾,比如在这里写Wing1 //错误

镜像名字不能大写,所以改成fly1。

编号内核后,就会显示linux-2.6.20.1Wing1最后两项是生成镜像包和头文件包

make完之后,会在上一层目录看到两个deb包

用dpkg -i命令安装这两个包就好了

这个时候,一切都弄好了

可以去/boot目录下看看Vmlinuz、initrd、System.map文件是否都在

然后看看/boot/Grub/menulist文件中的内容是否已经加上你新编译的内核

如果是,恭喜你,放心大胆的重启吧

重启后,就可以进入你自己编译的内核了


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值