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


8

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

我想知道这些分区标志之间的根本区别。


1
可能知道什么是Linux引导过程可能会对您有所帮助。ibm.com/developerworks/linux/library/l-linuxboot

@anon_anon嗯,那篇文章无疑是一篇不错的文章,但它有点老了。从2006年开始,讨论GRUB Legacy。我认为事情已经改变了一下与GRUB 2(如果不出意外,他们使用的引导“名称不同阶段在GRUB 2” :)。我试图找到您为GRUB 2链接的文章的DeveloperWorks更新,但没有找到。我最接近的是:迁移到GRUB 2
不合理的约翰

@Rony Ooops。更新了我的答案。
不合理的约翰

Answers:


6

尽管它被否决了……可能是因为有人认为它没有回答问题……我认为@Rony的答案是解释该boot标志含义的一个很好的开始。(我实际上打算从一个与他提供的示例相似的示例开始回答。)

boot在这个时候,我所有人都在寻找一个关于标志如何的答案,这个标志经常被忽略(如@Rony的例子所示),这是硬盘驱动器较小而引导加载程序不够复杂的时期的历史残余。

但是后来我发现这个问题的答案已经说过了:安装发行版时“ Bootable flag”选项是什么?

更重要的是,还有一个指向Boot标志简短文章的链接,其中说:

  • 其主要功能是为指示MS-DOS / MS Windows类型的启动加载器,其分区的引导。在一些情况下,它/ 2000由Windows XP分配活动分区号。‘C:’。

好吧,很尴尬...

当我声称boot旗帜是“ 历史遗迹 ”时,我以为是这种情况,因为显然GRUB不需要使用它。当然,微软也将“ 继续前进 ”。

在这种情况下,通常归因于奥斯卡·王尔德(Oscar Wilde)的那句众所周知的报价太正确了。

看来,通过在Windows操作系统中使用的MBR和PBR(分区引导记录)装载机不要指望boot标志设置正确。

为了测试这一点,我从Windows 8 VM的所有分区中清除了启动标志。(请参见下文。如果您好奇的话,这是完整的BootInfo脚本结果的pastebin的链接)

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引导加载程序还是来自VM的等效BIOS。)

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

Windows无法启动错误窗口

<sigh/>

这种经历使我想知道Microsoft是否仍在使用与MS-DOS和Windows 3.0 / 3.1相同的MBR引导扇区加载程序?


3

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

从笔记本电脑硬盘

# 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

它们没有单个可引导分区,而它们都是可引导的。


2

只是分区表中的一个标志。MBR在分区中搜索该标志,并使用“ boot”标志从该分区运行。


0

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

引导的其余责任在于该扇区中的代码以及该扇区中加载的代码。

GRUB2经常使用其自己的MBR和进程,而忽略此位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.