Chinaunix首页 | 论坛 | 博客
  • 博客访问: 337589
  • 博文数量: 92
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 960
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 19:38
文章分类

全部博文(92)

文章存档

2010年(71)

2009年(21)

我的朋友

分类: 嵌入式

2010-04-07 14:39:13

Linux 内核简介

在内核文件的顶层Makefile,可以看到内核版本号:2.6.31

VERSION = 2

PATCHLEVEL = 6

SUBLEVEL = 31

EXTRAVERSION =

NAME = Man-Eating Seals of Antiquity

 

内核源码目录结构分析

Ø       arch

   与体系结构相关的代码。对应于每个支持的体系结构,有一个相应的子目录如x86arm等,每个体系结构子目录下包含几个主要子目录:

   .boot   启动内核所需的平台特有代码

   .kernel 体系结构特有特征(如SMP)的实现

   .mm  与体系结构相关的内存管理代码

   .lib     与体系结构相关的通用函数的实现

Ø       drivers

    所有设备驱动程序代码,它占整个内核代码量一半以上,每一个子目录对应一类驱动程序。

Ø       fs

    文件系统代码,每个支持的文件系统有相应的子目录,如cramfs,yaffsjffs2

Ø       include

       包括编译内核所需的大部分头文件,与平台无关的头文件放在include/linux子目录下,平台相关的头文件如include/asm-arm

Ø       init       内核初始化代码(有一个main.c文件,boot-loader第二阶段的起始代码)

Ø       kernel     内核管理核心代码

Ø       lib        库函数代码

Ø       Mm         内存管理代码

Ø       net        网络支持代码

Ø       sound      音频设备驱动代码

Ø       scripts    用于配置内核的脚本文件

Ø       documentation    内核相关文档

 

内核配置系统的基本结构

Makefile分布在Linux内核源码中的Makefile定义了Linux内核编译的规则;

Ø       配置工具:

  make config        字符界面

  make menuconfig    Ncurses图形界面

  make xconfig       Xwindows图形界面

Ø       配置文件:

  .config:在配置内核时生成,根据.config来决定使用哪些Makefile

 

 

Kconfig文件分析

menuconfig:  用于生成菜单

config:      生成配置选项

depend on    依赖关系

default      默认值

select       自动选择(自动选择子选项)

source       读入另一个Kconfig文件

help         帮助信息

 

 

Linux的启动过程

第一阶段:(由ARM架构的系统文件完成)

       arch/arm/kernel/head.S

       arch/arm/kernel/head-common.S

       arch/arm/mm/proc-arm920.S

  检查内核是否支持当前处理器架构和开发板,禁止Cache,使能MMU,设置栈指针,调用

start_kernel

 

第二阶段:

    init/main.c   start_kernel

 

  完成内核初始化全部工作,最后调用rest_init函数启动init进程

 

 

 

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