一、根目录结构
linux kernel 1.0版本总共有33个目录,559个文件。在根目录下有21个目录和文件。下面是目录树:
.
├── CHANGES //相对于上一版本变化
├── COPYING //版权相关内容
├── CREDITS //重大贡献者名单及连系方式
├── Configure //配置文件,类似Kconfig
├── Makefile //编译规则文件
├── README //内核使用的简要介绍
├── boot //内核启动文件
├── config.in //与.config功能类似,内核模块配置宏清单
├── drivers //驱动相关
├── fs //文件系统相关
├── ibcs //-未实现
├── include //内核库的头文件
├── init //内核初始化相关,main函数
├── ipc //进程间通信
├── kernel //内核主要功能和子系统实现
├── lib //内核自带库文件
├── makever.sh //生成版本的一个脚本
├── mm //内存管理函数
├── net //网络协议栈
├── tools //相关工具
└── zBoot //解压system zImage 的工具
对于一些和源码不相关的内容,比如:COPYING,CREDITS以及未实现目录或功能,比如:ibcs等不会分析介绍。
内核源码是采用makefile文件来进行管理的,而编译工具是gcc工具链,终端运行的是sh程序,而且源码中使用到了shell脚本,所以在Linux相关知识分类中会参考官方文档和其他资料详细学习make,gcc和shell。
二、boot目录
由于林纳斯·托瓦兹最初是想为自己的x86系统编写一个操作系统,所以Linux 1.0只支持在x86架构系统上运行。Linux最开始启动的代码在boot目录下
boot/
├── bootsect.S //由BIOS 加载进内核,将setup和system加载进内存
├── setup.S //由bootsect加载,初始化硬件,建立gdt,idt,获取相关信息等工作
└── head.S //为main函数运行准备环境,准备好之后跳转到main执行
启动阶段使用的是汇编语言,所以在Linux相关知识分类中也会简要介绍一些汇编语言的知识。