Am 22.02.20 um 23:31 schrieb Georg Schwarz:
> Ich habe in einem alten Laptop einen SD auf IDE-Adapter eingebaut und
> eine 32 GB SD-Karte eingelegt.
> Ich kann darauf zwar problemlos Linux (z.B. Ubuntu) installieren, aber
> bei einem Kaltstart bootet der Laptop nicht mehr davon. Reboot direkt
> nach der Installation geht.
Dann überschreibt irgendeiner den Bootblock.
Das hört sich für mich nach einem Bug an. Fragt sich nur wo.
Oder aber das BIOS speichert sich, solange es läuft, das Mapping noch
irgendwo und kann diese Information nach dem Kaltstart nicht mehr
korrekt rekonstruieren.
> Wenn ich FreeBSD installiere, geht ein Booten auch dauerhaft.
> Es scheint daran zu liegen, dass der Linux-Kernel eine andere
> Vorstellung von der Plattengeometrie hat als das BIOS bzw. als FreeBSD.
> FreeBSD zeigt mir (CHS) 61915/16/63, während Linux 3884/255/63 meint.
> Letzteren Wert erhalte ich auch mit sfdisk -g unter Linux.
> Gibt es eine Möglichkeit, unter Linux die Geometrie zu erzwingen?
>
> Die Option -C, die in
>
https://dark.ca/2009/06/22/force-disk-geometry-with-sfdisk/
> vorgeschlagen wird, scheint es in sfdisk nicht mehr zu geben.
> cfdisk scheint auch keine -g-Option mehr zu haben.
> Setzen der Parameter im Expertenmodus von fdisk scheint auch nichts zu
> bringen.
> Das BIOS des Laptops bietet leider keine Möglichkeit, die Gemetrie
> explizit einzustellen.
Da nennt sich so etwas möglicherweise nur LBA-Mapping oder so. Das
sollte man aktivieren.
Tatsächlich kann man aber auch Linux von alternativen Mappings starten.
Das habe ich früher bei SSDs immer gemacht, um das Alignment sauber zu
halten. Allerdings funktioniert das nur dann zuverlässig, wenn man dabei
unter der 1023 Zylinder-Grenze bleibt. Denn nicht jeder kommt mit der
Kombination >1024 Zylinder (also inkonsistente CHS-Daten, weil die haben
nur 10 Bit) /ohne/ LBA Mapping (/255/63) klar.
Das wiederum erreicht man, indem man /boot an den Anfang der Platte legt
und so klein macht, dass 1023 Zylinder beim gewünschten Mapping reichen.
Wenn der Kernel erst mal übernommen hat, ist das Mapping egal.
Damit ist man aber bei der alten 512 MB-Grenze. Denn mehr geht mit 16/63
Mapping nicht. Dummerweise genügt das nicht, um das Alignment in Ordnung
zu bringen, denn standardmäßig beginnt die erste Partition bei 0/1/0,
was LBA 63 wäre. :-(
Deshalb habe ich in den Anfangszeiten der SSDs immer ein Custom-Mapping
mit /16/32 (gibt maximal 256MB) oder auch /128/32 verwendet. Damit sind
dann alle Adressen auf Zweierpotenzen. Theoretisch würden wahrscheinlich
auch Werte wie /255/32 funktionieren, aber das habe ich nie getestet.
Heute ist das normalerweise alles Banane, weil alle modernen Systeme
üblicherweise bei Sektor 2048 anfangen, egal, was das für einen krummen
CHS-Wert gibt. Nur für Uralt-Systeme und SD-Karten, würde ich die alten
Tricks durchaus wieder auspacken wollen. Es kann gut sein, dass alte
BIOSe mit Partitionen, die nicht bei */*/0 beginnen, nicht rund laufen.
Zumindest ist das mal ungetestet.
Mit Linux fdisk bekommt man die von mir vorgeschlagenen Geometrien
definitiv angelegt. Es kann ein paar Warnungen geben, weil es trotz
>1024 Zylinder kein gescheites LBA-Mapping ist, aber es funktioniert
problemlos. Mein alter VM-Server lief jahrelang so. Allerdings konnte
man da im BIOS die Plattengeometrie noch einstellen. Ich bin aber nicht
mehr sicher, ob ich das genutzt hatte.
Wenn das BIOS keinerlei Möglichkeiten zur Geometrieeinstellung bietet,
dann muss man mit der automatischen Erkennung leben. Die hat als
Datenbasis aber nur die Partitionstabelle. Mutmaßlich werden dabei die
Maximalwerte für CHS aus der Partitionsende-Einträgen genommen. Wenn man
die Partitionen jetzt alle sauber auf Alignment trimmt, kann es
vorkommen, dass da niemals der echte Maximalwert drin steht. Auch
deshalb würde ich nicht an dem ungeschriebenen Gesetz rütteln, dass
Partitionen immer auf Sektor 0 von Kopf 0 oder 1 (bei der ersten und bei
extended) beginnen und auf jeweils den Maximalwerten enden.
Das FreeBSD Mapping umgeht diese Probleme und ist maximal Kompatibel zu
uralten BIOS-Versionen (weil es auch nicht mehr als 16 Köpfe nutzt).
Allerdings geht dabei das Alignment vor die Hunde. Bei Festplatten ist
das egal, aber bei einer SD-Karte (also billigster Chinaschrott für
wenig Schreibzyklen) würde ich das definitiv lassen. Die Dinger leben
auch mit korrektem Mapping oft nicht sehr lange, wie man an den Raspis
mühelos erkennen kann.
Marcel