Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2842294
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: LINUX

2009-04-10 10:02:08

以下内容可以参照Linux设备驱动开发详解P50页。

1、  下载内核源代码,如Linux2.6放入/usr/src目录

2、  如果内核下的modutils工具包需要更新,要下载较新版本的modutilsmodule-init-tools,分别进行安装。

3、  /usr/src下解压缩内核源代码,cd Linux2.6

4、  执行make mrproper命令,该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖,对于刚下载的完整的源程序包,可以省略此步,但是,如果这些源代码被多次使用过,那么在编译之前应运行此命令。

5、  配置内核

make menuconfig (基于文本菜单的配置界面)

make xconfig(要求QT被安装)

make gconfig(要求GTK+被安装)

6、  编译内核,并将映像复制到相应的目录。

make bzImage

(生成使用gzip压缩的文件,生成的文件位于/usr/src/linux/arch/i386/boot目录)

make modules modules_install

cd /usr/src/linux/

mv arch/i386/boot/bzImage  /boot/ bzImage2.6

mv system.map /boot/system.map-2.6

cd /boot

mv oldsystem.map

In –s system.map-2.6  system.map(创建相应的system.map符号链接)

system.map-2.6是编译生成的Linux2.6内核的符号表,而system.map是内核符号表的链接。

7、  修改启动脚本文件/etc/rc.sysinit

8、  修改启动选项

修改/boot/grub/grub.conf

#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.25-14.fc9.i686)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25-14.fc9.i686 ro root=UUID=3aec9fde-e30d-47b7-b454-e7c0b274607d rhgb quiet
    initrd /boot/initrd-2.6.25-14.fc9.i686.img

Linux2.6内核的配置系统由以下3个部分组成:

Makefile:分部在Linux内核源代码中的Makefile,定义Linux内核的编译规则

配置文件(Kconfig):给用户提供配置选择的功能

配置工具:包括配置命令解释器和配置用户界面。

使用make menuconfig等命令后,会生成一个.config配置文件(隐含在顶层Makefile中),记录哪些部分被编译入内核,那些部分被编译为内核模块。

用户运行make zImage等生成映像的命令时,先检索顶层Makefile(在arch/xxx目录下的Makefile为顶层Makefile补充体系结构相关的信息),顶层Makefile完成两个主要的任务:产生内核映像文件和内核模块,为了达到此目的,顶层Makefile会递归地进入内核的各个子目录中,分别调用位于这些子目录中Makefile(子目录中的Makefile属于kbuild类型Makefile,记录编译目标)。进入那些子目录则取决于内核的配置,这也就是make menuconfig等生成.config文件发挥作用的地方。

Linux内核中增加程序需要完成以下3项工作。

a,将编写的源代码复制到Linux内核源代码的相应目录中

b,在目录的Kconfig文件中增加新源代码对应项目的编译配置选项

c,在目录的Makefile文件中增加对新源代码的编译条目

阅读(2343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~