Linux内核学习1:内核基本简介

来源:互联网 发布:java中super()的用法 编辑:程序博客网 时间:2024/05/21 19:38

1:关于Linux内核的问题,首先我们要理解什么是Linux内核?

所谓Linux内核:内核是指的提供硬件抽象层,磁盘和文件系统控制、多任务等功能的系统软件。一个内核并不是一个完整的操作系统。一个基于Linux内核的完整操作系统才叫做Linux操作系统,or GUN/Linux。

<从上面的定义上来说,内核其实也就是一个系统软件,它能够提供硬件抽象、磁盘和文件控制等功能的软件。>


2:关于Linux系统又是如何构成的?

Linux系统主要包括两个方面:

1)用户空间

用户空间又包括两个方面:应用程序和C库

2)内核空间

内核空间又包括:系统调用接口、狭义上的内核、体系结构相关的内核代码。

概述:其实用户空间和内核空间是程序执行的两种不同状态。通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。这其实就是Linux的系统架构


3:Linux内核又是如何构成的?

一个计算机系统是由硬件和软件来组成的,操作系统是用来和硬件打交道并为用户程序提供一个有限服务集的低价支撑软件。而对于硬件而言,如果没有软件来控制和操作它,自身是不能工作的。因此在Linux中被称之为“内核”。

为了完成不同的操作和控制,进行内核模块化,每一块完成不同的功能。因此大体上有如下模块:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

因此Linux的内核架构可以看做如下:


4:Linux内核源代码它的目录结构是什么样的?
它是采用树形结构进行组织,非常合理地将功能相关的文件都放在同一个子目录下,使得程序的可读性更强。

简单的几个目录讲解:
arch目录:对应的是arch模块,依赖于体系结构:每个目录对应着不同的处理器,增加了系统的可移植性

进入以后,里面会有mach-S3C2440,mach对应着不同的开发板(与开发板相关的代码都放在mach中)


drivers目录:设备驱动程序代码,子目录对驱动程序进行分类

net目录:网络协的实现代码,不同的网络协议实现对应着不同的子目录

lib目录:内核需要的库代码

kernel目录:Linux大多数关键的核心功能都在这个目录实现

等等还有很多的目录。


5:理解了内核的概念以及内核的架构,那如何进行内核的配置和编译呢?

Linux内核具有可控制和可裁剪的作用。

Linux内核可控制的优点,具体步骤:
1)清除临时文件、中间文件和配置文件

make clean:删除产生的文件,但保存配置文件

make mrproper:删除所有的.o文件,包括配置文件

make distclean:把产生的.o文件且配置文件,相关指令都全部删除


2)确定目标系统的软硬件配置情况:比如cpu类型、网卡型号、所支持的网络协议


3)配置命令

△ make config:基于文件式的交互式配置,问答式,一步一步的询问

△ make menuconfig:基于文本式的菜单模式

△ make oldconfig:基于文本式的交互式,只有new时才会询问

△ make xconfig:图形化的配置

4)编译内核(不同的内核版本,配置有些区别)

找到配置文件,对配置文件进行修改


5)编译内核模块

make modules


7)安装内核模块

make modules_install

**将编译好的内核模块从内核源代码目录copy到/lib/modules下**


8)制作init ramdisk



0 0