可启动分区和不可启动分区有什么区别?我知道用户无法从标记为不可引导的分区引导系统,但可以从标记为可引导的分区引导系统。
我想了解这些分区标志之间的根本区别。
答案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
.这样做会导致出现下图所示的窗口。
<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 和进程,而忽略这一点。