Hallo zusammen, Auf meiner Kiste zu Hause 7.1 ist installiert. Habe mir nun kuerzlich n'e 8.1 von einem bekannten ausgeliehen und auf meiner 3. Festplatte (15GB) installiert. Den GRUB Boot Loader habe ich auf eine Floppy schreiben lassen. So weit, so gut. Ueber die Floppy kann ich die 8.1-er auch booten. Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old Und es hilft nur ein Reset. (Den genauen Output habe ich leider nicht notiert) Kann mir jemand einen Tipp geben, was da falsch laeuft ? DANKE Werner Franke -------- In dem /boot der 8.1-er befindet sich folgendes: -rw-r--r-- 1 root root 420892 Sep 13 15:29 System.map-2.4.19-4GB lrwxrwxrwx 1 root root 1 Dec 10 16:12 boot -> . drwxr-xr-x 2 root root 4096 Dec 10 16:44 grub -rw-r--r-- 1 root root 249843 Dec 10 16:44 initrd -rw-r--r-- 1 root root 248287 Dec 10 16:45 initrd.shipped -rw-r--r-- 1 root root 83147 Dec 10 17:57 message -rwxr-xr-x 1 root root1260470 Sep 13 15:29 vmlinux.gz -rw-r--r-- 1 root root1097912 Sep 13 15:29 vmlinuz -rw-r--r-- 1 root root 94321 Sep 13 16:30 vmlinuz.autoconf.h -rw-r--r-- 1 root root 46262 Sep 13 16:30 vmlinuz.config -rw-r--r-- 1 root root1097912 Sep 13 15:29 vmlinuz.shipped -rw-r--r-- 1 root root 130 Sep 13 15:17 vmlinuz.version.h
Werner Franke wrote:
Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen
image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional
Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old
Kann mir jemand einen Tipp geben, was da falsch laeuft ?
Du hast den Kernel aus dem 7.1 /boot benutzt um das 8.1 zu starten. mounte im 7.1 die /boot aus 8.1 an eine andere Stelle und passe die image und initrd Parameter in der lilo.conf an. Ich mache solche Installationen immer etwas anders: Dem Grub von der 8.1 sage ich, das er sich nach /dev/hdd1 installieren soll (oder /dev/hdd) und dem 7.1 wuerde ich dann sagen label=SuSE-8.1 other=/dev/hdd1 und dann hab ich zwei Bootmenues, aber keine weiteren Komplikationen. Peter
Hallo Peter, Peter Wiersig wrote:
Werner Franke wrote:
Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen
image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional
Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old
Kann mir jemand einen Tipp geben, was da falsch laeuft ?
Du hast den Kernel aus dem 7.1 /boot benutzt um das 8.1 zu starten.
Verstehe ich nicht ganz. Ich dachte das 'root = /dev/hdd1' sagt lilo, dass es das Filesystem von der 'hdd1' als / nehmen soll.
mounte im 7.1 die /boot aus 8.1 an eine andere Stelle und passe die image und initrd Parameter in der lilo.conf an.
Wenn ich boote, dann ist doch noch nichts gemounted. Wie soll denn dann das mit dem mounten funktionieren ?
Ich mache solche Installationen immer etwas anders: Dem Grub von der 8.1 sage ich, das er sich nach /dev/hdd1 installieren soll (oder /dev/hdd) und dem 7.1 wuerde ich dann sagen
Kann ich das auch jetzt noch machen, ohne nochmal die ganze Installation machen zu muessen. Ich mache solche Spielereien ja immer um auch solche Probleme und deren Loesungen zu verstehen. :-)
label=SuSE-8.1 other=/dev/hdd1
und dann hab ich zwei Bootmenues, aber keine weiteren Komplikationen.
Gruss Werner
Am Don, 2002-12-12 um 13.47 schrieb Werner Franke:
Hallo Peter,
Peter Wiersig wrote:
Werner Franke wrote:
Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen
image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional
Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old
Kann mir jemand einen Tipp geben, was da falsch laeuft ?
Du hast den Kernel aus dem 7.1 /boot benutzt um das 8.1 zu starten.
Verstehe ich nicht ganz. Ich dachte das 'root = /dev/hdd1' sagt lilo, dass es das Filesystem von der 'hdd1' als / nehmen soll.
Das macht LILO nicht so, in der lilo.conf beschreibst du welche initrd und welchen kernel er beim Start ansprechen soll, also nimmt der lilo-Aufruf die gemounteten Partitionen und trägt diese in seine Boot-Tabelle mit den Positionen der entsprecheneden Dateien ein. Dadurch wird in deinem Fall der 7'er Kernel gestartet, aber als / Dateisystem die 8'er Version genutzt. Du kannst das /boot Verzeichnis der 8.1 einmounten z.B. /mnt/boot und in der lilo.conf folgendes eintragen: image = /mnt/boot/vmlinuz initrd = /mnt/boot/initrd Rest wie oben. Um das mounten der /boot und anderen Partitionen kümmert sich später der Eintrag in der /etc/fstab. Und lilo selbst benutzt zum Aufruf der initrd und des Kernels dann seine absoluten Festplattenpositionen. Gruß Jens
Hallo Jens, Danke jetzt hat's geklickert. Zusammenfassend nochmal: Die Pfadangaben bei 'image = ' und 'initrd = ' mussen also so definiert werden, dass der gueltige Pfad zum Zeitpunkt des lilo Aufrufes und NICHT zum boot-Zeitpunkt stimmt. Da meine 3. Platte unter /export/disk3 gemountet ist muss er also /export/disk3/boot/{vmlinuz,initrd} lauten. Gruß Werner Jens Keizer wrote:
Am Don, 2002-12-12 um 13.47 schrieb Werner Franke:
Hallo Peter,
Peter Wiersig wrote:
Werner Franke wrote:
Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen
image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional
Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old
Kann mir jemand einen Tipp geben, was da falsch laeuft ?
Du hast den Kernel aus dem 7.1 /boot benutzt um das 8.1 zu starten.
Verstehe ich nicht ganz. Ich dachte das 'root = /dev/hdd1' sagt lilo, dass es das Filesystem von der 'hdd1' als / nehmen soll.
Das macht LILO nicht so, in der lilo.conf beschreibst du welche initrd und welchen kernel er beim Start ansprechen soll, also nimmt der lilo-Aufruf die gemounteten Partitionen und trägt diese in seine Boot-Tabelle mit den Positionen der entsprecheneden Dateien ein. Dadurch wird in deinem Fall der 7'er Kernel gestartet, aber als / Dateisystem die 8'er Version genutzt. Du kannst das /boot Verzeichnis der 8.1 einmounten z.B. /mnt/boot und in der lilo.conf folgendes eintragen:
image = /mnt/boot/vmlinuz initrd = /mnt/boot/initrd
Rest wie oben.
Um das mounten der /boot und anderen Partitionen kümmert sich später der Eintrag in der /etc/fstab.
Und lilo selbst benutzt zum Aufruf der initrd und des Kernels dann seine absoluten Festplattenpositionen.
Werner Franke wrote:
Peter Wiersig wrote:
Werner Franke wrote:
Nun moechte ich das auch in mein LILO im MBR einhaengen. Habe also einen weiteren Eintrag in die /etc/lilo.conf (7.1) geschrieben und lilo aufgerufen
image = /boot/vmlinuz label = SuSE-8.1 root = /dev/hdd1 initrd = /boot/initrd optional
Wenn ich nun die neue 8.1-er boote, kommt nach einiger Zeit (glaube nachdem die SCSI Module geladen wurden) die Meldung Kernel to old
Kann mir jemand einen Tipp geben, was da falsch laeuft ?
Du hast den Kernel aus dem 7.1 /boot benutzt um das 8.1 zu starten.
Verstehe ich nicht ganz. Ich dachte das 'root = /dev/hdd1' sagt lilo, dass es das Filesystem von der 'hdd1' als / nehmen soll.
Nein. s.u.
mounte im 7.1 die /boot aus 8.1 an eine andere Stelle und passe die image und initrd Parameter in der lilo.conf an.
Wenn ich boote, dann ist doch noch nichts gemounted. Wie soll denn dann das mit dem mounten funktionieren ?
Also, wenn du in lilo.conf "image=/boot/vmlinuz" verwendest, schreibt sich LILO beim starten des Kommandos "lilo" die Bloecke der Datei auf, die diese zu diesem Zeitpunkt belegt. Wenn dann der MBR mit LILO gestartet, laedt er diese Liste von Bloecken und versucht dort ein Kernel-Image zu finden. Dann wird dieses Image gladen, der Parameter-Bereich des Kernels mit den restlichen Angaben aus der .conf gefuellt (hier kommt die Variable root= is Spiel) und dann der Kernel-Code gestartet. Der Kernel wertet dann seine Argumente aus (initrd, root) und versucht damit den Befehl /sbin/init auszufuehren, der dann das mounten und hochfahren der Systemdienste uebernimmt. Schau mal die Ausgabe von "cat /proc/cmdline" an, da kannst du sehen, welche Argumente der Kernel erhalten hat.
Ich mache solche Installationen immer etwas anders: Dem Grub von der 8.1 sage ich, das er sich nach /dev/hdd1 installieren soll (oder /dev/hdd) und dem 7.1 wuerde ich dann sagen
Kann ich das auch jetzt noch machen, ohne nochmal die ganze Installation machen zu muessen.
Ja, du musst mit deiner Bootdisk dein 8.1 starten, dann bearbeitest du die Konfiguration und sagst dort, das nicht auf Diskette, sondern in den Bootsektor der root-Partition geschrieben werden soll. Was du genau machen musst, wenn du das Yast2-Modul benutzt, kann ich dir nicht verraten, weil ich eine 8.0 benutze. In der grub-Shell musst du halt "setup (hd1)" (oder 2, oder 3, oder 4) verwenden, damit der Stage1 loader im MBR der Festplatte /dev/hdd abgelegt wird, oder "setup (hd1,0)" wenn er in dem Bootblock von /dev/hdd1 landen soll. Oder du mountest unter der 8.1 die /boot-Partition der 7.1 und kopiert kernel und initrd in das 7.1er /boot und veraenderst die lilo.conf so, das diese beiden Dateien verwendet werden. Peter
participants (3)
-
Peter Wiersig
-
the_Q@t-online.de
-
Werner Franke