use*_*926 -1 boot grub2 windows bios bootloader
因此,据我所知,BIOS 是固件,即内置于硬件中且独立于操作系统的软件。
但是我们有启动操作系统的引导加载程序。
但是我们有像 GRUB 这样的引导加载程序,但似乎也是以 Linux 为中心的引导加载程序?
我有点困惑为什么会这样。每个 BIOS 都使用 GRUB 吗?所有硬件都带有内置引导加载程序吗?像 GRUB 这样的东西能启动 Windows、Linux、Mac 等吗?
我试图了解我们从独立于操作系统到依赖于操作系统,从硬件/固件方面转向“我们安装的任何操作系统”方面的分界点。
编辑:
试图用另一种方式来表达。
假设我走进一家商店并购买了一台预制的 Windows 笔记本电脑。我把它递给你,你检查它然后说,“好吧,它正在使用这个 BIOS、这个引导加载程序、这个操作系统。”
我说“很酷。现在你能擦掉 Windows 并在它上面安装 Ubuntu 吗?我希望这台笔记本电脑是一台 Ubuntu 笔记本电脑,而不是 Windows。”
这可能吗?您需要更改引导加载程序吗?你怎么知道要把它改成什么?如果我给你一台 Macbook Pro 会怎样?我们可以擦除它并使其成为 Windows 计算机吗?我们可以擦除它并使其成为 Ubuntu 计算机吗?
是什么决定了这里的兼容性和必要性?出售笔记本电脑时,是否会根据操作系统预装引导加载程序?什么决定了我们可以根据我们想要的操作系统将其更改为什么?首先是什么决定了我们可以运行什么操作系统?
我试图围绕硬件、BIOS、引导加载程序和操作系统之间的关系进行思考。
请不要混淆步骤是:
基本步骤是:
1. The BIOS/UEFI locates and executes the boot program or bootloader.
2. The bootloader loads the kernel.
3. The kernel starts the `init` process (with a PID of 1).
4. init manages system initialization, using conventional 'sysvinit' startup scripts, or
using 'Upstart' or systemd.
Run Code Online (Sandbox Code Playgroud)
当所述独立于OS的步骤结束GRUB
由加载BIOS/UEFI
。它的工作是加载任何bootloader
存在的东西。
来自 bodhi.zazen 给出的链接:
GRUB 被设计为与多重引导规范兼容,该规范允许 GRUB 引导许多版本的 Linux 和其他免费操作系统;它还可以链式加载专有操作系统的引导记录?视窗。
现在,如果您要擦除 Windows,所有硬件都不会预先安装 GRUB,那么您将安装 GRUB 来帮助boot up
Ubuntu。它通常存储在称为MBR
主引导记录的部分中,BIOS/UEFI
将在其中查找。MBR512MB
大小差不多。
MBR
--------- -----
| |
| |
| | 446 bytes --- GRUB program code.
| |
| |
| |
| -----
512 | ----- ----------
bytes | | Partition 1 - 16 bytes |
| |---- |
| | Partition 2 - 16 bytes <----Partiton Table |
| |---- |
| | Partition 3 - 16 bytes |--> 64byts
| |---- |
| | Partition 4 - 16 bytes { 0x55AA } -> Magic Number |
| | |
--------- ----- ---------|
Run Code Online (Sandbox Code Playgroud)
你问:
“什么决定了兼容性和支持?硬件?引导程序?我不明白它们之间的关系”
该kernel
之间的接口hardware
和user
并确定OS
将与你的内核工作,它是建立在工作或交互与你hardware
。如果引导加载程序加载了kernel
并且这不适用于您hardware
的加载程序,那么您的加载程序会抱怨,但由它kernel
来确定它是否hardware
与其中找到的已编译模块匹配良好。
Windows 有自己的bootloader
名称EFI bootloader
,GRUB
适用于基于 Linux 的系统而不是 Windows。看看这个不同的引导加载程序。
请注意,UEFI
(统一可扩展固件接口)是较新系统上的较新类型 BIOS:
统一可扩展固件接口 (UEFI) 是一种规范,用于定义操作系统和平台固件之间的软件接口。UEFI 取代了最初存在于所有 IBM PC 兼容个人计算机中的基本输入/输出系统 (BIOS) 固件接口,大多数 UEFI 固件实现为 BIOS 服务提供了传统支持。
进一步阅读:
https://opensource.com/article/17/2/linux-boot-and-startup
https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
归档时间: |
|
查看次数: |
4507 次 |
最近记录: |