分类: LINUX
2011-07-10 21:59:29
要编译 Linux,首先当然是要获得 Linux 的内核源码(kernel source code)。最新的 Linux 官方源码是可以从或其映像站点取得,而最新 2.6.x 版本一般放在 /pub/linux/kernel/v2.6/
将下载的内核源代码放在Linux系统目录文件夹/usr/src/中。
要想顺利完成内核编译,首先要检查或安装必要的工具:
1.安装 gcc, make 等编译工具:
apt-get install build-essential
Ø 2.安装 make menuconfig 时必须的库文件:NCurses (libncurses5-dev 或 ncurses-devel) ,这是当make menuconfig 时用作生成菜单窗口的程序库:
apt-get install libncurses-dev
apt-get install kernel-package
3.安装Linux系统生成 kernel-image 的一些配置文件和工具
apt-get install fakeroot apt-get install initramfs-tools, module-init-tools
4.一般在编译 Linux 内核时,一般还需要以下工具(这些工具一般是可选的):
Ø GNU C++ Compiler (g++ 或 gcc-c++) - 编译 make xconfig 使用的 Qt 窗口时需要
Ø Qt 3 (qt-devel 或 qt3-devel) - make xconfig 时用作 Qt 窗口的程序库
Ø GTK+ (gtk+-devel) - make gconfig 时用作 GTK+ 窗口的程序库
Ø Glade (libglade2-devel) - 要编译 make gconfig 时的 GTK+ 窗口时需要
在Ubuntu系统中,我们可以使用下面的命令来获得相关的软件包:
apt-get update apt-get install libncurses5-dev wget bzip2
解压内核
tar xzvf linux-2.6.30.tar.gz
把源码包解压到 /usr/src中,通过运行解压命令后,发现/usr/src中多了一个linux-2.6.30 文件夹
这一步在内核的编译过程中是可选的,如果你对内核有特殊的要求,可以将自己写的补丁打到内核中去。
对于一般PC机上下载的linux-2.6.30内核源码包在PC机上编译是不需要这一步骤的。如果读者有新的要求,可以写补丁包,例如对当前的linux-2.6.30制作的补丁包(文件名为patch-2.6.30.bz2),可以使用patch命令给Linux内核源码打入补丁:
cd linux-2.6.30 bzcat ../patch-2.6.30.bz2 | patch -p1
make menuconfig菜单选项格式的配置界面,如图1所示,在这里可以通过键盘来设置各个选项。
make oldconfig命令只选择新编译选项。一般情况下,当编译Linux内核时,执行make menuconfig弹出对话框,可以对内核的编译选项进行新的设定,并生成一个.config文件,make的时侯就是根据.config的设定值进行编译内核。如果再重新执行make menuconfig的时侯,内核编译选项又重新回到了以前的默认值。这时可以使用make oldconfig命令。当我们设定了内核编译选项之后,执行make oldconfig命令就可把前面设定好的内核编译选项存储起來。当下次再执行make menuconfig命令的时,出现的设定就是前一次的设定内容
注意:如果是在PC机下,没有特殊的要求,初学者编译内核,可以先选择“默认”的编译选项,如果出现问题,可以对照旧的编译配置文件,逐步查找并解决问题。
接下来编译与安装内核
首先用make mrproper命令清除所有旧的配置和旧的编译目标等文件:
cd /usr/src/linux-2.6.30 make mrproper
接着执行命令make来编译内核,在默认情况下,make 是一个顺序执行的工具。它按次序调用底层编译器来编译 C/C++ 源文件。在某些情况下,有的源文件不需以其他源文件为基础即可编译,这时可以使用 –j 选项调用 make 来完成并行编译操作。make指令格式如下:
make –jn |
经过上面的编译内核的步骤,会在目录 arch/x86/boot 目录下生成名为“bzImage”的文件,那就是编译出来的新内核。为方便管理,需要把它移动至目录 /boot中,并改名为 "vmlinuz-核心版本"。为保存编译选项方便日后参考,同时也要把.config复制至 /boot 及改名为 "config-核心版本"。这些步骤,我们可以通过输入命令make install来完成:
make install |
接下来执行命令:
make modules |
最后执行命令
make modules_install |
接下来是"安装引导配置"请见“Linux内核裁剪与编译(下篇)--基于2.6.30内核”
本文出自:邱铁、于玉龙、徐子川编著.LINUX应用与开发典型实例精讲.清华大学出版社.2010年出版