ubuntu 下面编译内核

1. 安装编译内核环境工具

<pre name="code" class="html">sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的编程库(gcc, make 等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig 要调用的)

libqt3-headers (make xconfig 要调用的)



2.下载特定linux内核源代码

http://www.kernel.org 
我下载的是linux-3.17.4.tar


3.将linux-3.17.4.tar解压到你自己的目录下,我的是mywork目录

tar -xvf linux-3.17.4.tar

4.内核 配置与编译

Linux 内核 具 有 可定制 的 优 点, 具 体 步骤

4.1  make distclean //清除临时文件,配置文件和中间文件

其他几个清除命令:

make clean :remove most generated files but keep the config
make mrproper:remove all generated files + config files
make distclean:mrproper + remove editor backup and patch files

4.2配置内核选项

 确 定 目标 系统 的 软 硬 件 配置 情况 , 比 如CPU 的类型 、 网 卡 的 型 号,所 需 支持 的 网络协议 等

主要有以下几个命令

make config : 基于 文 本 模 式的交 互 式 配置 。
make menuconfig : 基于 文 本 模 式的 菜 单 型 配置 。 ( 推荐 使用 )
make oldconfig :使用已有的 配置 文 件 (.config ) , 但 是 会询 问 新增 的 配置 选项 
 make xconfig :图 形 化 的 配置( 需 安 装 图 形 化 系统 )
其中make  menuconfig是最常用的内核配置方式

使用方法如下:

1 、使用 方向键 在 各 选项 间 移 动 ;
2 、使用“Enter” 键 进 入 下一 层 选 单 ; 每 个 选项上的 高亮字母 是 键盘 快 捷方 式,使用 它 可以快速 地 到 达想 要 设置 的 选 单 项

3 、在 括 号 中 按“y” 将 这 个 项 目 编译 进 内核 中 , 按“m” 编译为 模块 , 按“n” 为 不 选择 ( 按 空 格键也可 在 编译 进 内核、 编译为模块和 不 编译 三 者间 进 行 切换 ) , 按“h” 将 显 示 这 个 选项 的 帮助信息 , 按“Esc” 键 将 返 回 到 上 层 选 单

备注:配置内核一般都是在已有的内核的配置基础上面进行配置,Linux 内核 提供 了一系 列 可 供 参考 的内核 配置 文 件,位 于arch/$cpu/configs目录下面

这里我们为了保证编译的内核可用,使用当前ubuntu系统本身的配置项进行编译,本身的配置项在/usr/src/linux-headers-2.6.32-21-generic/.config下面,

我们把它拷贝到当前目录

cp /usr/src/linux-headers-2.6.32-21-generic/.config  ./
执行make menuconfig开始配置内核,这里我们不需要修改任何配置,我们直接选择“load”,然后选择“save

技术分享


技术分享


5.、 编译 内核

make zImage
make bzImage
区 别 :在X86 平台 ,zImage 只 能 用 于 小 于512K 的内核

如 需 获 取 详 细 编译 信息, 可 使用:
make zImage V=1
make bzImage V=1
 编译 好 的内核位 于arch/<cpu>/boot/ 目录下 下 

这里我们可以直接执行make -j4编译,加-j4,双核并行编译,速度快很多

编译好的内核在arch/x86/bzImage下面

6、编译 内核 模块、

make modules
7、安装内核模块

make modules_install
安装好的内核模块在/lib/modules目录下面,我这里会出现3.17.4这样一个新目录


8、制作init ramdisk

一般是用mkinitrd,而在Ubuntu/Debian下是用mkintramfs.

它们的用法稍微有些不一样,如下所示:

sudo mkinitrd initrd.img_3.17.4  3.17.4  //后面这个3.17.4是和你之前编译的内核模块对应的,位于/lib/modules目录下面

sudo mkinitramfs  -o /boot/initrd.img_3.17.4

其中2.6.26为/lib/modules下的目录名称.

9、执行sudo make install系统自动更新启动(ubuntu平台)

备注:其他平台执行如下命令

1 、cp ./arch/x86/boot/bzImage /boot/vmlinuz-$version
2 、cp <span style="color: rgb(102, 102, 102); font-family: 宋体, Arial; font-size: 15.555556297302246px; line-height: 25.98958396911621px; background-color: rgb(240, 240, 240);">initrd.img_3.17.4</span> /boot/
3 、 修改/etc/grub.conf  或者 /etc/lilo.conf

10、reboot重启系统






郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。