*BSD booten von einer CFE-Firmware

xeno74

Well-Known Member
Hi,

ich habe hier einen Rechner, der statt einem BIOS oder *EFI mit einem Common Firmware Environment (CFE) ausgestattet ist. Linux kann mit dieser Firmware problemlos booten.

Kann ich einen *BSD-Kernel (Free- Open- NetBSD usw.) mit einem CFE booten?

Als Beispiel ein Boot von einem Linux-Kernel mit den passenden Boot-Argumenten:

Code:
setenv bootargs "root=/dev/sdb1 quiet ro splash"
boot -elf -noints -fatfs cf0:vmlinux-3.10.3-2-ubuntu

Und hier noch ein Beispiel zum Starten einer Ubuntu Live-DVD:

Code:
ramdisk -addr=0x24000000 -fs=iso atapi0.1:casper/powerpc64/initrd
setenv bootargs "root=/dev/ramdisk file=/cdrom/preseed/ubuntu.seed boot=casper quiet ro splash --"
boot -elf -noints -fs=iso atapi0.1:casper/powerpc64/vmlinux

Viele Grüße

Xeno
 
Puh, falls sich hier keiner findet, der sich auskennt, würde ich mal auf freebsd-ppc@ nachfragen.
 
Es ist ein A-EON AmigaOne X1000.

So wie ich es verstanden habe, muß der *BSD-Kernel erstmal nur im ELF-Format vorliegen. Kann ich den Kernel im ELF-Format erstellen?

Danke,
Xeno

Ist der Kernel nicht eh von Haus aus ein ELF Image?

Das Problem am (Free)BSD Kernel wird eher sein, dass er ohne Loader nicht läuft und dass er auch sonst noch einiges von der Firmware will.

Ich hatte den Boot Prozess vor einigen (>5 Jahren) mal angeschaut, da war's im Prinzip so: Erstmal wurde der Loader (siehe /sys/boot) gestartet. Der hat einige, aber leider nicht alle, Informationen über die Platform von der Firmware abgeholt. Außerdem hat er so Dinge wie /boot/loader.conf interpretiert und ggf. z.B. Kernel Module geladen. Danach hat der Loader den Kernel geladen und gestartet. Leider hat der Kernel in der frühen Boot-Phase, also noch bevor das Copyright auf der Konsole erscheint, auch noch einige Calls in die Firmware gemacht.

Das ist signifikant anders als es Linux macht, denn dort braucht(e es damals) nur einen Flattened Device Tree (FTD) in dem alles steht, was Linux zum Leben braucht. D.h. man muss im Grunde nur den FTD erstellen und diesen dem Linux Kernel mitgeben.
 
Der Unterschied ist, dass Linux einen weitgehend einheitlichen Bootprozess hat. Das heißt, egal auf welcher Plattform man sich bewegt, es läuft fast gänzlich gleich ab. FreeBSD hingegen hat einen von der jeweiligen Plattform abhängigen Bootprozess, dabei sind die Unterschiede gewaltig. Grundsätzlich kann man sagen, je neuer die Portierung ist, umso sauberer ist der Bootprozess. Zum Beispiel ist es auf FreeBSD/i386 einige einzige Suppe, während auf FreeBSD/amd64 bereits eine deutlich bessere Trennung zwischen /boot/loader und dem Kernel besteht. FreeBSD/ARM nutzt sogar ähnlich wie Linux FTD.
Direkt kann ich dir nicht helfen. FreeBSD/ppc unterstützt OFW, was CFE betrifft weiß ich es nicht. Intern wird übrigens noch unterschieden. Während FreeBSD/ppc lediglich rudimentär unterstützt ist, ist in FreeBSD/ppc64 eine Menge Arbeit geflossen und es soll entsprechend gut laufen. Wobei ich selbst damit keine Erfahrungen habe und hier lediglich den Buschfunk nachplappere.
 
Zuletzt bearbeitet:
Vielen Dank für eure Antworten. Daran hätte ich auch denken können, dass nur eine ELF-Datei nicht ausreicht, sondern dass auch die Firmware ausgelesen werden muss. Der Amiga ist schon eine spezielle Hardware. Auch der Linux-Kernel muß gepatcht werden, damit dieser den Amiga vollständig unterstützt.
 
Zurück
Oben