GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man feststellen, ob das spezifische System eine Boot-Partition benötigt?

Ich kenne die allgemeine Geschichte, warum wir historisch getrennte Boot-Partitionen haben:

Wozu dient die /boot-Partition wirklich?

und auf einem neuen Computer kümmere ich mich vielleicht nicht um einen. Allerdings – ich installiere Linux auf einem 20-jährigen System mit einem Nicht-UEFI-BIOS (das nicht einmal von USB booten kann). Dies wird keine Multi-Boot-Maschine oder irgendetwas Kompliziertes sein:Kein LVM, keine Festplattenverschlüsselung, kein RAID usw.

Wie kann ich feststellen, ob meine spezifische Computer, mit meinem spezifischen HDD, benötigt eine Boot-Partition?

Hinweis:

  • Falls es darauf ankommt – die Distribution, die ich installieren wollte, ist antiX Linux 19.3 i386. Es ruft gparted auf, damit Sie die Partitionen bearbeiten können.
  • Der Bootloader wird natürlich derjenige sein, den meine Distribution installiert, was AFAICT grub2 ist.

Akzeptierte Antwort:

Wenn ein System etwa aus dem Jahr 1994 oder älter ist, ist sein BIOS möglicherweise nicht in der Lage, Festplatten mit einer Cluster/Heads/Sectors-Geometrie größer als 1024/16/63 zu verarbeiten, was auf eine Grenze von 504 MiB (528,4 MB) hinausläuft. Der Grund dafür war ein unbequemes Zusammenspiel zweier Grenzwertsätze:

  • Die klassische nicht erweiterte BIOS INT 13h-Funktion akzeptierte eine maximale Festplattengeometrie von 1024/255/63
  • die IDE (PATA)-Hardware würde eine maximale Geometrie von 65536/16/63 akzeptieren
  • Bisher haben triviale Implementierungen nur die kleinste Grenze in jedem Wert ausgewählt, was zu einer Grenze von 1024/16/63 führte.

Um diese Grenze zu umgehen, wurde im Juli 1994 ein neues BIOS-Feature „Enhanced Disk Drive Services“ (kurz EDD) entwickelt. Es hat Bits zwischen den Cluster- und Heads-Teilen der Geometrie zwischen der BIOS-Darstellung und der IDE-Hardwareschnittstelle verschoben (als „Geometrieübersetzung“ bezeichnet), um dieses Limit zu umgehen.

Einige BIOS-Versionen hatten auch Fehler bei der Festplattengeometrie 4096/16/16 oder ihrer „übersetzten“ Form 1024/64/63.

Bei einer Plattengeometrie von 16383/16/63 (bzw. 1024/255/63 in übersetzter Form) war die maximale Grenze der klassischen C/H/S-Plattenadressierung erreicht:die Dateneingabeformate der BIOS-Funktionen, die diese Art der Plattenadressierung handhaben hatte einfach nicht genug Bits, um größere Festplatten zu handhaben. Dieses Limit wurde bei einer Festplattengröße von 7,87 GiB (8,45 GB) oder genau 16 450 560 Festplattenblöcken erreicht.

Die IDE (PATA)-Spezifikation enthielt eine Funktion, die dies umgehen könnte, aber sie wurde ursprünglich als optionale Funktion angegeben, und nicht alle BIOS haben sie implementiert. Es wurde Logical Block Addressing oder kurz LBA genannt. Als die Festplattengröße zunahm, unterstützten die meisten Festplatten, die nach etwa 1996 veröffentlicht wurden, LBA.

Aber dann wurde ein weiterer BIOS-Fehler entdeckt:Einige BIOS hatten eine fehlerhafte LBA-Implementierung, die fehlschlug, wenn mehr als 26 Bit erforderlich waren, um die Plattenblocknummer darzustellen. Dies betraf einige BIOS-Versionen, die im August 1999 oder älter veröffentlicht wurden, und verursachte eine Begrenzung der Festplattengröße von genau 32 GiB (33,8 GB).

