Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软、硬件化境,为最终调用操作系统内核做好准备。
对于嵌入式系统,Bootloader是基于特定硬件平台来实现的,因此,几乎不可能为所有的嵌入式系统都建立一个通用的Bootloader。不同的处理器构架有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于两块不同的嵌入式主板而言,即使它们使用同一种处理器,想要让运行在一块主板上的Bootloader程序也能运行在另一块主板上,一般也都需要修改Bootloader的源代码。
Linux文件I/O系统
Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建:第一层是虚拟文件系统,第二层是各种不同的具体文件系统。
虚拟文件系统就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分,它位于用户程序和具体的文件系统之间。它对用户程序提供了标准的文件系统调用接口,对具体的文件系统,它通过一系列的对不同文件系统公用的函数指针来实际调用具体的文件系统函数,完成实际的各有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,虚拟文件系统就对用户屏蔽了底层文件系统的实现细节和差异。
虚拟文件系统 不仅可以对具体文件系统的数据结构进行抽象,以一种统一的数据结构进行管理,并且还可以接受用户层的系统调用,如:open()、read()、write()、stat()、link()等。此外,它还支持多种具体文件系统之间的相互访问,接受内核其他子系统的操作请求,例如,内存管理和进程调度。