Linux内核浅分析

早期(1992年左右)Linux内核源码

当我们将linux-0.11.tar.gz解压后,内核源代码

近期(2019年左右)Linux内核源码

我们将linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2解压,内核源代码

两张图片最明显的区别可能就在于uboot部分。早期Linux的引导程序也在内核源码中,而现在的内核源码中并没有引导程序(boot loader)。

bootsect.s主要作用是将setup模块(由setup.s编译)从磁盘加载到内存。setup程序的主要作用是利用ROM BIOS中断读取机器系统数据,并且跳到head.s程序继续运行。中间有一些内存地址相关的知识比较复杂。

bootsect.s和setup.s所起的作用是和现在boot loader的作用是几乎差不多的。而head.s则是和现在Linux内核arch/arm/kernel/head.S作用一致。

之后Linux内核的分析大同小异。

在Linux内核init目录下有main.c文件,在这里我们进行一系列初始化,挂载根文件系统,进入用户态。