kladm
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Im wiki zu grub 2 heißt es:
Grundsätzlich ist GRUB 2 von seinen Machern so konzipiert, dass es, sobald das Kommando update-grub bzw. grub-mkconfig ausgeführt wird, alle auf einem Computer installierten Betriebssysteme findet und automatisch in das Auswahlmenü aufnimmt.
So sieht das beim Ausführen von update-grub zunächst auch aus: bernd@klserver:~# sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-30-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-30-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-29-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-29-generic-pae
Found memtest86+ image: /memtest86+.bin
Found SUSE LINUX Enterprise Server 9 (i586) on /dev/sda3
Found Ubuntu 10.04.2 LTS (10.04) on /dev/sdc1
done Neben der Neuinstallation von ubuntu 12.04 (auf /dev/sdd) findet er ein älteres 10.04 (auf /dev/sdc) und den derzeit noch immer produktiven alten SLES 9 (auf /dev/sda). Im Auswahlmenü jedoch taucht zwar der 10.04-Server, nicht aber der SLES auf - ich würde ihn aber dort gerne als default haben, damit der Server bei unbeaufsichtigtem Start per WOL den SLES startet und der neue ubuntu 12.04 manuell ausgewählt werden muß, bis er fertig konfiguriert ist. Im Moment muß ich dafür immer ins BIOS und die Bootreihenfolge ändern. Die Platte unter /dev/sda ist eine alte ATA-Platte (und wird vom SLES auch als /dev/hda erkannt). Für Hilfe dankbar, Bernd Moderiert von tomtomtom: Ins passende Forum verschoben. Bitte beachte die Themenstickies.
|
tomtomtom
Supporter
Anmeldungsdatum: 22. August 2008
Beiträge: 55207
Wohnort: Berlin
|
Zeige bitte die Terminal-Ausgabe von sudo fdisk -l 2>/dev/null | egrep "Disk /|/dev/" | sed "s#^/dev/#Part /dev/#" | awk '{print $2}' | sed 's/://' | xargs -n1 -IX sudo sh -c "hexdump -v -s 0x80 -n 2 -e '2/1 \"%x\" \"\\n\"' X | xargs -n1 -IY sh -c \"case \"Y\" in '48b4') echo X: GRUB 2 v1.96 ;; 'aa75' | '5272') echo X: GRUB Legacy ;; '7c3c') echo X: GRUB 2 v1.97 oder v1.98 ;; '020') echo X: GRUB 2 v1.99 ;; *) echo X: Kein GRUB Y ;; esac\"" hier im Codeblock.
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Bitte sehr: /dev/sda: GRUB Legacy
/dev/sda1: Kein GRUB 00
/dev/sda2: Kein GRUB 00
/dev/sda3: Kein GRUB 00
/dev/sda4: Kein GRUB 00
/dev/sdc: GRUB 2 v1.97 oder v1.98
/dev/sdc1: Kein GRUB 00
/dev/sdc2: Kein GRUB 00
/dev/sdc3: Kein GRUB 00
/dev/sdc4: Kein GRUB 00
/dev/sdd: GRUB 2 v1.99
/dev/sdd1: Kein GRUB 00
/dev/sdd2: Kein GRUB 00
/dev/sdd3: Kein GRUB 00
/dev/sdd4: Kein GRUB 00
/dev/sdd5: Kein GRUB 00
/dev/sdd6: Kein GRUB 00
/dev/sdb: Kein GRUB bc81
/dev/sdb2: Kein GRUB 00
|
tomtomtom
Supporter
Anmeldungsdatum: 22. August 2008
Beiträge: 55207
Wohnort: Berlin
|
Jede Menge GRUBs... Die Vermutung liegt nahe, dass schlichtweg die Festplatte, von deraus du update-grub durchführst nicht die Festplatte ist, die im BIOS als erstes Bootmedium eingetragen ist.
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Jede Menge GRUBs...
Nun ja, drei.
Die Vermutung liegt nahe, dass schlichtweg die Festplatte, von deraus du update-grub durchführst nicht die Festplatte ist, die im BIOS als erstes Bootmedium eingetragen ist.
Gewiß nicht - aber da der Grub-1 auf der ersten Platte mit "update-grub" gar nicht erst was anfangen könnte, werde ich, sobald ich dran komme, mal ausprobieren, was der grub2 aus der Lucid-Lynx-Version dazu sagt; von der Platte wird aber sicher bisher nicht gebootet.
|
bowman
Anmeldungsdatum: 17. Februar 2010
Beiträge: 7506
|
bernd@klserver:~# sudo update-grub
Generating grub.cfg ... Der grub-legacy auf sda hat auch keine grub.cfg, die generiert wird und auch keinen os-prober, der andere Programme finden und eintragen kann. Du solltest dir darüber klar werden, welches System den grub regiert, mit dem du zu erst bootest. Entweder du stellt die Festplatte um, von der gebootet werden soll oder du macht die Einträge manuell in die menu.lst deines grub-legacy auf sda.
Dann musst du das allerdings bei jeden Kernel-Update von Lucid, Precise und Suse machen. Es spricht also einiges dafür das unzustellen und mit Grub2 zu booten. Im Regiernden OS musst dann nur der update-grub durchgeführt werden, wenn es in einem anderen OS ein Kernel-Update gegebne hat.
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
OK, nochmal zur Erklärung: Ich möchte gerne ausschließlich mit der 4. Festplatte booten, auf der jetzt Precise und grub2, v 1.99 installiert sind. Das soll auch künftig das einzige OS dieses Serversystems sein! Vorübergehend hätte ich es aber gerne so, daß dieser grub2 v 1.99 standardmäßig von der 1. Festplatte den dort noch installierten SLES 9 bootet. Wenn das funktioniert, brauche ich den dort ebenfalls befindlichen grub1 nicht mehr; den auf Platte 3 noch existierenden grub2 v 1.97 sowieso nicht. Nur leider klappt's ja nicht 😉 Und deswegen habe ich im BIOS erstmal wieder auf die Platte 1 (und den legacy grub) umgestellt. (Bin aber seit tomtomtoms erster Antwort noch gar nicht wieder zum testen gekommen.)
|
bowman
Anmeldungsdatum: 17. Februar 2010
Beiträge: 7506
|
Dann musst du in Precise eine GRUB 2/Konfiguration (Abschnitt „Skripte-in-etc-grub-d“) vornehmen. Du erstellst in der /etc/grub.d ein Script 09_Suseboot (Name frei, wählbar Zahl muss zwischen 06 und 09 liegen) und kopierst dort die Bootbefehle für Suse aus dem os-prober der /boot/grub/grub.cfg rein. Dann macht du das Script ausführbar und danach ein sudo update-grub. Das führt dazu, dass an der ersten Stelle im Grubmenü dein Suse-OS aufgeführt wird und wenn nichts anderes ausgewählt wird, bootet es automatisch. Allerdings nur, wenn von der Platte gebootet wird, auf welcher der Grub2 sitzt, der durch Precise regiert wird. 😉
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Damit:
Du erstellst in der /etc/grub.d ein Script 09_Suseboot (Name frei, wählbar Zahl muss zwischen 06 und 09 liegen) und kopierst dort die Bootbefehle für Suse aus dem os-prober der /boot/grub/grub.cfg rein. Dann macht du das Script ausführbar und danach ein sudo update-grub.
hätte ich eine Antwort auf meine übernächste Frage, danke schon mal! Dummerweise gibt es in der von Precise regierten /boot/grub/grub.cfg kein menuentry für Suse, obwohl (s.o.) der Befehl update-grub , der ja diese /boot/grub/grub.cfg schreibt, u.a. ein
Found SUSE LINUX Enterprise Server 9 (i586) on /dev/sda3
auswirft. Das ist der Punkt, den ich nicht verstehe.
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Ergänzung: Der os-prober findet beide Betriebssysteme auf den anderen Platten:
bernd@klserver:~# sudo os-prober
/dev/sda3:SUSE LINUX Enterprise Server 9 (i586):SuSE:linux
/dev/sdc1:Ubuntu 10.04.2 LTS (10.04):Ubuntu:linux Mit dem Lucid Lynx auf Platte 3 weiß der linux-boot-prober auch was anzufangen:
bernd@klserver:~# sudo linux-boot-prober /dev/sdc1
/dev/sdc1:/dev/sdc1:Ubuntu, with Linux 2.6.32-28-generic-pae:/boot/vmlinuz-2.6.32-28-generic-pae:/boot/initrd.img-2.6.32-28-generic-pae:root=UUID=dd7bd6ad-c7b4-40eb-b88d-9928e7df02dd ro quiet Aber offenbar nicht mit dem SLES auf Platte 1
bernd@klserver:~# sudo linux-boot-prober /dev/sda3
bernd@klserver:~# Kann der linux-boot-prober überhaupt mit legacy grub?
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Kann der linux-boot-prober überhaupt mit legacy grub?
Ja, wenn er an der richtigen Stelle sucht:
bernd@klserver:~# sudo linux-boot-prober /dev/sda2
/dev/sda2:/dev/sda2::/vmlinuz:/initrd:root=/dev/sda2
/dev/sda2:/dev/sda2::/vmlinuz:/initrd-2.6.5-7.97-smp:root=/dev/sda2
/dev/sda2:/dev/sda2::/vmlinuz:/initrd:root=/dev/sda2
/dev/sda2:/dev/sda2::/vmlinuz:/initrd-2.6.5-7.97-smp:root=/dev/sda2
/dev/sda2:/dev/sda2::/vmlinuz-2.6.5-7.97-smp:/initrd-2.6.5-7.97-smp:root=/dev/sda2
/dev/sda2:/dev/sda2::/vmlinux-2.6.5-7.97-smp.gz::root=/dev/sda2
Auf dem SLES-System liegen /boot und / auf getrennten Partitionen; damit kommt update-grub wohl nicht klar. Wie bringe ich ihn dazu?
|
bowman
Anmeldungsdatum: 17. Februar 2010
Beiträge: 7506
|
Wie man Grub2 mit Scripten konfiguriert, steht unter GRUB 2/Skripte. Da sind auch einige Beispiel-Scripte, wie man bei bestimmten Fällen vorgeht. Dein Fall ist für mich neu. So eine Konstellation hatte ich bisher noch nicht. Wenn Suse keine separate /boot hätte, wäre es wahrscheinlich einfacher. Allerdings ist es ja ein Linux-OS, so dass du das Kernel-Image auf der / direkt ansprechen können solltest. Siehe Beispiel GRUB 2/Skripte (Abschnitt „Kernel-Images“)#Kernel-Images. Wahrscheinlich müsstest du aber bei jedem neuen Kernel den Suse bekommt den Eintrag anpassen. Es gibt aber auch noch Symlinks siehe GRUB 2/Skripte (Abschnitt „Symlink-zum-Wurzelverzeichnis“)#Symlink zum Wurzelverzeichnis die man anwenden kann. Da bin ich aber leider planlos, wie man das wo einträgt. Sorry. 😕 Vllt bis du da je etwas fitter. ☺ Ich bin leider kein Programmierer. 🐸 Scripte hab ich bisher nur durch Abwandlung von Vorlagen gemacht. Die dann meisten auch funktioniert haben. 😀 Vllt hilft dir das ja trotzdem weiter. 😬
|
kladm
(Themenstarter)
Anmeldungsdatum: 27. April 2011
Beiträge: 17
|
Wenn ich unter Precise die Suse-Root-Partition nach /mnt mounte und anschließend die Suse-Boot-Partition nach /mnt/boot, findet update-grub die ganze Sache gleich viel interessanter 😉 Anschließend finden sich gleich sechs menuentries in grub.cfg - leider führt keiner davon zum Booten vom SLES 👿 Die ersten fünf initiieren einen sofortigen reboot, der sechste meldet error: file not found
kernel must be loaded first oder so ähnlich. Ich vermute, die ungewöhnliche Konstellation mit zwei ziemlich alten ATA-Platten und zwei neuen SATA-Platten, die von den verschiedenen OS auch noch unter unterschiedlichen devices angesprochen werden, führt dazu. Die Sache ist nicht so wichtig, daß ich sie unbedingt hinkriegen müsste! Der Anreiz steigt, den neuen Precise-Server endlich fertig zu machen und den Uralt-SLES (neue kernels kriegt der schon laaange nicht mehr...) endlich abzulösen! Deine Beiträge haben mir jedenfalls sehr geholfen, danke - zumindest kriege ich jetzt so langsam eine Ahnung, wie grub2 funktioniert 😀
|
black_tencate
Anmeldungsdatum: 27. März 2007
Beiträge: 11230
|
Hej bowman, bowman schrieb: ... Wenn Suse keine separate /boot hätte, wäre es wahrscheinlich einfacher.
ich flechte nur mal kurz ein:
habe auch ein Linux (8.04) mit getrennter "/boot" Partition (allerdings ist bei mir alles auf einer Platte) blacktencate@tmh4440ll:~$ sudo /etc/grub.d/x/30_os-prober
[sudo] password for blacktencate:
Found Windows Vista (loader) on /dev/sda1
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 1E24426D2442484B
chainloader +1
}
Found Ubuntu 10.04.4 LTS (10.04) on /dev/sda14
menuentry "Ubuntu, mit Linux 2.6.32-40-generic (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-40-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro noplymouth
initrd /boot/initrd.img-2.6.32-40-generic
}
menuentry "Ubuntu, mit Linux 2.6.32-40-generic (Wiederherstellungsmodus) (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-40-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro single
initrd /boot/initrd.img-2.6.32-40-generic
}
menuentry "Ubuntu, mit Linux 2.6.32-38-generic (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-38-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro noplymouth
initrd /boot/initrd.img-2.6.32-38-generic
}
menuentry "Ubuntu, mit Linux 2.6.32-38-generic (Wiederherstellungsmodus) (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-38-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro single
initrd /boot/initrd.img-2.6.32-38-generic
}
menuentry "Ubuntu, mit Linux 2.6.32-37-generic (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-37-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro noplymouth
initrd /boot/initrd.img-2.6.32-37-generic
}
menuentry "Ubuntu, mit Linux 2.6.32-37-generic (Wiederherstellungsmodus) (on /dev/sda14)" {
insmod ext2
set root='(hd0,14)'
search --no-floppy --fs-uuid --set 1542eafc-dbd2-42e8-8d20-5068300c86d0
linux /boot/vmlinuz-2.6.32-37-generic root=UUID=1542eafc-dbd2-42e8-8d20-5068300c86d0 ro single
initrd /boot/initrd.img-2.6.32-37-generic
}
Found Windows Vista (loader) on /dev/sda2
menuentry "Windows Vista (loader) (on /dev/sda2)" {
insmod ntfs
set root='(hd0,2)'
search --no-floppy --fs-uuid --set B2C01BA3C01B6D3B
chainloader +1
}
Found Ubuntu 8.04.4 LTS (8.04) on /dev/sda8
menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-23-generic (on /dev/sda8)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set d66545b4-1d8c-4713-bbea-2e24909c8545
linux /vmlinuz-2.6.24-23-generic root=UUID=9ef5c427-e86d-4f81-97f9-c5d8e52b8e8c ro quiet splash
initrd /initrd.img-2.6.24-23-generic
}
menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-23-generic (recovery mode) (on /dev/sda8)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set d66545b4-1d8c-4713-bbea-2e24909c8545
linux /vmlinuz-2.6.24-23-generic root=UUID=9ef5c427-e86d-4f81-97f9-c5d8e52b8e8c ro single
initrd /initrd.img-2.6.24-23-generic
}
menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-19-generic (on /dev/sda8)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set d66545b4-1d8c-4713-bbea-2e24909c8545
linux /vmlinuz-2.6.24-19-generic root=UUID=9ef5c427-e86d-4f81-97f9-c5d8e52b8e8c ro quiet splash
initrd /initrd.img-2.6.24-19-generic
}
menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-19-generic (recovery mode) (on /dev/sda8)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set d66545b4-1d8c-4713-bbea-2e24909c8545
linux /vmlinuz-2.6.24-19-generic root=UUID=9ef5c427-e86d-4f81-97f9-c5d8e52b8e8c ro single
initrd /initrd.img-2.6.24-19-generic
}
menuentry "Ubuntu 8.04.3 LTS, memtest86+ (on /dev/sda8)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set d66545b4-1d8c-4713-bbea-2e24909c8545
linux /memtest86+.bin
} es werden alle O/S gefunden, wenn auch XP mit "Windows Vista (loader) (on /dev/sda2)" bezeichnet wird, aber Probleme mit separater "/boot" hat grub_2 jedenfalls nicht.
Gruß black tencate EDIT.:
... Da bin ich aber leider planlos, wie man das wo einträgt.
geht ganz einfach, s. hier
|