可启动分区和不可启动分区之间的区别

可启动分区和不可启动分区之间的区别

可启动分区和不可启动分区有什么区别?我知道用户无法从标记为不可引导的分区引导系统,但可以从标记为可引导的分区引导系统。

我想了解这些分区标志之间的根本区别。

答案1

虽然它被否决了......可能是因为有人认为它没有回答问题......我认为@罗尼的回答是解释旗帜含义的良好开端boot。 (我实际上打算用一个与他提供的例子类似的例子来开始我的回答。)

我已经准备好漫无目的地回答这个问题了boot,在这个时间点上,这个标志是一个经常被忽视的(正如@Rony的例子所示)历史遗留物,来自硬盘驱动器较小且引导加载程序远没有那么复杂的时期。

但后来我发现这已经在这个答案对于这个问题:安装发行版时的“可启动标志”选项是什么?

更重要的是,还有一个链接关于启动标志的简短文章其中说

  • 它的主要功能是向 MS-DOS/MS Windows 类型的引导加载程序指示要引导的分区。在某些情况下,Windows XP/2000 使用它来为活动分区分配字母“C:”。

出色地,很尴尬...

当我声称这面boot旗帜是“历史遗迹“我假设情况确实如此,因为显然 GRUB 不需要使用它。当然 Microsoft 也会有”继续前进”。

这句通常被认为是奥斯卡·王尔德的名言在这种情况下被证明是太正确了。

Windows 操作系统使用的 MBR 和 PBR(分区引导记录)加载程序似乎期望boot标志被正确设置。

为了测试这一点,我清除了 Windows 8 虚拟机的所有分区的启动标志。 (见下文。如果您好奇,这里有一个指向 Pastebin 的链接完整的 BootInfo 脚本结果

Drive: sda     
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048       718,847       716,800   7 NTFS / exFAT / HPFS
/dev/sda2             718,848    52,426,751    51,707,904   7 NTFS / exFAT / HPFS

当我清除两个分区的标志时,我FATAL: INT18: BOOT FAILURE在尝试启动时收到错误消息。 (我不确定这是否来自 Windows MBR 引导加载程序或虚拟机的 BIOS 等效项。)

为了看看会发生什么,我还在boot“错误”分区上设置了标志,/dev/sda2而不是/dev/sda1.这样做会导致出现下图所示的窗口。

Windows 无法启动错误窗口

<sigh/>

这次经历让我想知道微软是否仍在使用他们用于 MS-DOS 和 Windows 3.0/3.1 的相同 MBR 引导扇区加载程序?

答案2

我知道用户无法从标记为不可引导的分区引导系统,但可以从标记为可引导的分区引导系统。

从笔记本电脑硬盘

# fdisk  -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x47b94fbe

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     1999999      998976   83  Linux
/dev/sda2         2000000     9999999     4000000   82  Linux swap / Solaris
/dev/sda3        10000000    89999999    40000000   83  Linux
/dev/sda4        90000000   976773167   443386584   83  Linux

从可启动 USB Linux

# fdisk  -l /dev/sdb

Disk /dev/sdb: 8004 MB, 8004304896 bytes
247 heads, 62 sectors/track, 1020 cylinders, total 15633408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a5395

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152    15632383     6767616   83  Linux

它们没有单个可启动分区,但它们都是可启动的。

答案3

只是分区表中的一个标志。 MBR 在分区中搜索标志并从带有“boot”标志的分区运行。

答案4

使用传统的 Microsoft MBR 时,MBR 中的代码会识别如何执行磁盘 I/O,并遍历分区以查看哪个分区标有可启动标志。只有一个分区应如此标记。然后,它检查该分区的第一个扇区,如果标记正确,则读取该扇区并将控制权转移给它。如果我没记错的话,该检查是该扇区以 0x55 0xaa 结尾。

引导的其余责任由该扇区中的代码及其加载的代码承担。

GRUB2 经常使用自己的 MBR 和进程,而忽略这一点。

相关内容