Re: Etherboot= BTX halted

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 31 Oct 2006 15:42:34 +0100 (CET)

Hi,

thommy(at)habmalnefrage.de wrote:
> Ich versuche gerade meine Netzwerkkarte PXE-fähig zu machen. Da ich
> einen anderen Rechner mit einer PXE-fähigen Karte habe, wollte ich
> meinen D-Link Karte auf dem anderen Rechner, der leider kein PXE
> kann, mit einer Etherboot Diskette PXE-fähig machen.

Nachdem sonst keiner geantwortet hat, versuch ich's mal.
Allerdings sind meine Erfahrungen mit Etherboot etwa zehn
Jahre alt, und damals hat es noch gar kein PXE unterstützt.
In jüngster Zeit habe ich nur mit PXE zu tun gehabt, das in
ROM gegossen wurde. Aber vielleicht kann ich doch einen
Hinweis liefern, der Dich weiterbringt.

Das Hauptproblem dürfte sein, dass die PXE-Treiber von
Etherboot selbst irgendwo im RAM stehen müssen. Der Boot-
loader von FreeBSD seinerseits belegt auch den RAM, und
irgendwo kommen sie sich da offenbar in die Quere, da es
keine Standard-API dafür gibt, wie der eine dem anderen
mitteilen kann, welche Bereiche er für sich nutzen darf
und welche nicht.

Bei einem PXE-BIOS oder Boot-ROM tritt das Problem natür-
lich nicht auf, da der Treiber nicht im RAM steht.

> [...]
> PXE version2.1 , real mode entry point @9f00:0680

Das ist offenbar die (Real-mode-)Adresse, an der sich der
Etherboot-PXE-Code befindet, oder zumindest ein Code-Stub,
der dann zum richtigen Code springt, der sich evtl. woan-
ders befindet.

> int=0000000d err=00000000 efl=00030006 eip=00000916
> eax=0009cbb0 ebx=000008eb ecx=00000000 edx=00002d46
> esi=00000000 edi=00000000 ebp=0009cf82 esp=000003d2
> cs=9f00 ds=9f00 es=0000 fs=0000 gs=0000 ss=9cbb
> cs:eip=66 0f 01 97 52 00 0f 20-c0 0c 01 0f 22 c0 66 ff
> ss:esp=00 00 00 00 71 00 00 00-00 00 00 00 e2 f6 09 00
> BTX halted

Das ist ein Register-Dump, der im Falle eines Crashes aus-
gegeben wird. Die betreffende Adresse war 9f00:0916
(cs:epi), also kurz hinter dem Einsprungpunkt.

> Jetzt komme ich nicht mehr weiter bei mir, habe eine andere
> Netzwerkkarte reingesteckt, der selbe Fehler. Hab bei pxe.c den Debug
> eingeschaltet, dabei kommt folgende Meldungen:
>
> #########
> ....
> PXE version2.1 , real mode entry point @9f00:0680
> bangpxe_call 71
> ....
> #########
>
> Was bdeutet bangpxe_call 71?

Das ist 'ne hexadezimale PXE-Funktionsnummer. 71 steht für
"PXENV_GET_CACHED_INFO" (siehe Source); das ist die aller-
erste PXE-Funktion überhaupt, die vom Bootloader aufgerufen
wird (sie dient der Abfrage der ermittelten IP-Adresse).
Dass dies bereits schiefgeht, ist kein gutes Zeichen. Ich
tippe mal auf einen Konflikt in der RAM_Belegung; siehe
oben.

Wenn ich mich richtig erinnere, kann man beim Compilieren
von Etherboot die Lade-Adresse festlegen. Vielleicht kann
man es mit einer anderen Adresse zum Laufen bringen, aber
das ist wohl reines Glücksspiel.

Um das Problem richtig zu debuggen, muss man vermutlich et-
was tiefer in die Materie einsteigen und auch vor einem
Disassembler nicht zurückschrecken, fürchte ich.

Vielleicht hilft es ja, wenn Du Dich an das User-Forum auf
etherboot.sourceforge.net wendest, oder an die Mailingliste
freebsd-net(at)freebsd.org. Ich glaube, Doug Ambrisko (sp?)
hat in der Vergangenheit mit Etherboot herumgebastelt;
vielleicht kann er Dir weiterhelfen.

Abschließend würde mich noch interessieren, für welchen
konkreten Anwendungsfall Du Etherboot + PXE benötigst.
Vielleicht gibt es ja eine alternative Lösung? Wenn Du
einen (oder mehrere) PCs vom Netz booten möchtest, der
(noch) kein Boot-ROM mit PXE hat, würde ich versuchen,
eine Boot-CD zu erstellen (CDs sind eh tendentiell halt-
barer als Disketten). Da kommst Du ganz ohne Etherboot
und PXE aus.

Einfach /boot/cdboot, den ganz normalen loader und einen
Kernel auf CD-R brennen. Der FreeBSD-Kernel bietet eine
Reihe von Optionen, mit denen er selbständig einen Disk-
less-Boot durchführen kann, d.h. der Kernel macht BOOTP
(DHCP), um sich seine IP und sonstige Infos zu holen,
und mountet dann root per NFS. Siehe /sys/conf/NOTES
unter »Kernel BOOTP support«. Das Nette daran ist, dass
das mit jeder beliebigen Netzwerkkarte funktioniert, die
von FreeBSD unterstützt wird, und das sind eine ganze
Menge. ;-)

Gruss
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 31 Oct 2006 - 15:45:29 CET

search this site