聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

操作系统启动相关知识

2022-02-20 19:16 浏览: 781723 次 我要评论(0 条) 字号:

BIOS:Basic Input Output System,直译过来就是”基本输入输出系统”。在IBM PC兼容系统上,是一种业界标准的固件接口,BIOS是个人电脑启动时加载的第一个软件。
BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制,此外,BIOS还向作业系统提供一些系统参数,系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

UEFI:Unified Extensible Firmware Interface,统一可扩展固件接口,是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。一般所谓BIOS或legacy就是指传统的BIOS,而UEFI就是指新的引导方式,主要区别就是UEFI更牛B吧。
在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果是在Legacy模式下安装的系统,也只能在legacy模式下进系统。UEFI只支持64位系统且磁盘分区必须为gpt模式,传统BIOS使用Int 13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。此外,Win8,更是进一步优化了UEFI支持,号称可以实现瞬时开机。

EDK2,uEFI Development Kit Ⅱ,是Intel开源的一套符合UEFI标准的实现。EDK2是一个遵循UEFI标准和PI标准的跨平台固件开发环境,EDK2支持多种操作系统,也支持跨平台编译。
官网地址:https://www.tianocore.org/

https://github.com/tianocore

https://github.com/tianocore/edk2

Clover EFI bootloader:一种操作系统引导加载程序,感觉一般和EDK2一起使用。

https://sourceforge.net/p/cloverefiboot/wiki/Home/

https://github.com/Clover-EFI-Bootloader

Coreboot,源自LinuxBIOS(Linux is the BIOS),是一个开源软件项目,旨在替换大多数计算机中专有的BIOS或UEFI。Coreboot会执行一些硬件初始化,然后执行其他引导逻辑。
通过分离硬件初始化和以后的启动逻辑,Coreboot可以从直接运行固件,在闪存中运行操作系统,加载自定义引导程序或实现固件标准(例如PC BIOS服务或UEFI)的专用应用程序扩展。 这使系统仅包含目标应用程序中必需的功能,从而减少了所需的代码量和闪存空间。
Coreboot引入payload概念,在初始硬件初始化后就跳转到payload,payload可以是bootloader,比如SeaBIOS、GRUB 2(Linux常用的bootloader)、OpenBIOS、Tiano Core(一种UEFI的实现),也可以是操作系统,比如Linux、FreeBSD、Windows、OpenSolaris。
官网地址:https://www.coreboot.org/
参考:https://zhuanlan.zhihu.com/p/355985263

LinuxBoot,类似于Coreboot的开源固件,因为Coreboot变得越来越臃肿,其作者做了设计回归,~看参考资料吧~
官网地址:https://www.linuxboot.org/
参考:https://zhuanlan.zhihu.com/p/359046698

SeaBIOS:可以看成是简化版的BIOS,为16位X86 BIOS的开源实现,SeaBIOS可以在模拟器中运行,也可以使用Coreboot在X86硬件上本机运行。
官网地址:https://www.seabios.org/SeaBIOS

Buildroot:是Linux平台上一个构建嵌入式Linux系统的框架,整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。
官网地址:https://buildroot.org/
说明:
boot:和BIOS要完成的功能有很多相似之处,bootloader程序也会先初始化DDR等外设,然后将kernel从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到DDR中,最后启动Linux内核。嵌入式平台中Bootloader的作用相当于PC中的BIOS+Grub/Bootmgr。
kernel:操作系统。
rootfs:kernel内核启动时所mount(挂载)的第一个文件系统,kernel会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行,比如rcS,inittab等。

Busybox:Busybox将众多的UNIX命令集合进一个很小的可执行程序中,可以用来替代GNU fileutils、shellutils等工具集。Busybox中各种命令与相应的GNU工具相比,所能提供的选项比较少,但是也足够一般的应用了。Busybox主要用于嵌入式系统,用来创建根文件系统。
官网地址:https://busybox.net/

参考:

https://baike.baidu.com/item/bios/91424

https://baike.baidu.com/item/%E7%BB%9F%E4%B8%80%E5%8F%AF%E6%89%A9%E5%B1%95%E5%9B%BA%E4%BB%B6%E6%8E%A5%E5%8F%A3/22786233

https://www.zhihu.com/question/21672895

https://www.coreboot.org/

https://www.cnblogs.com/celestia/p/13752372.html

https://blog.csdn.net/jiangwei0512/article/details/103396498

https://blog.csdn.net/liao20081228/article/details/81297143

https://blog.csdn.net/feit2417/article/details/105402076



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复