[摘]嵌入式linux系统的开启

来源:互联网 发布:js怎么隐藏div 编辑:程序博客网 时间:2024/05/28 05:19

  在各种体系结构平台上,多数内核映像都采用压缩格式(MIPS 平台例外,它的映像采用非压缩格式) 。Linux 系统的一般启动过程通常划分为内核引导、内核启动和应用程序启动3 个阶段。
  第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。这部分的工作一般由目标板的引导程序和内核映像的自引导程序完成。不同体系结构的目标板引导的方式和程序都有差异。Decompress Kernel --> Call Kernel,这和bootloader有关。
  第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。这里是 Linux 内核通用的启动函数入口。所有体系结构的目标板都顺序调用统一的函数,尽管有些函数的代码实现是跟体系结构相关的。Initialize hardware, Initialize device driver, Mount root filesystem, Execute /sbin/init
  第三阶段是执行用户空间的 init 程序,完成系统初始化、启动相关服务和管理用户登录等工作。这个阶段可以提供给用户交互界面,例如:Shell 命令行或者图形化的窗口界面。也可以自动执行应用程序。login prompt, Start network service, Start X-Windows

  在 Linux 系统启动过程中,有两个关键点。一个是内核映像的解压启动;另一个是根文件系统的挂接。目标板处理器上电或者复位后,首先执行引导程序(Bootloader) ,初始化内存等硬件,然后把压缩的内核映像加载到内存中,最后跳转到内核映像入口执行。这样就把控制权完全交给内核映像了。接下来内核映像继续执行, 完成自解压或者重定位,然后跳转到解压后的内核代码入口。这部分主要是 Linux 内核的自引导程序,又叫作 Linux bootloader,包含在内核源代码中。这部分引导代码相对简单,不可能替代目标板上的 Bootloader。
  因为文件和应用程序都要存储在文件系统中,所以 Linux 离不开文件系统。在内核启动到最后,必须挂接一个根文件系统。从文件系统的目录下找到 init 程序,启动 init 进程。

来自:《嵌入式 Linux 系统开发技术详解——基于 ARM》

我同意网上的一些书评,认为这本书写得比较杂乱,似讲义。不适合用作为入门或者学习的。适合于正在看其他相关的书,用来辅助阅读,以及对嵌入式Linux系统比较了解的人查阅。换句话说不是本好书,但值得翻翻。

原创粉丝点击