Unterschied zwischen bootfähigen und nicht bootfähigen Partitionen


8

Was ist der Unterschied zwischen einer bootfähigen und einer nicht bootfähigen Partition? Ich weiß, dass ein Benutzer ein System nicht von einer Partition booten kann, die als nicht bootfähig markiert ist, und von einer Partition, die als bootfähig markiert ist.

Ich möchte die zugrunde liegenden Unterschiede zwischen diesen Partitionsflags kennen.


1
Vielleicht hilft es Ihnen, zu wissen, was der Linux-Boot-Prozess ist. ibm.com/developerworks/linux/library/l-linuxboot

@anon_anon Äh, dieser Artikel ist zwar zweifellos ein guter, aber ein bisschen alt. Es ist aus dem Jahr 2006 und diskutiert GRUB Legacy. Ich denke, die Dinge haben sich mit GRUB 2 ein wenig geändert. (Wenn nichts anderes, verwenden sie unterschiedliche Namen für die Boot- " Stufen " in GRUB 2 :). Ich habe versucht, ein DeveloperWorks-Update des Artikels zu finden, den Sie für GRUB 2 verlinkt haben, habe dies jedoch nicht getan. Am nächsten konnte ich kommen: Migrieren Sie zu GRUB 2 .
irrational John

@ Ron Ups. Meine Antwort wurde aktualisiert.
irrational John

Antworten:


6

Obwohl es abgelehnt wurde ... möglicherweise, weil jemand dachte, es würde die Frage nicht beantworten ... Ich denke, die Antwort von @ Rony ist ein guter Anfang, um zu erklären, worum es bei der bootFlagge geht. (Ich hatte eigentlich vor, meine Antwort mit einem Beispiel zu beginnen, das dem von ihm angegebenen ähnlich war.)

Ich war bereit, eine Antwort darauf zu finden, wie die bootFlagge zu diesem Zeitpunkt ein oft ignorierter (wie das Beispiel von @ Rony zeigt) historischer Überrest aus einer Zeit ist, in der Festplatten kleiner und Bootloader viel weniger ausgefeilt waren.

Aber dann stellte ich fest, dass dies bereits in dieser Antwort auf diese Frage gesagt wurde : Was ist die Option "Bootable Flag" bei der Installation einer Distribution?

Außerdem gab es einen Link zu einem kurzen Artikel über das Boot-Flag, der besagt

  • " Seine Hauptfunktion besteht darin, einem Bootloader vom Typ MS-DOS / MS Windows anzuzeigen, welche Partition gestartet werden soll. In einigen Fällen wird sie von Windows XP / 2000 verwendet, um der aktiven Partition den Buchstaben" C: "zuzuweisen. "

Nun, das ist peinlich ...

Als ich behauptete, die bootFlagge sei ein " historischer Überrest ", ging ich davon aus, dass dies der Fall war, da GRUB sie eindeutig nicht verwenden musste. Sicherlich würde Microsoft auch haben „ weitergezogen “.

Das bekannte Zitat, das normalerweise Oscar Wilde zugeschrieben wird, erwies sich in diesem Fall als zu wahr.

Es scheint , dass die MBR und PBR (Partition Boot Record) Lader von den Windows - Betriebssystemen verwendet DO erwarten , dass die bootFahne richtig eingestellt werden.

Um dies zu testen, habe ich das Startflag von allen Partitionen einer Windows 8-VM gelöscht. (Siehe unten. Wenn Sie neugierig sind, finden Sie hier einen Link zum Pastebin des vollständigen BootInfo Script-Ergebnisses. )

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

Als ich das Flag von beiden Partitionen gelöscht FATAL: INT18: BOOT FAILUREhabe, wurde beim Start eine Fehlermeldung angezeigt. (Ich bin nicht sicher, ob dies vom Windows MBR-Bootloader oder dem VM-Äquivalent eines BIOS stammt.)

Um zu sehen, was passieren würde, setze ich stattdessen auch das bootFlag auf die "falsche" Partition . Dies führte zu dem im Bild unten gezeigten Fenster. /dev/sda2/dev/sda1

Windows konnte das Fehlerfenster nicht starten

<sigh/>

Aufgrund dieser Erfahrung frage ich mich, ob Microsoft immer noch denselben MBR-Bootsektor-Loader verwendet, den sie für MS-DOS und Windows 3.0 / 3.1 verwendet haben.


3

Ich weiß, dass ein Benutzer ein System nicht von einer Partition booten kann, die als nicht bootfähig markiert ist, und von einer Partition, die als bootfähig markiert ist.

Von der Laptop-Festplatte

# 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

Von bootfähigem 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

Sie haben keine einzige bootfähige Partition, während sie alle bootfähig sind.


2

Nur eine Flagge in der Partitionstabelle. Der MBR durchsucht das Flag in den Partitionen und führt die Partition mit dem Flag "boot" aus.


0

Bei Verwendung des herkömmlichen Microsoft-MBR gibt der Code im MBR an, wie Festplatten-E / A ausgeführt werden sollen, und durchläuft die Partitionen, um festzustellen, welche mit dem Boot-Flag gekennzeichnet sind. Es sollte nur eine Partition so markiert sein. Anschließend wird der erste Sektor dieser Partition überprüft. Wenn er entsprechend markiert ist, liest er diesen Sektor und überträgt die Kontrolle an ihn. Wenn ich mich richtig erinnere, ist diese Überprüfung, dass der Sektor mit 0x55 0xaa endet.

Der Rest der Verantwortung für das Booten liegt beim Code in diesem Sektor und dem Code, den er wiederum lädt.

GRUB2 verwendet sehr oft einen eigenen MBR und Prozess und ignoriert dieses Bit.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.