linux - 为什么 BIOS 不直接加载 Linux 内核 - 为什么是 MBR 和所有那些麻烦?

标签 linux operating-system kernel bios mbr

我最近了解了 Linux 的启动过程。我不禁想知道为什么我们要在 BIOS 之后经历访问 MBR 的麻烦,以便那里的指令可以反过来将内核加载到 RAM 中。

为什么是中间人 - 为什么 BIOS 不直接加载内核?

最佳答案

引导被设计为一个多阶段过程。每个阶段只知道足以加载下一阶段。这使每个阶段都变得简单,并使升级尽可能轻松(想象一下在安装新操作系统时需要重新编程您的 BIOS)。

也许更重要的是,它使整个过程尽可能与平台无关。您可以用新平台或实现替换链中的任何步骤,其余过程应该仍然有效。如果 BIOS 直接加载操作系统,它必须了解并能够解释文件系统、引导加载程序、操作系统在磁盘上存储组件的方式、需要加载哪些组件等。这需要完成对于每个操作系统、文件系统、引导加载程序等。如果创建了一个新的文件系统(例如),除非你重新编程你的 BIOS 以理解它,否则你将无法使用它。由于大多数 BIOS 源代码不公开,这将使开发文件系统和操作系统变得极其困难。

另一件需要考虑的事情是,虽然升级 BIOS 以获得对新事物的支持是很有可能的,但这是人们尽量避免的事情。如果您在重新刷新 BIOS 时遇到任何问题,您很有可能会以损坏且无法恢复的系统告终。避免需要刷新 BIOS 的最简单方法是保持它非常简单,以至于它非常通用以至于没有任何东西需要升级(尽管有错误修复)。

关于linux - 为什么 BIOS 不直接加载 Linux 内核 - 为什么是 MBR 和所有那些麻烦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12521277/

相关文章:

linux - 什么时候需要在外壳程序中的命令参数周围使用引号?

java - 一个应用程序(可执行 jar)是否需要权限来监听 centos 上的端口?

c++ - 如果编译后的源代码特定于编译时所使用的硬件,我们该如何分发?

c++ - 等待信号量的进程调度

linux - 超时连接到 http ://br. archive.ubuntu.com/ubuntu

c -/net/ipmr.c中的MFC_HASH

c++ - mmap 通过 PCI 将 VME 总线覆盖到用户空间内存中?

linux-kernel - 中断上下文和异常上下文有什么区别?

linux - 可以在内核中使用 OpenGL 吗?

Linux + Apache检测每个Vhost的连接计数?