# grub Bootloader auf Partition startet nicht?

## kami22

Hi,

ich habe hier ein Macbook Air mit SSD platte und einem Live-USB Stick (Minimal Gentoo dran (sda) ). Das System wird über refit Bootloader gestartet und dann kann ich entweder die schon fertige Gentoo Linux Partition (sdc4) oder den USB Stick auswählen oder halt MAC OS X. 

Ich boote mit dem Linux-Live-USB und mounte dann das fertige Linux System ohne Probleme.

Nächste Frage ist dann, wenn ich in das Live-Linux boote, mounte ich die Platte ja als chroot (mit proc/dev und allem dran).

Mein devices.map sieht so aus:

```
(fd0)   /dev/fd0

(hd0)   /dev/sda

(hd1)   /dev/sdc

```

mein menu.lst so:

```
default 0

timeout 30

#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.24-r5

root (hd1,3)

kernel /boot/kernel-2.6.39.1 root=/dev/sdc4

```

und ich versuche über die Grub-console den bootloader zu installieren. Dafür sage ich folgendes:

```

    GNU GRUB  version 0.97  (640K lower / 9216K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB

   lists possible command completions.  Anywhere else TAB lists the possible

   completions of a device/filename. ]

grub> root (hd1,3)

 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1,3)

 Checking if "/boot/grub/stage1" exists... yes

 Checking if "/boot/grub/stage2" exists... yes

 Checking if "/boot/grub/e2fs_stage1_5" exists... yes

 Running "embed /boot/grub/e2fs_stage1_5 (hd1,3)"... failed (this is not fatal)

 Running "embed /boot/grub/e2fs_stage1_5 (hd1,3)"... failed (this is not fatal)

 Running "install /boot/grub/stage1 (hd1,3) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded

Done.

grub>

```

Aber irgendwie kriege ich dann beim Booten aus refit immer nur den Fehler:

No bootable device -- inser boot disk and press any keyNo bootable device -- insert boot disk and press any key

Was muss ich nun machen damit Grub richtig bootet?

Vielen Dank für Hilfe.

Gruß kami

----------

## Randy Andy

Hi kami22.

Ich vermute einfach mal dass deine Laufwerkszuordnung nicht korrekt ist, diese wurde dann auch falsch in deine devices.map übernommen.

Indiz dafür scheint mir zu sein, dass zum einen dein Livestick als sda erkannt wurde, was zwar für den Moment des bootens durch refit noch zutreffend gewesen sein mag, aber spätestens wenn das Ding abgezogen ist, die Reihenfolge nicht mehr stimmig ist.

