在 3559 开发板(比如基于 Hi3559 的开发板)中,uBoot、Kernel 和 RootFS 是三部分关键的组成部分,它们在整个系统启动和运行过程中扮演着不同的角色,并且相互之间有着密切的关系。
1. uBoot (Bootloader)
uBoot 是 引导加载程序(Bootloader),是整个启动过程的 第一步,它负责将系统从 硬件 启动到 操作系统,并为操作系统的启动做准备。
作用:
- 硬件初始化:uBoot 在启动时首先初始化硬件,包括 CPU、内存、外设(如存储器、网络接口、串口等)。
- 加载 Kernel:uBoot 的核心任务是从存储设备(如 NAND、eMMC、SD 卡)中加载操作系统内核(Kernel)到内存中,并将控制权交给内核。uBoot 通常会设置内核启动参数、内存位置等信息。
- 启动参数配置:它还负责配置一些系统启动的参数,如内核的启动命令、文件系统路径、网络配置等。
- 引导操作系统:uBoot 通过调用内核启动命令(通常是启动脚本或者直接运行内核镜像),将控制权转交给内核。uBoot 完成任务后,控制权交给内核。
关系:
- uBoot 是启动过程中的第一步,它为 Kernel 提供必要的环境,启动时会加载内核并将控制权交给内核。
2. Kernel (操作系统内核)
Kernel 是操作系统的核心,负责管理硬件资源、提供系统服务、调度任务、驱动硬件、文件系统管理等。对于 Hi3559 开发板来说,Linux Kernel(通常是基于 ARM64 架构的 Linux 内核)将被用来管理硬件和提供操作系统服务。
作用:
- 硬件管理:内核与硬件进行交互,控制处理器、内存、存储设备、网络接口、外设等。
- 驱动程序:内核通过 设备驱动程序(Drivers)来管理和操作硬件。Hi3559 的硬件设备(如视频处理、网络、USB、音频等)需要特定的驱动程序来支持。
- 进程调度与资源管理:内核负责管理 CPU 时间的分配、内存分配、文件系统操作、进程调度等。
- 启动文件系统:内核在启动时会挂载 RootFS,这是操作系统中的根文件系统,它提供了所有用户空间的应用程序和库。
关系:
- uBoot 启动后,内核负责 加载 RootFS 并管理系统资源。内核是操作系统的核心,负责管理硬件和提供应用程序运行环境。
- Kernel 为 RootFS 提供一个基础环境,操作系统的核心功能在这里运行。内核与 RootFS 的关系是,内核提供文件系统管理和启动机制,而 RootFS 提供内核所需要的文件和用户空间程序。
3. RootFS (根文件系统)
RootFS 是 Linux 操作系统中的 根文件系统,它是操作系统中的最基本的文件结构,包含了操作系统和应用程序运行所需的文件、库、配置文件等。RootFS 在启动时被内核挂载,并作为系统的基础文件系统。
作用:
- 操作系统文件:RootFS 存储所有用户空间程序、系统库、设备配置文件等。例如,
/bin
存储可执行文件,/lib
存储共享库,/etc
存储系统配置文件,/home
存储用户数据。 - 文件系统挂载:内核在启动时会挂载 RootFS,它是系统启动后用于存储用户和系统数据的主要文件系统。
- 应用程序与服务:RootFS 包含了启动 Linux 后所需要的所有应用程序和服务。例如,
init
程序(或systemd
)就是在 RootFS 中的/sbin
目录下的一个重要程序,用于启动用户空间的服务。
关系:
- Kernel 会挂载 RootFS,为其提供必要的文件和目录结构。
- RootFS 为用户提供文件存储和操作系统执行所需的文件。内核通过访问 RootFS 上的配置文件和程序来管理整个操作系统。
它们之间的关联:
-
uBoot -> Kernel:uBoot 启动时,首先初始化硬件,并从存储设备(如 eMMC 或 SD 卡)中加载内核(Kernel)。uBoot 完成初始化后,将控制权交给内核。
-
Kernel -> RootFS:当内核启动后,它会挂载 RootFS,这是操作系统的根文件系统,包含了系统的必要文件和用户空间程序。内核通过 RootFS 来管理文件系统,提供用户与程序运行的环境。
-
RootFS -> Kernel:RootFS 包含了内核所需的配置文件、系统服务以及应用程序,启动后,用户通过操作系统中的程序与内核进行交互。根文件系统中的配置文件(如
/etc
目录下的文件)用于配置内核和系统服务。
通俗总结:
- uBoot 是启动过程的第一步,负责硬件初始化并加载内核。
- Kernel(内核) 是操作系统的核心,负责硬件资源的管理,启动时会挂载文件系统(RootFS)。
- RootFS 是 Linux 系统的文件系统,存储着操作系统的程序、库和配置文件,是操作系统的根目录。
整个过程的关系可以比作:
- uBoot 是开车启动引擎,
- Kernel 是驾驶员负责控制汽车的行驶,
- RootFS 是车上的设备和工具,供驾驶员使用,帮助完成任务。
通过这三个组件,Hi3559 开发板 能够成功启动并运行 Linux 操作系统,同时提供用户和应用程序所需的服务和资源。