GRUB: kann er FreeBSD direkt laden?

JZL240I-U

Well-Known Member
Verständnisfrage zum booten :)

Also, ich habe mein BSD-slice als dritte primäre Partition in einem (im wesentlichen ;)) von Linux geprägten System angelegt. Bei der Installation von FreeBSD 6.0 wird gefragt, wohin man den Boot-Loader denn nun haben will (oder ob man keinen installieren will). Ich habe ihn in das BSD-Slice schreiben lassen.

Ist das aber wirklich nötig? GRUB ruft nun den BSD-Loader auf (chainload +1) und übergibt die Regie an ihn. Kann GRUB nicht auch direkt den BSD-Kernel laden und starten? Wie würde ich das einrichten?
 
Ja, kann es. Ich boote hier FreeBSD von der zweiten SATA-Platte wie folgt:
Code:
# For booting FreeBSD via Loader
title  FreeBSD [6.0-STABLE]
root   (hd1,0,a)
kernel /boot/loader
Mußt Du halt entsprechend für Dich anpassen.
 
um mal das typische "read the [] man" durch die gnuverison zu ersetzen:
read the info!

nein im ernst, info seiten sind meistens noch besser als man seiten! und wenn man da die notes zu freebsd liest, sieht man auch dass steve nicht ganz recht hat mit seinem post aber schon das richtige empfiehlt (den loader statt die kernel zu laden).

info seite von grub said:
GRUB can load the kernel directly, either in ELF or a.out format. But this is not recommended, since FreeBSD's bootstrap interface sometimes changes heavily, so GRUB can't guarantee to pass kernel parameters correctly.
Thus, we'd recommend loading the very flexible loader `/boot/loader'
instead.
 
Aha, mein Dank an Euch beide. Dann kann ich es direkt belassen, wie es ist. Da bei mir der BSD-boot-loader ja im Slice installiert ist, übernimmt er die Arbeit klaglos ;).

Mhm, zu den info-pages: irgendwie verheddere ich mich immer wieder mit der Bedienung, trotz "info info", so ziehe ich man vor. Aber auch immer wieder unterschätzt man / ich die Menge an Information, die da (in beiden Dokumentations-Systemen) vergraben ist -- irgendwie habe ich nicht daran gedacht / geglaubt, die Antworten da zu finden...

Nochmals Danke und ein gutes neues Jahr :).
 
So. Nun habe ich es mit der FreeBSD 8.0 RELEASE gemacht -- funktioniert einwandfrei. Einziger Vorteil ist allerdings, dass die "Schreck"sekunde beim Anzeigen von "chainload +1" wegfällt, wo der Bootvorgang beim Austausch der Bootloader kurz anhält. Aber gut zu wissen, dass und wie es geht.
 
Ja, aber. Mit SuSEs 12.1 GRUB geht es für FreeBSD 9.0 RELEASE wieder nicht. Der meckert
Code:
Partition type a5 found
Unknown file system in partition hd(1,1,a)
Jemand Ideen wie man GRUB ufs beibringen kann?
 
Hi JZ..,

ich weiß nicht welche GRUB version SUSE ausliefert, aber UFS kann er auf jeden fall zumindest die Version in den Ports:)

du kannst aber FreeBSD genau wie Windows 'chainloaden'
 
Könntest Du mir das bitte einmal kurz posten? Ich habe meine alte menu.lst nicht mehr und die Syntax nicht im Kopf. Danke :).
 
chainloader +1

Mir ist auch schon aufgefallen, das die Linux Grub's den BSD Kernel nicht direkt booten können. Warum weiß ich aber auch nicht.
Die Grub Version aus den Ports kann das aber. Das geht dann mit
Code:
kernel /boot/loader
 
Hi JZ..,

es gibt kein Rätsel um AHCI/IDE, Du mußt dich für eins der Beiden entscheiden.Punkt!
Bevor dun nicht ein 'gpart show' gepostet hast kann dir keiner helfen, weil wir nicht wissen wie deine Platten jetzt konkret aussehen.

du kannst dich auch mal im SUSE Forum darüber auskotzen warum sie ffs und ufs2 Unterstützung in grub.spec 'disabled' haben. (Hab extra nachgeschaut; grub0.97)
 
