[kernel] longrun.o(.text+0xc7): undefined reference to `cpuid'

ports

Active Member
Hi zusammen,

ich habe da ein kleines Problem (warum postet man sonst? ;)) beim
kompilieren eines Kernels (OpenBSD 3.4). 'make' wird irgendwann mit
folgendem unterbrochen.
rm -f bsd
ld -Ttext 0xD0100120 -e start -N -x -o bsd ${SYSTEM_OBJ} vers.o
longrun.o: In function `longrun_getmode':
longrun.o(.text+0xc7): undefined reference to `cpuid'
*** Error code 1

Stop in /root/kernel (line 639 of Makefile).
Ich habe sowohl google, wie auf die Suchfunktion diverser BSD-Foren
bemueht. Aber ich habe keinen Punkt gefunden, der mir helfen wuerde.
Eigentlich habe ich ueberhaupt nichts gefunden, wo jemand _dies_
Meldung hatte.

Dann faellt mir doch glatt noch eine kleine Frage ein. Die Datei
GENERIC kann ich ja quasi als Vorlage fuer das erstellen eines neuen
Kernels nehmen. Auskommentieren einzelner Teile wird scheinbar mit #
gemacht. Aber was bedeuten hier und da die * hinter den "Argumenten"?

In stiller Hoffnung, dass jemand helfen kann...

ports
 
Das *-Zeichen ist ein Platzhaltter für die Nummer des einzelnen Gerätes/Interfaces.

In den OpenBSD-FAQs findest du die Infos darüber.

Und zu deinem Probleme kann ich nur tippen, dass du womöglich die "falsche" CPU in der Kernel-Config angegeben hast.

Also z.B. du hast ein Pentium 4 aber kommentierst die i686 aus oder du
hast eine ältere Pentium-CPU und kommentierst die i586 aus usw.

Übrigens: das *-Zeichen sollte NICHT durch irgendetwas ersetzt werden (Zahlen, Buchstaben etc.) ... das macht der Kernel automatisch, während der Geräteerkennung, indem er für jedes weitere Gerät des selben Typs die nächsthöhere Zahl nimmt.

Am besten Probiere das Kompilieren mit GENERIC aus und erst dann mit deinen eigenen Kernel-Configs.

Gruß

CW
 
Original geschrieben von CW
Das *-Zeichen ist ein Platzhaltter für die Nummer des einzelnen Gerätes/Interfaces.

Ach so! Dann werde ich einfach mal probieren alles auszukommentieren,
was ich _eigentlich_ nicht brauche (famous last words).

Original geschrieben von CW
In den OpenBSD-FAQs findest du die Infos darüber.
Die BSD-FAQs habe ich mir "natuerlich" auch mal angeschaut. Aber
manchmal ist die FAQ doch etwas unuebersichtlich. So habe ich z.B. noch
keine Uebersicht _aller_ Eintraege aus GENERIC gefunden. Sprich, wofuer
steht alles im Detail? Einiges ist ja in GENERIC kommentiert, aber eben
nur einiges :)

Original geschrieben von CW
Und zu deinem Probleme kann ich nur tippen, dass du womöglich die "falsche" CPU in der Kernel-Config angegeben hast.

Also z.B. du hast ein Pentium 4 aber kommentierst die i686 aus oder du
hast eine ältere Pentium-CPU und kommentierst die i586 aus usw.
Ja, ich hatte bis auf i386 alles auskommentiert. Ja, schon schlecht
wenn man schon fuer solche Sachen zu bloede ist ;)

Original geschrieben von CW
Am besten Probiere das Kompilieren mit GENERIC aus und erst dann mit deinen eigenen Kernel-Configs.
Habe ich eben mal gemacht und es funktioniert. Danke fuer die Hilfe ;)

ports
 
Original geschrieben von ports
Ach so! Dann werde ich einfach mal probieren alles auszukommentieren,
was ich _eigentlich_ nicht brauche (famous last words).

Sei aber bloß vorsichtig damit, denn viele Interfaces brauchen andere, ohne dass man es weiß.

Die BSD-FAQs habe ich mir "natuerlich" auch mal angeschaut. Aber
manchmal ist die FAQ doch etwas unuebersichtlich. So habe ich z.B. noch
keine Uebersicht _aller_ Eintraege aus GENERIC gefunden. Sprich, wofuer
steht alles im Detail? Einiges ist ja in GENERIC kommentiert, aber eben
nur einiges :)

Dann gebe doch mal man options ein und du erhälst auch die Zusatzinfos über die verschiedenen Kernel-Optionen ;)

Manpage is your friend :)

Ja, ich hatte bis auf i386 alles auskommentiert. Ja, schon schlecht
wenn man schon fuer solche Sachen zu bloede ist ;)

Nun, entweder du hast einen i386-er (was ich bezweifle)
oder du hast dir wohl gedacht, dass i386 für die
Prozessorfamilie steht, was in diesem Falle nicht stimmt.

Man redet zwar von der i386-Prozessorfamilie, jedoch wird bei OpenBSD (und den anderen *BSDs auch) jeder Typ einzeln angegeben, damit der Kernel an diesen auch angepasst wird (zusätzliche Befehle, MMX, SSE usw. usf.).

Habe ich eben mal gemacht und es funktioniert. Danke fuer die Hilfe ;)

ports [/B]

Nichts zu danken ... wenn Probleme gut beschrieben
werden (wie in diesem Falle) und man lesen kann, was für
Fehler vorgekommen sind, kann man auch erwarten, dass
einem geholfen wird :)

Grüße und viel Erfolg mit OBSD

CW
 
Original geschrieben von CW
Sei aber bloß vorsichtig damit, denn viele Interfaces brauchen andere, ohne dass man es weiß.
Ja, es geht mir mehr um so Dinge wie *USB* und so. Ich brauche kein
USB, kein Serial, kein Parallel, kein SOUND und so Dinge. Aber ich werd
mich da einfach mal rantasten. Ich bin naemlich z.B. nicht ganz sicher,
ob man fuer Tastatur|Maus nicht auch serial braucht, obwohl es ueber
PS/2 reinkommt. Muesste ich mal schauen.

Original geschrieben von CW
Dann gebe doch mal man options ein und du erhälst auch die Zusatzinfos über die verschiedenen Kernel-Optionen ;)

Manpage is your friend :)
'man options' ist es! Ja, das ist doch mal was handfestes :)

Original geschrieben von CW
Nun, entweder du hast einen i386-er (was ich bezweifle)
oder du hast dir wohl gedacht, dass i386 für die
Prozessorfamilie steht, was in diesem Falle nicht stimmt.

Man redet zwar von der i386-Prozessorfamilie, jedoch wird bei OpenBSD (und den anderen *BSDs auch) jeder Typ einzeln angegeben, damit der Kernel an diesen auch angepasst wird (zusätzliche Befehle, MMX, SSE usw. usf.).
Ja, ich habe einfach mal ein 'uname -a' gemacht und dachte dann bei
mir, dass "OpenBSD drax.my.domain 3.4 kernel#1 i386" ein toller
Hinweis waere. Ich dachte da in diesem Zusammenhang an die
Prozessorfamilie, ja. Wie... aeh, bekomme ich den raus, was fuer mich
die korrekte CPU option waere?

Original geschrieben von CW
Nichts zu danken ... wenn Probleme gut beschrieben
werden (wie in diesem Falle) und man lesen kann, was für
Fehler vorgekommen sind, kann man auch erwarten, dass
einem geholfen wird :)
Hach, da fuehlt man sich auf dem Board direkt wohl ;)

Original geschrieben von CW
Grüße und viel Erfolg mit OBSD
Den habe ich bisher und werde ihn auch sicher weiter haben, danke :)

ports
 
Original geschrieben von ports
Ja, es geht mir mehr um so Dinge wie *USB* und so. Ich brauche kein
USB, kein Serial, kein Parallel, kein SOUND und so Dinge. Aber ich werd
mich da einfach mal rantasten. Ich bin naemlich z.B. nicht ganz sicher,
ob man fuer Tastatur|Maus nicht auch serial braucht, obwohl es ueber
PS/2 reinkommt. Muesste ich mal schauen.


Für die PS/2-Maus gibt es den wsmouse* Treiber. Er ist standardmäßig aktiviert und du brauchst dich eigentlich nicht darum extra zu bemühen.

Man macht (normalerweise) was mit dem Kernel, wenn "extra" Geräte hinzukommen, die nicht bei jedem 08/15-Rechner zu finden sind. Natürlich kann man auch ein paar Sachen bezüglich der Performance machen (wie z.B. NKMEMPAGES usw.), aber dies ist wohl eher für spezielle Rechner wie z.B. Mailserver u.ä. gedacht.

Ich kann dir einen Tipp geben, wenn du Zusatzinfos zu OBSD
haben möchtest: http://www.unixscout.de ist eine 100%-ige
OpenBSD-Website mit vielen guten Tipps (und nicht nur zum
Thema Kernel).

'man options' ist es! Ja, das ist doch mal was handfestes :)


Ja, ich habe einfach mal ein 'uname -a' gemacht und dachte dann bei
mir, dass "OpenBSD drax.my.domain 3.4 kernel#1 i386" ein toller
Hinweis waere. Ich dachte da in diesem Zusammenhang an die
Prozessorfamilie, ja. Wie... aeh, bekomme ich den raus, was fuer mich
die korrekte CPU option waere?

Versuche es doch mal mit dmesg ;)

Hach, da fuehlt man sich auf dem Board direkt wohl ;)

So muss es auch sein. :)

Den habe ich bisher und werde ihn auch sicher weiter haben, danke :)

ports [/B]

Gut so!

Gruß

CW
 
Zurück
Oben