[linux-l] Merkwuerdiges bei SuSE-10.3

Steffen Dettmer steffen at dett.de
Mo Nov 26 17:52:12 CET 2007


* Juergen Rienaecker wrote on Sun, Nov 25, 2007 at 19:53 +0100:
> > > /dev/disk/by-id/scsi-SATA_Maxtor_6Y080L0_Y2575DKE-partx noch nicht.

den Kram /muss/ man ja nicht benutzen.

> > Dort wird die Platte noch mit Platte / Partitionsnummer  angesprochen 
> > hd0,0 zum Beispiel.

das ist wohl eher Grub als Kernel. Grub erfindet dazu etwas Rundes mit
einer Achse in der Mitte (ein Rad) und implementiert ja alles selbst
(filesystem auch), daher heisst das auch anders :)

> > hd0 = 1.Platte, hd1 = 2.Platte
> > 0 = 1.Partition, 1 = 2.Partition
> > 
> > hd1,0 heißt demnach 2.Platte, 1 Parttion.
> > 
> Lasse ich einen Kernel mit eincompilierten neuen Treibern auf die SuSE-10.3 los,
> so gibt es Kernelpanik. Er findet die / -Partitiom nicht und zählt mir auf,
> das er sda1 sda2 usw. findet. 

Dann boote doch den Kernel mit root=/dev/sda1 oder wo auch immer Dein
rootfilesystem drauf ist. Allerdings könnte ich mir fast vorstellen,
dass die SuSE-initrd (ist ja nicht von SuSE, aber die die benutzen) das
mit'm mount move überschreibt... Meiner Meinung nach ist ein grosser
Bug, dass die erzeugte initrd stark davon abhängt, von welchem System
aus man sie erzeugt. So nach dem Motto: wenn das aktuelle
(Rettungs?)-System kein LVM hat, braucht's die initrd auch nicht. Fallen
über Fallen im Zeitalter der GUIs...

> In der Initrd stecken noch etwa 3 MB Software, durch die die SuSE erst
> mit dem Kernel komunizieren kann.

Na ja, eigentlich sollten da bloss ein paar Treiber und ein /bin/init
Script sein, wobei letzteres dynamisch von mk_initrd erzeugt wird und
nicht so einfach händisch zu ändern ist. Geht aber, mein initrd hat
damals ne bash bekommen und den Kram zu debuggen. Das will man aber wohl
nicht. Leider ist das alles so verzahnt (yast, initrd, grub, Scripte,
Krams), dass man gar nicht so ohne weiteres anders booten kann.

> Da die SuSE-10.3 zunächst nur
> /dev/disk/by-id/scsi-SATA_Maxtor_6Y080L0_Y2575DKE-partx kennt
> gehts also nicht ohne 4 MB initrd.

Du meinst, weil sie es beim booten noch nicht kennt (weil kein udev
daemon da ist, der mit XML Konfig versucht, die Bugs vom Hotplugkonzept
zu umgehen), richtig?

> Die SuSE-10.2 konnte ich im Notfall noch mit einer 1.4 MB Diskette booten
> -r--------  1 root 1171673 Oct 11 10:03 vmlinuz-2.6.18.8-0.7

Was passiert, wenn Du so einer Disk das rootfs= explizit mit angibts,
muss doch gehenm, nur, dass halt die ältere Kernelversion läuft. Der
Kernel weiss doch gar nicht, ob da nun ein SuSE 10.2, 10.3 oder 10.2,66
drauf ist?

> > > Außerdem steht jetzt die Root-Partionion / schon in initrd Heißt
> > > das, daß ändert nan die Root-partiton, auch ein neues initrd bauen
> > > muß?
> >
> > Hmm, ich versteh die Frage nicht?
> > 
> Mit dem mc kann man die ASCII Dateien von Initrd lesen: was bedeutet
> 
> source boot/02-start.sh
> [ "$modules" ] && load_modules
> [ "$debug" ] && echo preping 03-storage.sh
> [ "$fallback_rootdev" ] || fallback_rootdev='/dev/disk/by-id/scsi-SATA_Maxtor_6Y080L0_Y2575DKE-part8'

jaaaaaaaaaaaa, geilllllllllllllllllll

schmeiss weg den Mist!!!

....... achneeeeeeeeee, gibt ja nix anderes......

Da sieht man es, in die initrd ist hardcoded fallback /genau/ für Deine
Platte. Nicht mehr nur Installations-individuell (LVM ja/nein) sondern
es ist jetzt Deine Persönliche Initrd.
    
( 
    source "lädt" die Datei boot/02-start.sh

    Die Konstruktion 
    [ "$modules" ] && load_modules
    ist BEDINGUNG && AKTION 
    AKTION, wenn BEDINGUNG wahr
    [ "$variable" ] ist war, wenn $variable nicht leer ist, also gesetzt ist
    
    [ "$modules" ] && load_modules
    ruft also load_modules auf, wenn $modules irgendwas enthält
       vermutlich 'ne Modul-Liste mit zu ladenden modulen
    [ "$debug" ] && echo preping 03-storage.sh
    wenn debug, dann Ausgaben machen
    [ "$fallback_rootdev" ] || fallback_rootdev=''
    wenn kein fallback, dann setze eines. Würde man in bash eher so
    schreiben: ${fallback_rootdev:=/dev/disk/by-id/....}
    Ich hoffe, die Zeilen stehen nicht so im Script, dann wäre die
    Debugausgabe falsch (falsche Stelle).
)

Erinnert ihr euch, wie wir früher gelacht haben, dass man Windows nach
Hardwarewechsel neuinstallieren muss? hahaha

Nach unermüdlicher Hackerei ist Linux jetzt endlich auch soweit, dass
es nach Hardwarewechsel neuinstalliert werden muss, jaha! hahaheuheuheuuuul

na ja, Spass (HEUL plärr) beiseite:
ich hoffe, dass rootfs benutzt wird, wenn da. Leider hatte ich bei
meiner initrd (SuSE 10.1) schon massig Probleme, weil die Annahmen der
mk_initrd Scripter eben scheinbar nur auf manche default Installationen
passen. Meiner Meinung nach einfach buggy. Dafür ist sie furtchbar
kompliziert, vielleicht, damit man nicht so leicht  sieht, wieviel dann
doch hardcoded ist...  initrd kann aber einen trace-modus. Leider leider
ist der nur auf der Console, so dass Du ihn hier nicht hinkopieren /
mailen kannst (weil kein copy&paste).

die initrd ist vermutlich ein ge-bzip-tes cpio Archiv, kann man
dementscprechend auch so wieder auspacken (macht mc manchmal automatisch
und manchmal auch richtig), ändern, neu einpacken.

Aber irgendwie muss es ja funktionieren, irgendjemand hat doch
erfolgreich ein 10.3 installiert? Oder?

also erstmal bitte rootf=/dev/sda2 oder was da hinmuss probieren.

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l