Различие между загрузочными и незагрузочными разделами

У меня нет опыта с ним, но необходимо, вероятно, использовать Studio SuSe.

8
04.05.2012, 22:29
4 ответа

Хотя за это вниз проголосовали... возможно, потому что кто-то думал, что это не отвечало на вопрос... Я думаю, что ответ @Rony является хорошим началом при объяснении что boot флаг о. (Я на самом деле планировал начать свой ответ с примера, подобного тому, который он обеспечил.)

Я был все установлен околачиваться от ответа о как boot флаг, в данный момент, часто игнорируется (поскольку пример @Rony показывает), исторический остаток с периода, когда жесткие диски были меньшего размера, и загрузчики были намного менее сложными.

Но затем я обнаружил, что это было уже сказано в этом ответе на этот вопрос: Какова опция "Bootable flag" при установке дистрибутива?

Что больше была также ссылка на короткую статью о Флаге начальной загрузки, который говорит

  • "Его первичная функция состоит в том, чтобы указать к загрузчику типа Windows MS-DOS/MS который раздел загрузиться. В некоторых случаях это используется Windows XP/2000, чтобы присвоить активному разделу букву "C":".

Ну, это является смущающим...

Когда я утверждал что boot флаг был "историческим остатком", я предполагал, что это имело место, потому что ясно GRUB не имел никакой потребности использовать его. Конечно, Microsoft также "шла бы дальше".

Известная кавычка, обычно приписываемая Oscar Wilde, оказалась слишком верной в этом экземпляре.

Кажется, что MBR и PBR (Загрузочная запись Раздела) загрузчики, используемые операционными системами Windows, ДЕЙСТВИТЕЛЬНО ожидают boot флаг, который будет установлен правильно.

Для тестирования этого, я очистил флаг начальной загрузки от всех разделов Windows 8 VM. (См. ниже. Если Вам любопытно, вот ссылка на 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 или эквивалента VM BIOS.)

Только для наблюдения, что произошло бы я также установил boot флаг на "неправильном" разделе, /dev/sda2 вместо /dev/sda1. Выполнение, которое привело к окну, показанному в изображении ниже.

Windows failed to start error window

<sigh/>

Этот опыт заставляет меня задаться вопросом, использует ли Microsoft все еще тот же загрузчик загрузочного сектора MBR, который они использовали для MS-DOS и Windows 3.0/3.1?

6
27.01.2020, 20:11

Я знаю, что пользователь не может загрузить систему от раздела, отмеченного незагрузочный, и может от одного отмеченного загрузочного.

От жесткого диска ноутбука

# 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
27.01.2020, 20:11

Просто флаг в таблице разделов. Поиск MBR флаг в разделах и выполнении от раздела с флагом "начальной загрузки".

2
27.01.2020, 20:11

При использовании традиционной Microsoft MBR код в MBR определяет, как сделать диск ввод-вывод и проходит разделы для наблюдения, какой отмечен с загрузочным флагом. Только один раздел должен быть так отмечен. Это затем проверяет первый сектор того раздела, и если это отмечено соответственно, это читает тот сектор и передает управление ему. Если я помню правильно, та проверка состоит в том, что сектор заканчивается 0x55 0xaa.

Остальная часть ответственности за начальную загрузку падений к коду в том секторе и коду, который это, в свою очередь, загружает.

GRUB2 очень часто использует свой собственный MBR и процесс, игнорируя этот бит.

0
27.01.2020, 20:11

Теги

Похожие вопросы