Bootstrap

Hi3559开发基础知识积累:⑤3559开发板中的uboot | kernel | rootfs作用以及关联

3559 开发板(比如基于 Hi3559 的开发板)中,uBootKernelRootFS 是三部分关键的组成部分,它们在整个系统启动和运行过程中扮演着不同的角色,并且相互之间有着密切的关系。

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 并管理系统资源。内核是操作系统的核心,负责管理硬件和提供应用程序运行环境。
  • KernelRootFS 提供一个基础环境,操作系统的核心功能在这里运行。内核与 RootFS 的关系是,内核提供文件系统管理和启动机制,而 RootFS 提供内核所需要的文件和用户空间程序。

3. RootFS (根文件系统)

RootFS 是 Linux 操作系统中的 根文件系统,它是操作系统中的最基本的文件结构,包含了操作系统和应用程序运行所需的文件、库、配置文件等。RootFS 在启动时被内核挂载,并作为系统的基础文件系统。

作用
  • 操作系统文件:RootFS 存储所有用户空间程序、系统库、设备配置文件等。例如,/bin 存储可执行文件,/lib 存储共享库,/etc 存储系统配置文件,/home 存储用户数据。
  • 文件系统挂载:内核在启动时会挂载 RootFS,它是系统启动后用于存储用户和系统数据的主要文件系统。
  • 应用程序与服务:RootFS 包含了启动 Linux 后所需要的所有应用程序和服务。例如,init 程序(或 systemd)就是在 RootFS 中的 /sbin 目录下的一个重要程序,用于启动用户空间的服务。
关系
  • Kernel 会挂载 RootFS,为其提供必要的文件和目录结构。
  • RootFS 为用户提供文件存储和操作系统执行所需的文件。内核通过访问 RootFS 上的配置文件和程序来管理整个操作系统。

它们之间的关联

  1. uBoot -> Kernel:uBoot 启动时,首先初始化硬件,并从存储设备(如 eMMC 或 SD 卡)中加载内核(Kernel)。uBoot 完成初始化后,将控制权交给内核。

  2. Kernel -> RootFS:当内核启动后,它会挂载 RootFS,这是操作系统的根文件系统,包含了系统的必要文件和用户空间程序。内核通过 RootFS 来管理文件系统,提供用户与程序运行的环境。

  3. RootFS -> Kernel:RootFS 包含了内核所需的配置文件、系统服务以及应用程序,启动后,用户通过操作系统中的程序与内核进行交互。根文件系统中的配置文件(如 /etc 目录下的文件)用于配置内核和系统服务。


通俗总结

  1. uBoot 是启动过程的第一步,负责硬件初始化并加载内核。
  2. Kernel(内核) 是操作系统的核心,负责硬件资源的管理,启动时会挂载文件系统(RootFS)。
  3. RootFS 是 Linux 系统的文件系统,存储着操作系统的程序、库和配置文件,是操作系统的根目录。

整个过程的关系可以比作:

  • uBoot 是开车启动引擎,
  • Kernel 是驾驶员负责控制汽车的行驶,
  • RootFS 是车上的设备和工具,供驾驶员使用,帮助完成任务。

通过这三个组件,Hi3559 开发板 能够成功启动并运行 Linux 操作系统,同时提供用户和应用程序所需的服务和资源。

;