准备
先确认有基本的编译环境,否则执行:
$ 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)的内核头文件。

:(系统监视器截图)

出处:http://hi.baidu.com/benzus/blog/item/9f5dc20ee5647dc27acbe144.html

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

(zz)编译Ubuntu Linux内核相关推荐

  1. linux内核 mpls,将MPLS编译进linux内核中

    系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...

  2. linux3.10内核支持mpls,将MPLS编译进linux内核中

    系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...

  3. 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国

    转载自:升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 译者/Ping Yang  Linux  2 ...

  4. Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核

    Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核 一.下载内核源码 wget http://ftp.sjtu.edu ...

  5. 编译安装linux内核步骤

    编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...

  6. Android源码编译及替换成自己编译的linux内核

    /*************************************************************************************************** ...

  7. linux内核编译 kbuild,Linux内核编译系统kbuild简介

    前言 这篇文章并非原创,是偶然在linuxjournal上面看到的一篇文章,感觉写得比较清晰,例子详尽,所以这里对文章进行简单整理,算是一个笔记.本文主要是关于kbuild的简单介绍,不会介绍linu ...

  8. linux内核使用make编译出错,linux 内核编译错误 make menuconfig

    linux 内核编译错误 make menuconfig [root@fedora /usr/src/kernels/2.6.21-1.3194.fc7-i686]#make menuconfig H ...

  9. linux内核编译感想,Linux内核编译小结

    初步了解Linux编译内核: Linux默认内核存放路径为/boot Linux内核的版本号: LINUX采用双树系统:一为稳定树,二为开发树.一般是新特性及实验性改进首先在开发树中进行,经过测试后, ...

最新文章

  1. 内含福利 | 世界人工智能大会:对话大咖,深挖机器学习的商业应用
  2. bootstrap-fileinput 添加打印按钮
  3. 0基础linux运维,Linux运维基础
  4. received packet with own address as source address
  5. 在NIO.2中使用文件和目录
  6. xshell 6 连接debian系统拒绝了密码_原来连接Linux,还有这个方法
  7. MTK 驱动(73)--- Kernel Backtrace 无法显示出具体的地址.
  8. Oracle SQL 优化原则(实用篇)
  9. python 学习资料
  10. python能做什么工作-学Python能找到什么工作?这4种工作最热门!
  11. 跨设备链路聚合_企业核心经常用到的链路聚合技术,原理与实现
  12. 全新起航,无悔青春-嵌入式19031开班典礼
  13. 行为型模型 中介者模式
  14. 伺服步进控制程序西门子200PLC和昆仑通泰MCGS触摸屏控制伺服步进电机程序例子题】
  15. 最小二乘法求回归直线方程的详细推导过程
  16. 如何取得cpolar的口令?
  17. 为什么需要一部21世纪的全球通史?
  18. 微信小程序跳过第三方的_微信小程序可以跳转第三方页面吗
  19. 喷墨打印机的使用 hp LaserJet 1010 HB 打印顺序
  20. 数据结构(三)打印二叉树中结点层次遍历序列的实现

热门文章

  1. No module named 'oscar.apps.promotions'
  2. mysql-workbench连接数据库
  3. C++primer CH12智能指针
  4. linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
  5. php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解
  6. ebs r12多少钱 实施oracle_甘肃室外儿童游乐设施报价,室外儿童游乐设施多少钱
  7. concat函数_三、P57-61 MySQL中常用函数
  8. dom 生成图片和链接生成二维码
  9. 中方:开展科技合作应秉持开放、合作、包容心态
  10. C/C++ 动态存储分配 malloc calloc realloc函数的用法与区别