Linux内核设计与实现:从内核出发

Linux内核设计与实现:从内核出发

获取内核源码

  1. 登录Linux内核官网 http://www.kernel.org 获取当前Linux内核版本。
  2. 使用Git拉取最新Linux内核版本。

内核源码树

  1. 内核源码树由许多目录组成。

    目录 描述
    arch 特定体系结构的源码
    block 块设备I/O层
    crypto 加密API
    Documentation 内核源码文档
    drivers 设备驱动程序
    firmware 使用某些驱动程序而需要的设备固件
    fs VFS和各种文件系统
    include 内核头文件
    init 内核引导和初始化
    ipc 进程间通信代码
    kernel 像调度程序这样的核心子系统
    lib 通用内核函数
    mm 内存管理子系统和VM
    net 网络子系统
    samples 示例、示范代码
    scripts 编译内核所用的脚本
    security Linux安全模块
    usr 早期用户空间代码
    tool 在Linux开发中有用的工具
    virt 虚拟化基础结构

编译内核

  1. 使用make config命令遍历所有配置项,要求用户选择yesno或者module
  2. 使用make menuconfig命令或make gconfig命令开启图形化界面配置内核。
  3. 使用make defconfig命令使用默认配置。
  4. 内核配置好之后,使用make命令编译内核。

内核开发的特点

  1. 不能访问C库也不能访问标准的C头文件
  2. 必须使用GUN C
  3. 缺乏像用户空间那样的内存保护机制
  4. 难以执行浮点运算
  5. 内核给每个进程只有一个很小的定长堆栈
  6. 必须时刻主要同步和并发
  7. 考虑可移植性