(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
(zz)编译Ubuntu Linux内核相关推荐
- linux内核 mpls,将MPLS编译进linux内核中
系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...
- linux3.10内核支持mpls,将MPLS编译进linux内核中
系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...
- 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国
转载自:升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 译者/Ping Yang Linux 2 ...
- Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核
Mastering Embedded Linux Programming 学习 (三)在百问网157开发板上,编译构建linux内核 一.下载内核源码 wget http://ftp.sjtu.edu ...
- 编译安装linux内核步骤
编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...
- Android源码编译及替换成自己编译的linux内核
/*************************************************************************************************** ...
- linux内核编译 kbuild,Linux内核编译系统kbuild简介
前言 这篇文章并非原创,是偶然在linuxjournal上面看到的一篇文章,感觉写得比较清晰,例子详尽,所以这里对文章进行简单整理,算是一个笔记.本文主要是关于kbuild的简单介绍,不会介绍linu ...
- linux内核使用make编译出错,linux 内核编译错误 make menuconfig
linux 内核编译错误 make menuconfig [root@fedora /usr/src/kernels/2.6.21-1.3194.fc7-i686]#make menuconfig H ...
- linux内核编译感想,Linux内核编译小结
初步了解Linux编译内核: Linux默认内核存放路径为/boot Linux内核的版本号: LINUX采用双树系统:一为稳定树,二为开发树.一般是新特性及实验性改进首先在开发树中进行,经过测试后, ...
最新文章
- 内含福利 | 世界人工智能大会:对话大咖,深挖机器学习的商业应用
- bootstrap-fileinput 添加打印按钮
- 0基础linux运维,Linux运维基础
- received packet with own address as source address
- 在NIO.2中使用文件和目录
- xshell 6 连接debian系统拒绝了密码_原来连接Linux,还有这个方法
- MTK 驱动(73)--- Kernel Backtrace 无法显示出具体的地址.
- Oracle SQL 优化原则(实用篇)
- python 学习资料
- python能做什么工作-学Python能找到什么工作?这4种工作最热门!
- 跨设备链路聚合_企业核心经常用到的链路聚合技术,原理与实现
- 全新起航,无悔青春-嵌入式19031开班典礼
- 行为型模型 中介者模式
- 伺服步进控制程序西门子200PLC和昆仑通泰MCGS触摸屏控制伺服步进电机程序例子题】
- 最小二乘法求回归直线方程的详细推导过程
- 如何取得cpolar的口令?
- 为什么需要一部21世纪的全球通史?
- 微信小程序跳过第三方的_微信小程序可以跳转第三方页面吗
- 喷墨打印机的使用 hp LaserJet 1010 HB 打印顺序
- 数据结构(三)打印二叉树中结点层次遍历序列的实现
热门文章
- No module named 'oscar.apps.promotions'
- mysql-workbench连接数据库
- C++primer CH12智能指针
- linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
- php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解
- ebs r12多少钱 实施oracle_甘肃室外儿童游乐设施报价,室外儿童游乐设施多少钱
- concat函数_三、P57-61 MySQL中常用函数
- dom 生成图片和链接生成二维码
- 中方:开展科技合作应秉持开放、合作、包容心态
- C/C++ 动态存储分配 malloc calloc realloc函数的用法与区别