Hi auge,

es gibt kein Rätsel um AHCI/IDE, Du mußt dich für eins der Beiden entscheiden.Punkt!

Leider nicht. AHCI startet sofort mit dem BSD-loader, keine Chance an meine Linux-Installationen heranzukommen. IDE startet GRUB mit Linux und (dank Eurer Hilfe) chainloaded er BSD.

Ich würde aber lieber generell AHCI (wegen NCQ etc.) nutzen. Und ganz dick und fett ist mein Wunsch, das technisch zu verstehen: Was geht da eigentlich ab, überleg' mal, die vom BIOS festgelegte Zugriffsart legt fest, was für ein Loader gestartet wird...

Bevor dun nicht ein 'gpart show' gepostet hast kann dir keiner helfen, weil wir nicht wissen wie deine Platten jetzt konkret aussehen.

Da hätte ich aber 'ne Menge zu schreiben. Ich muss noch 'rauskriegen wie der USB-Stick heißt, damit ich den Output von gpart show darauf speichern kann, dann mache ich das. Du nimmst doch nicht wirklich an, dass ich mit BSD ins Netz kann?!? Linux kann dann vom Stick lesen...

<edit> okay, er heißt da0. "mount -t msdosfs /dev/da0 /mnt" ergibt "Invalid Argument /dev/da0"... :confused: </edit>

...du kannst dich auch mal im SUSE Forum darüber auskotzen warum sie ffs und ufs2 Unterstützung in grub.spec 'disabled' haben. (Hab extra nachgeschaut; grub0.97)

