首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

Debian下编译安装Linux内核

http://www.oklinux.cn  2007-06-01  来源: oklinux收集整理  chentong      会员收藏  游客收藏  【 】 
  一直以为Linux内核的编译是一件很复杂的事情,虽然有几次也实在是按捺不住冲动,要自己来编译一下试试,但是类似的几次尝试都是以失败而告终。在不久前,看到过一些关于Debian下编译内核的文章,说得很详细,而且似乎看起来也并不是很复杂的样子,于是决定自己编译一下内核,毕竟对于使用Linux 的人来说没有自己编译过内核还真是一件叫人遗憾的事情。在这里记下的是自己编译2.6.19内核的方法,希望对于大家会有一些小小的帮助。

  1 下载内核:我们可以在http://www.kernel.org上找到我们所希望的内核,在这里我们使用的较新的2.6.19版本的内核。

  2 将内核解压/usr/src目录下:

  $ cd /usr/src

  $ tar -xvf linux-2.6.19.tar.bz2

  以前看到过的一些关于内核编译的文章都会说到在这里创建一个指向源码目录的linux链接,但是在新的2.6版本的内核中没有进行这一步,而且有时如果这样做反倒会造成编译不成功,所以在这里我们也就把这一步免了。

  3 安装所需的软件包:

  $ apt-get install kernel-package libncurses5-dev fakeroot build-essential

  4 配置内核:  

  $ cd linux-2.6.19

  $ make menuconfig

  在这里我们可以按照我们的兴趣与需要来配置内核。而如果我们对于这些配置选项并不是很熟悉,我们可以使用我们以前的配置文件来进行配置:

  $ cp /boot/config-`uname -r` .config

  5 编译内核:

  $ make-kpkg clean

  $ fakeroot make-kpkg --append-to-version=.061228 linux-image

  在这里我们有必要先介绍一下make-kpkg与fakeroot这两个软件包。

  在Debian编译内核,我们可以使用make-kpkg,这是一个可以自动替换"make dep;make clean;make bzImage;make modules"命令序列的脚本。而最其最常用的两个参数就是--append-to-version与--revision。

  --append-to-version这个选项可以让我们来指定一个额外的内核版本,这个可以成为内核名的一问分。我们可以使用数字,"+",",", 但是不要使用下划线"_".比较常见的用法是我们可以当天的日期作为参数,从而来区分不同的内核。如我正在运行的内核版本号如下:

  mylxiaoyi@debian:~$ uname -r

  2.6.19.061228

  这里我们要注意的是我们要避免设置--append-to-version为如"-686","-K7","-sparc"等值,因为这些值常为Debian的预编译内核所使用。

  内核模块位于/lib/modules子目录下。每一个内核有他自己的子目录。每次当我们以一个新的名字来安装一个新的内核时,这个包安装程序就会在/lib/modules目录下创建一个新的子目录来保存他自己的模块。

  这就意味着每一次我们使用--append-to-version的一个新的值来编译一个内核时,我们就可以保证这个内核有一个新的名字,而他的模块也不会与其他的内核模块相冲突。

  注意:如果我们使用相同的名字来安装一个内核时,安装程序就会覆盖掉已安装的内核及其模块。

  --revision只会影响Debian软件包本身的名字而不是内核的名字。与--append-to-version相似,我们只可以使用数,"+ ",".",不要使用下划线"_"。如果我们并没有为--revision指定一个值,make-kpkg就会使用"10.00.Custom".

  使用不同的--revision的值就可以避免相同名字的内核之间的冲突。

  Debian kernel-image文件的名字格式如下:

  kernel-image-(kernel-version)(--append-to-version)_(--revision)_(architecture).deb

  进行内核编译时我们用到的另外一个软件包就是fakeroot。使用fakeroot我们可以普通用户的身份来运行make-kpkg,并且可以以普通的权限来完成大多数的工作。在接近工作的结尾时,fakeroot就会以模拟root环境来创建一个kernel-image软件包。

  这样经过一段时间的等待以后我们就会得到一个deb包,如:

  linux-image-2.6.19.061228_2.6.19.061228-10.00.Custom_i386.deb

  这时我们就可以使用dpkg来安装这个包了:

  $ dpkg -i linux-image-2.6.19.061228_2.6.19.061228-10.00.Custom_i386.deb

  6 创建ramdisk:

  在新版本的内核中创建ramdisk使用的是mkinitrd.yaird。我们首先要安装这个软件包:

  $ apt-get install mkinitrd.yaird

  在使用这个软件包创建ramdisk之前,我们需要修改/boot/config-2.6.19.061228文件,将

  CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

  这句注释掉,否则我们就会得到一个错误信息。  

  $ vim /boot/config-2.6.19.061228


  [...]

  # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

  [...]

  这样以后我们就可以创建ramdisk了:

  $ mkinitrd.yaird -o /boot/initrd.img-2.6.19.061228 2.6.19.061228

  7 修改Grub配置文件使用新版本的内核启动。

  呵呵~~这样看来在Debina下编译内核也并不是一件很困难的事情,这样我们就可以完全按照我们的需要来配置我们的Linux内核了。

上一篇:linux内核体系结构   下一篇:跟我一步一步学汉化(一)


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·linux内核体系结构
·跟我一步一步学汉化(一)
·Linux中重新编译内核
·linux驱动程序设计
·为你的 Linux 快速编译所需要的模块
·Linux信号
·实战编译Linux内核
·用VI阅读linux内核代码---VI的高级使用
·软件产品发布流程
·Linux磁盘管理命令
·Raid 技术学习
·Kernel升级笔记
·Linux平台的下载程序
·Linux对超线程技术支持
·Linux内核编程(使用/proc进行输入)
·Linux线程的定义
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统下内核定时器的用法
·学习园地:Linux系统内核中判断大小的
·系统编译:如何给Make命令来传递参数
·Linux 2.6内核中sysfs文件系统简单概述
·Fedora 8 Linux系统的内核配置注意事项
·升级Linux内核的一般步骤方法
·Linux发行版知识普及:三个版本的CPUID
·编译安装Virtualbox驱动模块
· Linux系统的内核解读入门
·新手学堂 Linux系统的内核解读入门
·Linux系统内核中网络参数的意义及其应
·走向Linux系统高手之路 内核编译过程解
  阅读排行
· 深入理解LINUX内核中文版下载地址
·基于S3C44B0微处理器的uClinux内核引导
·Kernel command using Linux system ca
·Linux 2.6内核如何武装Fedora Core 2
·Process priority and control on AIX
·Linux操作系统的内核编译内幕详解
·推荐:Linux用户态与内核态的交互
·通过振动向Linux ThinkPad传输信息
·Linux操作系统源代码详细分析(二)
·Linux系统内核接收以太帧的处理程序
·Linux and symmetric multiprocessing
·主流嵌入式Linux系统下GUI解决方案
·揭秘Linux内核调试器之内幕
·用命令行加挂Linux的文件系统简介
·Linux内核和核心OS组件的测试与分析
网摘收藏: