如题大概,系统启动过程中,比如计算机X86系统分为Boot和Loader两个过程,由BIOS在启动盘上寻找Boot,再由Boot加载Loader,最后由Loader加载内核,,
1) 这个过程为什么会分为Boot和Loader两个步骤?原因何在?
2) Boot和Loader的具体作用有什么不同?完成哪些事?
3) 也有的是Boot直接加载内核,即BootLoader,这里二者为什么又可以合二为一,这样做需要具备什么条件,启动介质容量够大?还是启动介质的特点(寻址)?
嵌入式系统也是这样的,uboot分SPL和真正的uboot两个部分
主要原因是第一个阶段的bootloader是有初始化内存的功能的,包括初始化MMU,初始化连接内存芯片IO,以及时钟的功能,要等内存起来之后,才能将第二阶段的东西读到内存里面去执行
要合二为一,除非片上的RAM足够大,或者整个boot代码的体积很小,或者boot代码放在nor flash上面
这样处理可以更方便的加载不同的内核,实现不同的功能。
需要注意现在的CPU都是有多个运行级别的,有些运行级别只能在启动的时候调整,如果加载程序完全固定,就只能运行在一个级别,所以分阶段加载可以方便类似的调整。