内核配置与编译

来源:互联网 发布:bim设计方案优化 编辑:程序博客网 时间:2024/04/30 17:27

我的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/<cpu>/boot/ 目录下

输入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 例:
    mkinitrd initrd-2.6.35-22-generic(文件名可改动)  2.6.35-22-generic(这个是版本号不能随便改动,2.6.35-22-generic是在/lib/modules下的目录
   *$version 可以通过查询/lib/modules下的目录得到

制作完成后在/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 为所编译的内核版本号**

 

 

 

原创粉丝点击