Wieviel Festplatten hast du denn in dem Teil, bei Zweien müsste die Zweite doch sdb heissen, und nicht sdc. (Es sei denn du hast Zwei Controller Ports für Vier Devices, und hättest die Zweite Platte am dritten Port angeschlossen, der Zweite Port wäre unbelegt oder mit einem DVD Laufwerk belegt. Ich kenne aber die Mac-Hardware nicht und muss daher spekulieren.

Sollte dein gentoo, also auf der Zweiten installierten und priorisierten Festplatte installiert sein, dort anscheinend auf der vierten Partition, dann würde ich mal folgendes versuchen:

Ändere in deiner installierten devices.map den Eintrag von 

(hd1)   /dev/sdc ändern in :

(hd1)   /dev/sdb

und demzufolge auch den Eintrag deiner grub.conf von

title Gentoo Linux 2.6.24-r5

root (hd1,3)

kernel /boot/kernel-2.6.39.1 root=/dev/sdc4 ändern in:

title Gentoo Linux 2.6.24-r5

root (hd1,3)

kernel /boot/kernel-2.6.39.1 root=/dev/sdb4

Und dann versuch nochmal zu booten. Falls du dich fragst wie so was zustande kommt, hier eine mögliche Erklärung:

Vielleicht hast du vor der Grub Installation das hier ausgelassen / übersehen:

Zur Installation muss GRUB wissen, welche Partitionen derzeit gemountet sind. Diese Information ist im Chroot-System nicht verfügbar, man kann sie aber problemlos zugänglich machen, indem man sie aus /proc/mounts ausliest und in die Datei /etc/mtab schreibt:

livecd / # grep -v rootfs /proc/mounts > /etc/mtab

Kann man aber durch Verwendung des recheck Parameter in Verbindung mit deiner spezifisch benötigten Syntax sicherstellen, also beispielsweise für Installation im MBR 

grub-install --recheck --root-directory=/mnt/gentoo /dev/sda 

kann aber bei dir abweichend sein.

Solltest du scheitern, bitte mehr Details über deine Festplatten-Anschluss-Konstellation, was wo wie installiert ist.

Gruß,  Andy.

----------

## kami22

Hi,

also das klappt leider nicht ich habe hier auch schon mal was dazu geschrieben. Vielleicht hilft das ja weiter.

Gruß kami

http://www.apfeltalk.de/forum/spielt-gptsync-efi-t377502-3.html#post3474243

----------

## Randy Andy

kami22

hab mir den ganzen Salmon durchgelesen, das hätt'ste ja auch gleich sagen können  :Rolling Eyes: 

Also: du hast nur eine interne Platte (SSD), also ist das immer sda, es sei den du steckst 'n Stick in das Teil um davon zu booten - Fakt!

Frage, wenn du im jetzigen zustand, ohne eingesteckten Stick versuchst von Linux zu booten, bekommst du dann schon über dein Boot-Auswahl-Menü (refit) eine Bootoption für Gentoo zur Auswahl angezeigt (Auch wenn das booten davon dann scheitert). Ja / Nein?

Bei Ja: Hast du auch schon mal versucht diese Einträge so abzuändern?

Schmeiss alles aus der devices.map raus und lass nur das drin:

(hd0)   /dev/sda

Dann noch die grub.conf  ändern in:

title Gentoo Linux 2.6.24-r5

root (hd0,3)

kernel /boot/kernel-2.6.39.1 root=/dev/sda4 

Bei Nein, falls das also nur mit Stick drin geht, könnte es ja wirklich so sein dass du Grub nun auf den Stick installiert hast, dann müssten wir das nochmal ändern....

P.S. der Legacy-Grub von Gentoo bzw. von der SystemrescueCD enthält den Patch um sich auch erfolgreich in eine GPT Partition einzunisten, das ist also kein Grund auf Grub2 zu wechseln.

----------

## kami22

hi,

ja das ist bei mir der Fall, im Menü kriege ich das Linux Logo angezeigt.

Ich habe die device.map und menu.conf angepasst auf sda. Ich kriege aber immer noch denselben Fehler:

No bootable device -- inser boot disk and press any key

Keine Ahnugn was ich falsch mache. Ich sag nur:

grub-install /dev/sdc4

/dev/sdc4 does not have any corresponding BIOS drive.

Was nun??

Gruß kami

----------

## Randy Andy

Hi,

versuch doch mal folgendes aus dem gechrooteten system heraus

grub-install --recheck /dev/sda 

Ansonsten versuchen wir was anders ohne chroot, kann ich aber erst Morgen erklären.

Gruß, Andy

----------

## kami22

Hi,

also das klappt leider bei mir auch nicht. Mit dem Live-System ist der USB-Stick sda. 

Am besten du erklärst mir mal den anderen Trick. Irgendwie muss ich ja das Grub da draufkriegen.

Vielen Dank.

Gruß kami

----------

## Randy Andy

Hi kami22.

Es gibt Zwei verschiedene Szenarien die ich noch in Petto hätte, ich beschreibe mal nur die erste da die wahrscheinlichere für mich (wird sonst zu unübersichtlich).

Wenn meine Vermutung stimmt und dieser refit sich wie so 'ne Art Bootloader verhält, und quasi so was wie ein Chainloading macht, zu der Partition in der das zu startende OS residiert, dann wird natürlich jeder versuch den GRUB in den MBR zu installieren nicht funktionieren, auch wenn die installation als solches erfolgreich war.

Du musst dann stattdessen den GRUB in den Bootsektor deiner Gentoo Installation platzieren, das ginge dann so:

1. Gentoo LiveCD oder besser sysresccd (SystemRescueCD) starten, ohne in dein gentoo zu chrooten, ist so nicht notwendig!

2. Die Partition in die dein Grub installiert werden soll

nach /mnt/gentoo mounten, also in deinem Fall wohl

```
# mount /dev/sdc4 /mnt/gentoo
```

3. Grub mit der option --root-directory installieren, die dann dorthin

zeigen soll, wo das grub Verzeichnis angelegt werden soll! Konkret:

```
# grub-install --root-directory=/mnt/gentoo /dev/sdc4
```

Hier würde sich GRUB dann in die erste 512 byte (Bootsektor) deiner sdc4 Partition schreiben, die aber physikalisch der vierten Partition deiner ersten (und einzigen) angeschlossenen Festplatte entspricht.

Sollte dein refit zum booten also direkt von der auf das OS zeigenden Partition booten wollen (quasi sda4), dann würde er dort einen ladbaren grub vorfinden (falls refit so arbeitet?).

Solltest du nach einem reboot nun also schon mal eine Grub menü sehen, nach dem refit Aufruf des zu bootenden gentoo, dann wär das schon mal die halbe Miete!

Hattest du bei deinen bisherigen Versuchen überhaupt schon mal ein Bootmenü zu Gesicht bekommen, sondern stattdessen immer nur die Fehlermeldung die du gepostet hast? (No bootable device -- inser boot disk and press any key ) Oder hattest du schon ein Grub Menü, und erst danach besagte Fehlermeldung?

Solltest du nun ein GRUB Menü sehen, jedoch das booten von Gentoo scheitern, dann sind wir auf dem richtigen Weg und es liegt wohl nur noch an nicht passenden Laufwerksbezeichnungen in deiner devices.map und im Boot-Menüeintägen.

Denn auch wenn im Live system alles sdc heisst, so wird im Normalbetrieb vermutlich alles sda (eventuell auch sdb, wär aber schon sehr konfus für mich) heissen. 

Dann solltest du lediglich nochmal deren Einträge abändern so wie in den postings zuvor, ohne erneute GRUB installation, und es nochmal versuchen (bis sda und sdb sich als nicht funktionierend erwiesen haben und dich dann nochmal melden.

Ggf. könntest du auch mal die Schritte 1-2 wiederholen und statt 3 die Grub installation mittels Grub-shell genau so durchführen, für die gleichen Zielverzeichnisse:

```
# grub

root (hd2,3)       ##2,3 entspricht sdc4 (als Zielpartition für die Stage2 in /boot/grub)

setup (hd2,3)     ##2,3 erster Sektor=Boot Sektor von sdc4 als Ziel für die Stage1 des Zweiten auf dem System installierten Bootloader.

quit 
```

Diese Vorgehensweise zeigt uns wenigstens mögliche Fehler auf, die du ggf. posten solltest: 

Seltsamerweise  sagt deine device.map ja immer (hd1)   /dev/sdc , dann könnte obiges fehlschlagen, obwohl denn hd1 ist sdb oder sdc wäre hd2.

Wie auch immer, dann, und nur dann würde ich es mal mit hd1,3 versuchen.

Bis dann, Andy.

----------

## kami22

Hi,

so die nächsten Tests sind erfolglos abgeschlossen. Also ich habe mir jetzt die systemrescuecd runtergeladen und davon gebootet.

Nun zeigt er mir die Platte als sda an. Ich habe dann folgendes getestet:  *Quote:*   

> 
> 
> 1. Gentoo LiveCD oder besser sysresccd (SystemRescueCD) starten, ohne in dein gentoo zu chrooten, ist so nicht notwendig!
> 
> 2. Die Partition in die dein Grub installiert werden soll
> ...

 

Leider ohne Erfolg. Refit startet zwar und erkennt die beiden Partitionen (MAC und Linux) aber dann kommt immer wieder die Meldung : No bootable device.

Ein Grub-Screen oder ähnliches ist auch nicht zu sehen. 

Ich habe dann nochmal die grub shell aufgemacht und davon root (hd0,3) ausgeführt dabei erkennt er die ext3 partition und bei setup (hd0,3) klappt alles bis auf den test der zwei files mit embedded.

Ich habe dann auch nochmal nur grub-install /dev/sda4 gemacht das klappt auch ohne Fehler und er setzt die device.map nur auf hd0 /dev/sda.

Ich weiß auch nicht mehr weiter.

Gruß kami

----------

## Randy Andy

Ok kami22,

letzte Chance, dann weiss ich auch nicht mehr weiter...

Immerhin ist das device mapping mit der systemresccd nun erstmalig korrekt.

Check/lösche als erstes mal alle  boot und menu.lst dateien oder prüfe diese auf Fehler gemäß meinem Post hier:

https://forums.gentoo.org/viewtopic-t-810681-highlight-grubinstall+rootdirectory+mnt.html

Nun würd ich das ganze nochmal damit versuchen, aber nun wieder in den MBR damit, dann mal sehen:

1. SystemRescueCD starten, ohne in dein gentoo zu chrooten.

2. Die Partition in die dein Grub installiert werden soll

nach /mnt/gentoo mounten, also in deinem Fall wohl

Code:

```
# mount /dev/sda4 /mnt/gentoo
```

3. Grub mit der option --root-directory installieren, die dann dorthin

zeigen soll, wo das grub Verzeichnis angelegt werden soll! Konkret:

Code:

```
# grub-install --root-directory=/mnt/gentoo /dev/sda
```

sda ist hier korrekt für den MBR

eventuell alternativ mal mit der grub shell

```
# grub

root (hd0,3)       

setup (hd0) 

quit 
```

Viel Erfolg, Andy

----------

## schmidicom

Wie wäre es mal mit GRUB2 (sys-boot/grub-1.99-r2)?

So weit ich weiss verwenden alle EFI basierende Mac GPT für die Partitionierung der HD und damit kann GRUB 0.XX doch wenig anfangen.

EDIT: Auch wenn es bei Gentoo dazugepacht wird was spricht den gegen den Versuch mit GRUB2?Last edited by schmidicom on Tue Sep 06, 2011 2:09 pm; edited 2 times in total

----------

## Randy Andy

Hi schmidicom.

Erst lesen, dann antworten   :Wink: 

Wie ich weiter oben schon schrieb, ist der Grub-legacy aus'm tree schon lange für GPT Partitionen gepatched, kann also problemlos darin installiert werden und davon booten.

Näheres dazu geht auch aus meinem letzten Post dieses Threads hervor:

https://forums.gentoo.org/viewtopic-t-882303-highlight-.html

kami22,

so könntest du dann später übrigens dann auch von deiner Partition booten lassen, vorausgesetzt deine GPT Partition verwendet auch eine unique GUID.

Doch so oder so muss GRUB erst mal erreichbar werden.

Ein Punkt zu dem ich wirklich nichts beisteuern kann und der mich etwas verunsichert ist, inwiefern EFI in den Bootvorgang involviert ist. Ich meine gehört zu haben dass es für den MAC erforderlich ist zum booten, doch wie verhält es sich beim booten einer Linux Partition, und wie arbeitet refit?

Ich glaube hier solltest du dich mal einlesen, ich für meinen teil möchte mich mit dem Mist möglichst nicht auseinander setzten und hoffe das der Quatsch im PC-Markt niemals durchsetzen wird!

Deshalb nutze ich von EFI auch nur den guten Teil, und das sind GPT Partitionen - der Rest ist Bäh!

Vielleicht findest du hier ja ein paar Antworten:

http://www.rodsbooks.com/gdisk/booting.html

http://de.wikipedia.org/wiki/Extensible_Firmware_Interface

http://de.wikipedia.org/wiki/GUID_Partition_Table

Gruß, Andy.

----------

## kami22

Hi,

erstmal vielen Dank für die ganzen Infos. Ich bin etwas kritisch den Grub Bootloader in den MBR zu schieben. Habe ich dann noch eine Möglichkeit bei Fehlern den alten MAC Bootloader refit wieder herzustellen? Ich möchte ungern nicht mehr in mein MAC OSX komme? Kann ich das irgendwie sicher stellen? Bisher habe ich ja aus Absicht noch nicht versucht den Bootloader in den MBR zu schieben.

Außerdem habe ich auch schon mit dem Gedanken gespielt, Grub2 als Hauptbootloader für Linux udn für MAC zu nehmen. Nur weiß ich gar nicht wie und ob das geht und wie er mit meiner FileVault2 verschlüsselten Partition umgeht.

Gruß kami

----------

## Randy Andy

Hi kami22.

Gestern war Treffen unserer LUG, und ein Kollege hatte ein Mac-Book dabei.

Er versuchte sich auch gerade mit Boot-Experimenten von einem USB-Sick aus. Refit war bei ihm schon installiert, aber seine Platte hatte er mit Boot-Camp noch nicht prepariert.

Jedenfalls gab's Anfangs (nach Auswahl durch rEFIt) auch die Fehlermeldung *No bootable device*, vor auftauchen eines Boot Menüs.

Angeblich war sein Stick durchgängig mit FAT32 partitioniert, darauf lagen einige iso.Images von Linux-DVDs die es zu booten galt.

Nach editieren der grub.cfg mit einigen Parametern gelang dann tatsächlich das booten von Ubuntu-9.04 (Casper). Zuvor musste jedoch in der grub.cfg ein Eintrag geladen werden der auf eine .efi Datei verwies, damit's klappte.

Dann kam auch ein Grub Menü von GRUB2 hoch. Angeblich hatte er Grub2 aber nicht selbst installiert. Vermutlich stammt der Grub aus den iso's. der Linux images. Ganz genau wusste er auch nicht was er da tat, aber er hatte irgendwo im Netz Hinweise und das efi.binary für seine Hardware gefunden, daher bat ich ihn mir seine Referenzen mal per Link zu schicken, damit ich sie dir zukommen lassen kann, hoffentlich denkt er dran, denn nur dann kan ich's an dich weiterleiten...

Jedenfals dämmerte es mir so langsam und diese Schlussfolgerungen ziehe ich nun daraus:

Dein Mac muss grundsätzlich zum initialisieren der Hardware erstmal seine Firmware in laden, denn er hat ja kein BIOS dafür. Standardmäßig liegt das auf der Platte und wird beim booten davon zuerst eingelesen. 

Anscheinend passiert das auch vor dem booten von DVD, sonst könnte man nicht einfach eine Linux-DVD booten.

Aber das passiert wohl nicht standardmäßig beim booten vom Stick oder von einer anderen Partion oder Festplatte.

Daher muss man wohl auf der zu bootenden Partion eine EFI Datei ablegen die zuerst geladen wird. Die hat er sich im Netz besorgt. Vielleicht kann man aber auch die von deiner Festplatte kopieren.

Nun kommt auch der GRUB2 ins spiel, denn soweit ich weiss kann nur er vor mittels EFI booten, d.h. zuvor EFI laden. 

Das wäre dann auch das Ausschlusskriterium für GRUB-legacy - nicht die Verwendung eines GPT Partitionsschemas, denn damit kann der ja mittlerweile auch umgehen. Das ist der Grund warum ich weiter oben dagagen bisher protestiert hatte, denn das sind zwei paar Schuhe.

Ich denke es sollte mit GRUB2 + EFI Datei in der Boot-Partition (nicht im MBR) zu bewerkstelligen sein - hoffentlich. Zumindest teile ich dein Vorbehalte den MBR zu überschreiben, denn dann geht sicher erst mal nichts mehr.

Übrigens, das Backup mit time-machine auf ein externes Medium soll vollwertig zum wiederherstellen deiner Maschine geeignet sein, denn es macht Schnapshots auf Blockebene. Solltest das also der Einfachheit wegen nutzen, vor kritischen Experimenten.

Sollte ich an die Infos kommen, leite ich sie gerne weiter - bis dahin ist Google dein Freund...

Und weiß nun einmal mehr warum ich EFI nicht mag und hoffe weiterhin dass es sich dieser böse proprietäre Sch... nicht im Standard-PC Markt durchsetzten wird. 

Ich werde mich jedenfalls bewusst beim Kauf diesem Quatsch verweigern, denn ich sehe da mehr Gefahren und Nachteile, als Vorteile für mich.

Was mein ihr warum die Banken aus Sicherheitsgründen EFI ablehnen! (siehe auch meine vorigen Links zu EFI).

Wenn es natürlich unbedingt ein MAC sein muss, dann hat man ja schon jetzt keine Wahl mehr, und M$ bereitet sich auch mehr und mehr darauf vor.

Die versprochene schnellere Bootzeit scheint mir zumindest hier beim Mac auch nicht wirklich gegeben, da ist Coreboot ja zigfach schneller am Start.

Aber da haben natürlich wieder die Hardwarhersteller wieder kein Interesse dran...

Gruß, Andy.

----------

## kami22

Hi Andy,

erstmal vielen Dank für die Infos. Ich mache jetzt folgendes ein Timebackup von der Platte, dann werde ich Grub2 mit irgendeiner EFI datei (Google) installieren und mal schauen, wie es dann läuft. Also noch bin ich mir nicht so sicher woran es liegen soll. Weil Guides gibt es ja genug für Linux auf dem Mac und da klingt das immer super einfach und schnell. Naja ich glaube ich lege in Zukunft nicht mehr soviel Wert auf meinen MBR und teste einfach mal auf Zerstörung  :Smile:  Ich halt dich auf dem laufenden. wäre aber super die Info zu kriegen, wie das mit deinem Bekannten geklappt hat.

Gruß kami

----------

## Randy Andy

Ja, so machen wir's.

Gruß, Andy.

----------

## schmidicom

Ich habe hier noch eine Anleitung (für PC und Mac) gefunden:

UEFIBooting

Damit ist es mir gelungen auf meinem Computer (ASUS M5A99X EVO) GRUB2 als EFI Bootloader einzurichten.

----------

