Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linux bootet nicht von SD-Karte; falsche Geometrie korrigieren?

51 views
Skip to first unread message

Georg Schwarz

unread,
Feb 22, 2020, 5:31:10 PM2/22/20
to
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.

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.

olaf

unread,
Feb 23, 2020, 5:45:03 AM2/23/20
to
Georg Schwarz <georg....@freenet.de> wrote:

>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.

Interessant. Ich hab hier auch noch einen MP3-Player mit IDE nach CF
Adapter der auch _manchmal_ zickig bootet.

>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.

Das glaube ich so nicht weil dieses Geometriezeugs IMHO nur noch fuer
Betriebsysteme aus Uropas Bastelkiste ist. Alles andere nutz doch
heute eine direkte Adressierung und ignoriert CHS sowieso. Ich konnte
jedenfalls frueher als noch SCSI Platten im System hatte die Geometrie
beliebig einstellen ohne das dies irgendjemand gestoert hat,
jedenfalls solange man nicht den Fehler gemacht hat einen Adapter von
Adaptec zu verwenden, die waren etwas engstirnig.

>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?

Im Expertmodus muesste das einstellbar sein....

>Setzen der Parameter im Expertenmodus von fdisk scheint auch nichts zu
>bringen.

...aber das wuerde ich auch so erwarten.

>Das BIOS des Laptops bietet leider keine Möglichkeit, die Gemetrie
>explizit einzustellen.

Ich das nicht nach den 486er stark aus der Mode gekommen. :-D

Wie aeussert sich denn das booten oder nicht booten? Lilo? Grub? Fehlermeldung?

Olaf

Georg Schwarz

unread,
Feb 23, 2020, 6:13:44 AM2/23/20
to
olaf <ol...@criseis.ruhr.de> wrote:

> Georg Schwarz <georg....@freenet.de> wrote:
>
> >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.
>
> Interessant. Ich hab hier auch noch einen MP3-Player mit IDE nach CF
> Adapter der auch _manchmal_ zickig bootet.

hier hat jemand vor Jahren ein Video zu dem Thema erstellt:
https://www.youtube.com/watch?v=G26cRjrt5Mg

die Lösung dort war, die Parameter im BIOS händisch einzustellen.

>
> >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.
>
> Das glaube ich so nicht weil dieses Geometriezeugs IMHO nur noch fuer
> Betriebsysteme aus Uropas Bastelkiste ist. Alles andere nutz doch
> heute eine direkte Adressierung und ignoriert CHS sowieso. Ich konnte
> jedenfalls frueher als noch SCSI Platten im System hatte die Geometrie
> beliebig einstellen ohne das dies irgendjemand gestoert hat,
> jedenfalls solange man nicht den Fehler gemacht hat einen Adapter von
> Adaptec zu verwenden, die waren etwas engstirnig.
>
> >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?
>
> Im Expertmodus muesste das einstellbar sein....

im Expertenmodus von fdisk? Es gibt es vor, aber selbst wenn ich danach
eine DOS Partitionstabelle und eine primäre Partition auf der "Platte"
anlege, wird diese von Linux weiter als 3884/255/63 erkannt.


Kann man dem Kernel irgendwie die Plattengeometrie mitteilen? Ich
erinnere mich ganz dunkel, dass das ganz, ganz früher ging (und z.T.
auch notwendig war)?

>
> >Setzen der Parameter im Expertenmodus von fdisk scheint auch nichts zu
> >bringen.
>
> ...aber das wuerde ich auch so erwarten.

erwarten dass es etwas bringt oder erwarten dass es nichts bringt?


> >Das BIOS des Laptops bietet leider keine Möglichkeit, die Gemetrie
> >explizit einzustellen.
>
> Ich das nicht nach den 486er stark aus der Mode gekommen. :-D


Es handelt sich um ein AMI BIOS von (je nach Angabe) 2005 oder 2007; die
CPU ist ein Intel Celeron M440, also deutlich nach 486.

>
> Wie aeussert sich denn das booten oder nicht booten? Lilo? Grub?
> Fehlermeldung?

Nicht bookten ergibt einfach die typische Fehlermeldung des BIOS, man
möge doch bitte ein bootfähiges Medium einlegen.

Verwendet wird wohl grub (ich habe u.a. das aktuelle Xubuntu LTS
versucht)

Marcel Mueller

unread,
Mar 7, 2020, 2:56:18 AM3/7/20
to
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

Marcel Mueller

unread,
Mar 7, 2020, 4:55:36 AM3/7/20
to
Am 23.02.20 um 12:13 schrieb Georg Schwarz:
>> Im Expertmodus muesste das einstellbar sein....
>
> im Expertenmodus von fdisk? Es gibt es vor, aber selbst wenn ich danach
> eine DOS Partitionstabelle und eine primäre Partition auf der "Platte"
> anlege, wird diese von Linux weiter als 3884/255/63 erkannt.

Linux fragt die Platte.


> Kann man dem Kernel irgendwie die Plattengeometrie mitteilen? Ich
> erinnere mich ganz dunkel, dass das ganz, ganz früher ging (und z.T.
> auch notwendig war)?

Ja geht auch, aber üblicherweise geht es eher darum, ob das BIOS oder
die Platte gewinnt.

Hier kommt vmtl. der erste Haken. Der SD-Adapter hat vermutlich da
einiges hart kodiert, und liefert möglicherweise immer LBA, vollkommen
egal, was man auf das Medium schreibt. Vielleicht liefert er auch etwas
anderes.

Evtl. gibt FreeBSD dem BIOS den Vorzug, was eine automatische Erkennung
hat (ziemlich verbreitet).


> Es handelt sich um ein AMI BIOS von (je nach Angabe) 2005 oder 2007; die
> CPU ist ein Intel Celeron M440, also deutlich nach 486.

Das ändert vieles. Vor allem das oben genannte Szenario, dass der
Adapter da mit rein funkt. In jedem Fall muss er sich die Werte
ausdenken, denn SD-Karten haben keine Geometrie.

Ich muss dazu sagen, dass ich diese Adapter niemals verwendet habe. Ich
habe immer (alte) SSDs an SATA/IDE Adaptern betrieben. Das ist
Problemlos, da die SSDs ja den ATA Befehlssatz selber verstehen.


Marcel
0 new messages