Völlig unverständlich. Früher ging das doch :(.
 
Last edited:
Hi JZ...,

mein Vorschlag wäre es jetzt AHCI zu belassen, damit kannst du FreeBSD starten.
Jetzt installierst du Grub in FreeBSD und dann auf der Platte, somit kannst du dein Linux von BSD-Grub aus starten.
(Der wechsel von IDE auf AHCI sollte ein Linux nicht stören.)

Wenn das funktioniert, einfach von Linux aus Grub neu-installieren, wegen den Kernel updates.

Um das zu bewerkstelligen brauchst du deine menu.lst von Linux, sowie den Quellcode von Grub auf deinem USB-stick. Ja, mit Netz wäre es einfacher, hast du keinen Router? Damit wäre ein # dhclient DEVICE eigentlich ausreichend, dein DEVICE findes du mit 'ifconfig' nicht anders wie in Linux auch.

grub-0.97.tar.gz einfach nach /usr/ports/distfiles kopieren, falls kein Netz:(

Zum installieren:
# cd /usr/ports/sysutils/grub
# make install clean

jetzt kopierst du die 'stagefiles' von /usr/local/share/grub/i386-freebsd/ nach /boot/grub

damit du in den MBR schreiben darfst:
# sysctl kern.geom.debugflags=16

Grub im MBR installieren (z.B. erst Platte) mit:
# grub-install hd0

die menu.lst in /boot/grub kontrollieren/anpassen

Neustarten
 
Moin auge,

...Jetzt installierst du Grub in FreeBSD und dann auf der Platte, somit kannst du dein Linux von BSD-Grub aus starten.
(Der wechsel von IDE auf AHCI sollte ein Linux nicht stören.)
Ist 'ne Idee, Linux kann mit AHCI starten, macht es ja sonst immer (außer ich brauche das CD/DVD-Laufwerk zum booten).

...Wenn das funktioniert, einfach von Linux aus Grub neu-installieren, wegen den Kernel updates.
Yup, danke für den Hinweis.

...Um das zu bewerkstelligen brauchst du deine menu.lst von Linux, sowie den Quellcode von Grub auf deinem USB-stick. Ja, mit Netz wäre es einfacher, hast du keinen Router? Damit wäre ein # dhclient DEVICE eigentlich ausreichend, dein DEVICE findes du mit 'ifconfig' nicht anders wie in Linux auch.
Nein, ich gehe direkt mit meiner Kiste ins Netz (ich habe ja nur einen Rechner, wozu soll ich mich da noch mit einem Router rumquälen).

...grub-0.97.tar.gz einfach nach /usr/ports/distfiles kopieren, falls kein Netz:(

Zum installieren:
# cd /usr/ports/sysutils/grub
# make install clean

jetzt kopierst du die 'stagefiles' von /usr/local/share/grub/i386-freebsd/ nach /boot/grub

damit du in den MBR schreiben darfst:
# sysctl kern.geom.debugflags=16

Grub im MBR installieren (z.B. erst Platte) mit:
# grub-install hd0

die menu.lst in /boot/grub kontrollieren/anpassen

Neustarten

Super. Danke für die detaillierte Beschreibung. Nur werde ich in den nächsten Tagen nicht dazu kommen. Ich melde mich auf jeden Fall und sage an wie es weiter geht/ging (und wo es klemmt ;)).
 
Ich glaube, ich habe den Grund -- zumindest teilweise. Ich habe mir die MBRs meiner beiden Platten angeschaut. Was in sda ist, kann ich nicht erkennen, ich vermute aber der BSD-bootloader. In sdb ist GRUB, offensichtlich habe ich nicht die Platte sonder die Partition sda1 genullt (mit /dev/zero).

Arbeitshypothese:
  • AHCI greift, wie im BIOS eingestellt, auf sda zu und startet BSD (loader) von sda
  • IDE startet GRUB von der Platte, die eine natives IDE-Interface hat: sdb
Wäre immerhin eine Erklärung, nur schön ist es nicht...
 
Last edited:
Hallö JZ...,

die Einstellung AHCI im BIOS sagt dem Betriebssystem nur, dass der Festplattencontroller ein 'AHCI' Controller ist, dafür muss das Betriebssystem einen speziellen Treiber zur verfügung stellen. FreeBSD9 kann das von Haus aus, für FreeBSD8 musste dafür ein Kernelmodul geladen werden. Sonst macht die ahci-Bios-Einstellung eigentlich nichts.

Installier einfach mal grub neu, in den MBR der ersten Festplatte, unabhängig von ide/ahci. Damit kannst du ja nichts falsch bzw kaputt machen.
 
Ab FreeBSD 9.1 wird AHCI übrigens unabhängig der BIOS-Einstellung erzwungen werden, außer man unterdrückt es explizit. Das ist u.a. sehr hilfreich, wenn das BIOS es nicht erlaubt AHCI einzuschalten.
 
...die Einstellung AHCI im BIOS sagt dem Betriebssystem nur, dass der Festplattencontroller ein 'AHCI' Controller ist, dafür muss das Betriebssystem einen speziellen Treiber zur verfügung stellen...

Ich habe ein Gigabyte GA-890GPA-UD3H Mainboard. Das hat 2 SATA-Controller, einen für 6 SATA 6GB/s Anschlüsse und einen für 2 SATA 3 GB/s und 2 IDE Anschlüsse. Die Platten hängen daher: sda am ersten (6GB/s) Controller, die IDE / sdb logischerweise am zweiten. Treiber muss GRUB für beides haben. Aus dem gesamten Setup einschließlich BIOS-Einstellungen entscheidet sich offensichtlich, welcher MBR angesprungen wird.

...Installier einfach mal grub neu, in den MBR der ersten Festplatte, unabhängig von ide/ahci. Damit kannst du ja nichts falsch bzw kaputt machen.

Ho, wenn ich das tue, ist FreeBSD platt. GRUB kann es nicht starten und ich habe keine Ahnung wie ich die Loader-Software im Slice unterbringen kann, damit GRUB als Chainloader funktioniert. <stichel> Der Installer weiß es ja auch nicht. </stichel> :D
 
Lädtst Du FreeBSD jetzt mit
Code:
root (hdN,N,x)
kernel /boot/loader
oder mit
Code:
root (hdN,N)
chainloader +1
 
Nunja, es funktioniert mit

Code:
rootnoverify (hd1,1,a)
makeaktive
chainloader +1

oder eben direkt nach Einschalten von AHCI im BIOS mit dem FreeBSD-Bootloader...

Hmm, zumindest ersteres müsste nach dem Neuschreiben des MBR auch noch gehen, oder?

@ Yamagi Das müssen aber schon sehr alte BIOSse sein, so jung ist doch AHCI und NCQ nicht mehr.
 
Back
Top