linux内核配置和编译
B R T
Linux 2.6内核源码目录结构
电子系统设计
B R T
Linux 2.6内核配置与编译
电子系统设计
交叉编译器:
运行在一种体系的CPU(通常是X86)的编译器,对其编译的程序产 生另外一种体系(如ARM/MIPS)的指令的编译器叫交叉编译器
B R T
Linux 2.6内核配置与编译
电子系统设计
cd到ARM #make
Linux 2.6的安装目录中
在当前目录中将产生vmlinux即为内核文 件 #make modules #make modules_install 将产生在内核代码树中以模块方式编译 的模块
B R T
Linux 2.6内核配置与编译
电子系统设计
内核配置系统:
配置命令 #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本菜单的配置界面,字符终端下推荐使用) #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使) #make gconfig(基于gtk的图形配置界面)
记录进程的信息,进程控制块
B R T
内存管理 电子系统设计
内存是系统资源的一种
SRAM, SDRAM, FB, Registers, 外设片上内存 物理内存的管理 虚拟内存的管理,内核空间与用户空间 内核与用户内存的分配 内存碎片的产生和避免
内存的分类
B R T
Linux系统软件层次结构
电子系统设计
B R T
Linux中处理器的运行
电子系统设计
Linux
Kernel初始化完毕后,程序运行在 以下的上下文空间中: 1)运行于用户空间,执行用户程序 2)运行于内核空间,处于当前进程的 上下文 3)运行于中断,处于中断上下文,与 进程无关,因为中断的不可预知
B R T
fread()文件的执行举例
电子系统设计
用户进程在用户空间,使用C库fread()读文件 Fread()调用read()系统调用,进入系统空间,执行系 统代码 系统根据文件对存储设备进行数据请求,在数据没准 备就绪是让出CPU使其他进程运行。 存储设备数据准备就绪,向CPU发出中断请求,CPU 响应进入中断上下文,并唤醒该文件的读进程 在某时刻,读文件的进程再次运行,取到数据,返回 用户空间
B R T
为什么要有操作系统
电子系统设计
多任务的要求 统一的服务接口,合理使用资源,如内存 管理并发时对资源使用冲突 减少开发的难度 安全性的要求 网络(TCP/IP)的使用 GUI的使用要求 应用程序移植性的要求 用户பைடு நூலகம்作的方便性
B R T
B R T
电子系统设计 Linux 2.6内核配置与编译
配置工作过程:
当用户执行配置命令,Makefile调用配置工具mconf, mconf从arch/$(ARCH)/Kconfig开始搜索各目录中的 Kconfig文件,并根据这些文件形成图形化的配置界面, 给用户进行配置 Kconfig文件是产生.config文件的输入文件,也就是说 .config中的选项是由Kconfig决定的 这是Linux2.6内核独有的配置系统 用户可以根据需要增加和修改其中的配置选项
这些命令产生的配置选项给用户,用户选择->退出->保存后产生 .config 文件,文件中包含有各种选择了的配置选项,以供Makefile 使用,Makefile在会根据.config的选项来产生 autoconf.h, autoconf.h是以C语言的形式定义的各编译选项,供kernel的源文 件include
操作系统的组成
电子系统设计
进程管理模块 内存管理模块
文件系统管理模块
设备管理模块 异常和中断管理模块 网络协议模块 …
…
B R T
进程管理 电子系统设计
进程(process)的概念 系统的第一个进程Init 用户进程如何运行和退出
PCB 系统调度,不同的系统有不同的策略 用户进程进入系统的唯一途径, system call
B R T
文件系统管理
永久性存储设备,disk,
电子系统设计
flash, sd, cf
分区、格式化及文件
一个简单的文件系统的例子 系统看存储地址是线性 进程看待文件的统一化和抽象化
B R T
设备管理 电子系统设计
HAL层的概念,
如果有不明白的地方,按 [shift]+?的组合键来查看说明
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的原则
1)大部分选项可以使用其缺省值或者BSP选用缺省值 ,只有小部分需要根据用户不同的需要选择。 2)将与内核其它部分关系较远且不经常使用的部分功 能代码编译成为可加载模块。
<M> Loopback device support 可以将一个文件挂成一个文件系统。mount iso文件
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的注意选项
6 file systems --->
必须将根文件系统直接编译到内核中。并且在 这里选择系统支持的文件系统。
B R T
Linux 2.6内核配置与编译
电子系统设计
选择相应的配置时,有三种选择,它们分别代表的含 义如下:
Y--将该功能编译进内核 N--不将该功能编译进内核 M--将该功能编译成模块,可以在需要时动态插入到内核中
make xconfig,使用鼠标就可以选择对应的选项。 make menuconfig,则需要使用空格键进行选取。
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的注意选项
2 General setup --->
大部分保持默认
[*] Support for paging of anonymous memory (swap) 应 该选择这个选项将使你的内核支持虚拟内存。Pc上应该选 择,而嵌入式上一般不选 [*] System V IPC 应该选择 为进程提供通信机制。有些程序只有在选Y的情况下才能 运行,这里一定要选。 [*] POSIX Message Queues POSIX的消息队列,它同样是一种IPC,应该选择 [*] Support for hot-pluggable devices 支持热插拔的,若 是为普通电脑配置内核,则最好选择
安装ARM交叉编译器
#tar xzvf crass-3.3.2.tgz
把解开的目录的bin/目录的绝对路径增加到环境变量$PATH中
B R T
Linux 2.6内核配置与编译
电子系统设计
安装ARM
Linux 2.6源码包 #tar xzvf gec_linux-2.6.8.1.tgz
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的注意选项
4 Executable file formats --->
[*] Kernel support for ELF binaries 一定要选 5 Device Drivers ---> Memory Technology Devices (MTD) ---> 存储设备层,大部分的flash芯片驱动都基于MTD。用于 嵌入式系統。 Block devices
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的注意选项
Code maturity level options ---> 应该 选择
[*] Prompt for development and/or incomplete code/drivers 这将会在设置界面中显示还在开发或者还没有 完成的代码与驱动. 因为有许多设备可能必需 选择这个选项才能进行配置,实际上它是安全 的。
B R T
Linux kernel的特点
电子系统设计
类Unix,遵循POSIX标准 支持很多的体系结构,如X86,Arm,Mips等等,有极强的平台可伸缩 性 Open Source(GNU GPL) 单内核,开放可扩展 真正的多任务多用户 具有强大的网络功能 ,尤其对Tcp/ip支持 开发功能强,开发环境免费 设备独立性, 系统把所有外部设备统一当作成文件来看待及操作 可靠的系统安全 ……
B R T
Linux 2.6内核配置与编译
电子系统设计
配置的注意选项
3 Loadable module support --->
[*] Enable loadable module support 应该选择 这个选项可以让你的内核支持模块。一般一些不常用到的 驱动或特性可以编译为模块以减少内核的体积。 [*] Module unloading 应该选择 这个选项可以让你卸载不再使用的模块,如果不选的话你 将不能卸载任何模块 [*] Forced module unloading 强行卸载模块,可以把正在使用中的模快卸载掉。做内核 开发或者驱动开发的时候,有一定的好处。但一般用户不 应该选择。
开放性的理念
设备的驱动
系统要记录和管理设备的存在
安全使用设备
设备是一种特殊的文件 进程如何使用设备,open/close,