(zz)编译Ubuntu Linux内核

准备
先确认有基本的编译环境,否则执行:
$ sudo apt-get install build-essential
:此命令将会安装 glibc、glibc++等等相关的库及头文件。

环境说明
OS: Ubuntu 9.04 (jaunty)
kernel: linux-2.6.28-12-generic
gcc:   4.3.3
:Ubuntu 9.04 默认使用的内核是 linux-2.6.28-11-generic,由于我安装过更新包,所以是 linux-2.6.28-12-generic

开始
1. 下载内核源代码,这里我下载的内核是 linux-2.6.29.3
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.bz2
linux-2.6.29.3 发布于 2009-05-08,在写这篇文章时它是最新的内核,不过由于linux内核更新很频繁,每2~3周就会发布一个新版本,所以很快这个就会过时;如果你总是需要最新的版本,最好还是到 kernel.org 看看

2. 解压
$ tar xjvf linux-2.6.29.3.tar.bz2

3. 配置内核
Ubuntu 的内核配置文件保存在 /boot 目录下,如 9.04 的配置文件是 /boot/config-2.6.28-11-generic,为了通用性,可以使用以下命令:
$ cd linux-2.6.29.3
$ sudo cp /boot/config-`uname -r`-generic ./.config
为了遵循 Ubuntu 对其内核的命名方式,需要修改 Makefile 的 EXTRAVERSION,打开Makefile,找到该行(一般就在前几行中)并修改为:
EXTRAVERSION = -3-generic
:其中3是内核版本号2.6.29.3的最后一位,generic是 Ubuntu 的命名习惯。

4. 编译内核
$ make mrproper
:清理内核代码树,基本上编译内核之前最好都要进行这一步。

$ make menuconfig

选择 'Load an Alternate Configuration File'

OK即可。
:make menuconfig 是一个文本形式的图形界面配置环境,如果你喜欢更高级的图形界面配置环境,GNOME用户可以输入 make gconfig,KDE用户可以输入 make kconfig
:(make gconfig)


这样就加载了默认的内核配置,然后可以在此基础上自己定制。
:如果你对自己不那么有信心,建议你使用默认的配置;否则,根据自己计算机的硬件和自己的需求定制内核是最好的方式。

定制完后保存:

退出配置界面后回到命令行,执行:
$ make
$ sudo make modules_install

5. 生成initrd.img
$ sudo mkinitramfs -o /boot/initrd.img-2.6.29-3-generic

6. 安装内核
$ sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.29-3-generic

7. 其他
$ sudo cp System.map /boot/System.map-2.6.29-3-generic
$ sudo cp .config /boot/config-2.6.29-3-generic
$ cd /
$ sudo rm vmlinuz initrd.img
$ sudo ln -s boot/vmlinuz-2.6.29-3-generic vmlinuz
$ sudo ln -s boot/initrd.img-2.6.29-3-generic initrd.img

8. 修改 GRUB 菜单
用喜欢的文本编辑器打开 /grub/menu.lst,添加对应的菜单项(这个应该很简单,可以参考旧的菜单项)

9. 重启(使用新内核)
如果你决定不再使用旧的内核,可以考虑删除旧的内核模块(因为它们很占磁盘空间),这些模块位于 /lib/modules 下,如删除 2.6.28-12-generic 模块:
:不建议进行这一步,毕竟新编译的内核没有与发行版相关的 linux-headers,如果你想做一些开发的话则不能够缺少这些头文件!(目前我还不知道怎么做,不过可以肯定的是绝对不是 make headers_install 这么简单)
$ sudo rm -rvf /lib/modules/2.6.28-12-generic

:如果系统上安装了 VirtualBox,还要重新编译VirtualBox的内核模块,执行:
$ sudo /etc/init.d/vboxdrv setup

未解决问题
生成特定于发行版(Ubuntu)的内核头文件。

:(系统监视器截图)

 

转载于:https://www.cnblogs.com/pangpangxiongxiong/archive/2009/07/17/1525405.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值