Die 1994 veröffentlichte LBA-Spezifikation hatte nur 28 Bit für die Festplattenblocknummer zugewiesen, was zu einer weiteren Festplattengrößenbeschränkung bei genau 128 GiB Festplattengröße führte. Die im Jahr 2003 veröffentlichte ATA-6-Spezifikation spezifizierte 48-Bit-Versionen der LBA-Festplattenzugriffsfunktionen, die wir derzeit mit modernen SATA-Festplatten verwenden. Es sollte funktionieren, bis die Festplattengröße auf 128 PiB anwächst.

Verwandte:Wie verwendet man „von“ und „bis“ in diesen spezifischen Kontexten?

Es war oft möglich, diese Einschränkungen zu umgehen, indem man im BIOS absichtlich eine falsche Plattengeometrie angab, ihm mitteilte, dass die Platte kleiner als die störende Grenze sei, und /boot machte eine Partition, die vollständig in die gefälschte Geometrie passt.

Manchmal (nach Einführung der LBA-Unterstützung) reichte es aus, dass die Datei /boot Die Partition lag innerhalb der angemessenen Größenbeschränkung.

Der Bootloader würde BIOS-Routinen verwenden, um den Linux-Kernel (und optional eine initrd-Datei) von dieser Partition zu laden, und sobald der Kernel gestartet wurde, würden seine Treiber den Festplattenzugriff übernehmen, das BIOS vollständig umgehen und seine Einschränkungen für das Betriebssystem irrelevant machen lief. An diesem Punkt würde die tatsächliche Festplattengeometrie normalerweise automatisch vom Kernel erkannt werden.

Also, was bedeutet das?

  • Wenn Ihr System ein BIOS-Veröffentlichungsdatum im Jahr 2004 oder älter hat, müssen Sie möglicherweise einen /boot erstellen Partition, die vollständig in die ersten 128 GiB der Festplatte passt, oder das BIOS kann das Betriebssystem möglicherweise nicht starten. (Dies ist normalerweise nur bei Dual-Boot- und anderen Multi-OS-Setups ein Problem.)
  • Wenn Ihr System ein BIOS-Release-Datum vor dem Jahr 2000 hat, möchten Sie vielleicht ein separates /boot erstellen Partition innerhalb der ersten 32 GiB der Festplatte, nur um vor LBA-Implementierungsfehlern sicher zu sein.
  • Wenn das System von 1996 oder älter ist und „LBA“ nirgendwo in den BIOS-Einstellungen erwähnt wird, müssen Sie möglicherweise eine gefälschte Festplattengeometrie angeben und sicherstellen, dass Ihr /boot Partition befindet sich sowohl innerhalb der gefälschten Geometrie als auch innerhalb der ersten 7,87 GiB der Festplatte.
  • alles älter als das:„Es gehört zu einem Museum.“ 🙂 Aber wenn es sein muss, siehe oben für die entsprechenden Limits.

Wenn das BIOS-Veröffentlichungsdatum eines Systems nur kurz nach dem Datum einer bestimmten Spezifikationsaktualisierung liegt, kann es die aktualisierte Spezifikation haben oder auch nicht:Nach der Veröffentlichung jeder Spezifikationsaktualisierung dauerte es einige Zeit, bis die neuen Implementierungen allgegenwärtig wurden.


Linux
  1. Wie kopiert man das Partitionslayout einer ganzen Festplatte mit Standardwerkzeugen?

  2. Wie überspringe ich das Grub-Menü auf einem Dual-Boot-System?

  3. Wie wird die Windows-Partition beim Booten automatisch bereitgestellt?

  4. Wie füge ich dem Grub2-Menü einen neuen Boot-Eintrag für das Betriebssystem hinzu?

  5. Auf welcher Partition ist der Bootloader installiert?

So löschen Sie eine Partition unter Linux

So verschlüsseln Sie eine Partition unter Linux

Wie verschiebt man die Ext4-Partition vor die Boot-Partition?

So erhalten Sie einen Datenträgernamen, der eine bestimmte Partition enthält

Wie kann ich feststellen, welcher Prozess einen bestimmten Port unter Linux geöffnet hat?

Wie kann ich feststellen, ob der Server Hot-Swap-Laufwerke unterstützt?