我的linux内核位置 /home/embest/work/目录下
(cd /home/embest/work/;切换到目录下
tar xvf /media/cdrom/linux/source/linux-2.6.28-omap.tar.bz2;解压内核到目录)
linux具有可定制的优点,步骤如下
一. 清除临时文件、中间文件和配置文件.
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
终端操作命令:
cd /home/embest/work/linux-2.6.28/;到内核目录下
sudo make distclean;清除,一开始提示没有make命令,需要把交叉编译工具的bin、tools路径添加到环境变量,命令为:
export PATH=/arm-2007q3/bin:/arm-2007q3/tools:$PATH
二、确定目标系统的软硬件配置情况,比如CPU的 类型、网卡的型号,所需支持的网络协议等。
三、使用如下命令之一(2选1)配置内核:推荐使用make menuconfig
1、(sudo) make config:基于文本模式的交互式配置。 (用了超级用户命令sudo),此命令太麻烦,不断提示是否安装各种功能。
2、make menuconfig:基于文本模式的菜单型配
(1)终端输入命令 make menuconfig后有错误如下:
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
解决办法:Installing ncurses-devel on Ubuntu
输入命令:sudo apt-get install ncurses-dev
问题解决后弹出 内核配置框。点击空格可以改变选择。
使用方法:
在括号中按“y”将这个项目编译进内核中,按 “m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助 信息,按“Esc”键将返 到上层选单
选择Y(即*)相应的A.c文件变为A.o并最终链接生成到uImage(内核)中,选择M后相应的A.c变为A.o模块。
不进行任何操作,保存内核退出,输入ls -a(-a显示隐藏文件)命令显示多了.config文件,这就是我们配置的结果。
(2)内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件 Linux内核提供了一系列可供参考的内 核配置文件,位于 /linux-2.6.28-omap/Arch/arm/configs
在/linux-2.6.28-omap/Arch/arm/configs 中选择所需要的config文件,我选择了omap_devkit8000_defconfig。
终端输入命令:
cd /home/embest/work/linux-2.6.28-omap/Arch/arm/configs ;切换到configs目下
cp omap_devkit8000_defconfig /home/embest/work/linux-2.6.28-omap/.config;将omap_devkit8000_defconfig 复制到自己的.config文件中
make menuconfig ARCH=arm;即可看到menu中system type中已经有了ARM system type(TI omap)
(3)编译内核:
make zImage
make bzImage
区别:在X86平台,zImage只能用于小于512K的内核
如需获取详细编译信息,可使用:
make zImage V=1
make bzImage V=1
编译好的内核位于arch/
输入make bzImage出错make:arm-none-linux-gnueabi-gcc:命令未找到。
解决办法:sudo -s;登陆超级用户,在超级用户中添加交叉编译工具的bin路径
export PATH=/home/embest/arm/2007q3/bin:/home/embest/tools:$PATH
(4)编译内核模块:
make modules
(5)安装内核模块make modules_install //将编译好的内核模块从内核源代码目录copy 至/lib/modules下
(6)制作init ramdisk mkinitrd initrd-$version $version 例:
制作完成后在/home/embest/work/linux-2.6.28-omap目录下输入ls可以看到生成了initrd-2.6.35-22-generic。
(7) 内核安装(X86平台)
1、cp arch/x86(arm)/boot/bzImage
/boot/vmlinuz(自己取的名字)-$version ;将bzImage拷到boot目录下
2、cp initrd-2.6.35-22-generic /boot/ ;将initrd-2.6.35-22-generic拷到boot下
3、修改/etc/grub.conf 或者/etc/lilo.conf ;输入命令vi /etc/grub.conf
** $version 为所编译的内核版本号**