kernel kompilieren: "no such file..."

Herakles

Profifragensteller
Hi!

Ich habe mir gerade eine Kernelkonfigurationsdatei zurechtgeschustert und sie gespeichert in "/root/kernels" und möchte jetzt weiterhin so vorgehen wie im Handbuch beschrieben. Da steht nun:

Generieren Sie die Kernel Quellen mit config(8).

# /usr/sbin/config HERAKLES

Das vorige Kommando gibt das Bauverzeichnis aus.

nun ja, ich bekomme als Meldung dazu
config: HERAKLES: No such file or directory

wo kann da wohl mein Problem liegen? Sorry, komme hier echt nicht weiter, auch wenns trivial erscheint.

Herakles
 
Tja könnte daran liegen das dein HERAKLES nicht in /usr/sbin liegt sondern in /root/kernels

/usr/sbin/config /root/kernels/HERAKLES
 
nein, das ist leider nicht das problem. Habe die entsprechende Zeile beim kommando abgeändert und bekomme dieselbe Nachricht als wie zuvor...

????
 
@Herakles
Ja, im Handbuch wird aber noch ein link angelegt:
Code:
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
Danach solltest du dich also in /usr/src/sys/i386/conf befinden, während du config HERAKLES aufrufst.

@odenter
odenter schrieb:
[...]könnte daran liegen das dein HERAKLES nicht in /usr/sbin liegt [...]
Aber eine Kernelkonfig gehört (soviel ich weiss) auch nicht wirklich in /usr/sbin oder hab ich dich da falsch verstanden ? ;)
 
Zuletzt bearbeitet:
Eine Kernelconfig gehört nach /usr/src/sys/i386/conf, wenn es ein x86 ist.
Danach unter /usr/src:

make buildkernel KERNCONF=$DEINE_KERNELCONF
make installkernel KERNCONF =$DEINE_KERNELCONF

ausführen
 
Original geschrieben von Tulkas

@odenter
Aber eine Kernelkonfig gehört (soviel ich weiss) auch nicht wirklich in /usr/sbin oder hab ich da was falsch verstanden ? ;)
Wenn ich erhlich bin kein Plan. :)
Ich bin noch nicht so der Crack, aber ich hatte gerade heute selber nen Kernel übersetzt (wg. Dual Prozessor) und da hab ich das (fast)genauso wie im Handbuch gemacht. Nur das ich die GENERIC Datei per KDE kopiert bzw. umbewegt habe. :)

Ich hab mich vermutlich falsch ausgedrückt. Ich meinte natürlich das er nicht in dem richtigen Pfad steht /usr/src/.... und deswegen die Fehlermeldung bekommt. :)
 
@asg
9.3 Building and Installing a Custom Kernel
[...]
If you have not upgraded your source tree in any way (you have not run CVSup, CTM, or used anoncvs), then you should use the config, make depend, make, make install sequence.
[...]
Aber letzten Endes bleibt es wohl Geschmacksache wie man seinen Kernel backt....
 
Hmm, stuemmt, Tulkas, aber was hindert einen daran, auch mal die andere Variante zu beschreiten?
Sicher nichts...

@Herakles, hast Du es auf beide Arten versucht wie im Handbuch beschrieben?
 
hmmm... also ich habs jetzt auf beide Arten versucht. Bei Weg 1 aus dem Handbuch erhalte ich nach wie vor diegleiche Antwort, daß eben no such file or dir existieren würde. Meine Datei "HERAKLES" liegt in

/usr/src/sys/i386/conf

und ich habe folgendes wie im Handbuch steht eingegeben:

# /usr/sbin/config MYKERNEL

Hm, also da sachter mir dann halt no such file bla...

Dann Weg 2:

# cd /usr/src
# make buildkernel KERNCONF=HERAKLES
Antwort:
make: don't know how to make buildkernel. Stop

Hilfe, hilfe!


Herakles
 
Original geschrieben von Herakles
Meine Datei "HERAKLES" liegt in

/usr/src/sys/i386/conf

und ich habe folgendes wie im Handbuch steht eingegeben:

# /usr/sbin/config MYKERNEL

Hast du genau diesen Befehl eingegeben? Statt "MYKERNEL" muss da natürlich "HERAKLES" hin.

Grüße
Styx
 
jeppa. also logischerweise nirgendwo "MYKERNEL" benutzt, sondern immer fein "HERAKLES" benutzt. Hab das oben falschwerweise hingeschrieben, war wohl n "cut'n'paste" aus dem Handbuch, sorry.
 
dann liegt dein kernel-config file nicht in /usr/src/sys/i386/conf

du sagtest doch, dasss du es nach /boot kopiert hättest?

dann verschieb es zurück
 
@asg: Naja, ich denke mal schon, daß die Kernelquellen installiert sind. Also ich musste das jedenfalls nachträglich machen, weil ich kein Verzeichnis /usr/src/sys hatte. Da ich nach dieser Installation dann so ein Verzeichnis hatte und auch die gesamten Unterverzeichniss davon denke ich doch mal, daß die Kernelsourcen ordnungsgemäß installiert sind, oder? Habs jedenfalls nach Handbuch gemacht, sollte also richtig sein.

@ouTi: meine Datei "HERAKLES" liegt bereits in /usr/scr/sys/i386/conf ...
 
Da ich irgendwie das Gefühl habe, dass du einen simplen Bedienungsfehler machst (sorry falls es nicht so sein sollte, es ist nur ein Gefühl), hier nochmal der IMHO schnellste Weg zu einem eigenen Kernel:

1. Kernelsourcen installieren. Am besten über /usr/sbin/sysinstall dann Configure -> Distributions -> Src. Dann auf jeden Fall "Sys" auswählen, je nachdem was man genau machen will (Router, Firewall etc.) empfiehlt es sich einfach alles auszuwählen.

2. Kernel editieren. Das macht man am besten so:
Code:
# cd /usr/src/sys/i368/conf
# cp GENERIC HERAKLES
# edit HERAKLES

Man kopiert also den Inhalt von GENERIC zu HERAKLES und editiert dann, was man gerne editiert haben will.

3. Kompilieren. Einfach folgendes eingeben:
Code:
# config HERAKLES
Kernel build directory is ../compile/HERAKLES
Don't forget to do a ``make depend''
# cd ../compile/HERAKLES
# make depend && make && make install

Anschließen macht man einen Reboot und fertig ist der neue Kernel. Auf diese Weise habe ich es immer unter FreeBSD 5.x hinbekommen und nie Probleme gehabt.

Das steht hier alles zwar schon mehrmals im Forum und auch so ähnlich im Handbuch, aber es schadet nix, das öfters mal zu posten ;)
 
Zuletzt bearbeitet:
Und nochmal, alles Schritte hintereinander, solltest du eigentlich fast per copy&paste ausführen können... als root, of course.
Code:
cd /usr/src/sys/i386/conf
cp GENERIC HERAKLES
vi HERAKLES
config HERAKLES
cd ../compile/HERAKLES
make depend
make
make install
reboot
Anstelle von vi kannst du natürlich den Editor deiner Wahl hernehmen ;)

Gruß
 
Mensch Leute, danke danke danke für Eure Hilfe!

Ich bin einfach nochmal alles von oben nach unten abgegangen und habe jetzt nicht nur die Kernel sourcen installiert, sondern einfach alle. Feddich zack aus. Jetzt rattert der kleine Kasten hier gerade. Bin mal gespannt,ob ich durch den reboot zurück auf diesen x-server finde... ;-)


FINALLY!
 
grrrr.... das war voreilig. Ich muss Euch wohl weiternerfen ;-)

Also, mit beiden Methoden aus dem Handbuch bekomme ich nach viel Textgeratter folgenden Output:

(...)
umass.o: In function `umass_cam_cb':
umass.o(.text+0x1afd): undefined reference to `xpt_done'
umass.o: In function `umass_cam_sense_cb':
umass.o(.text+0x1c04): undefined reference to `xpt_done'
umass.o(.text+0x1c15): undefined reference to `xpt_done'
umass.o(.text+0x1c2f): more undefined references to `xpt_done' follow
*** Error code 1

Stop in /usr/obj/usr/src/sys/HERAKLES.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
192#

Jemand ne Idee, was das auf sich hat? Fehler in meiner Kernel-Datei "HERAKLES"?
 
Ja, du hast wohl etwas zuviel aus der Config gelöscht.

Der Eintrag device umass braucht zusätzlich noch:
device scbus
device da
device pass


Siehe auch die Manpage von umass.

Gruß
 
Mein Güte saintjoe, Du strotzt ja vor Wissen *respekthabe*!

Alles hat jetzt super geklappt, da war zwar noch ne sehr langsame Abarbeitung von "uhid" wenn ich mich nicht irre, aber darum kümmer ich mich mal, wenn ich Lust und Zeit habe. MEIN ERSTER KERNEL LÄUFT! Bin ich stolz? Naja, ein bißchen...

Hui, es fängt an Spaß zu machen.


Grüße aus dem Münsterland

Herakles
 
Zurück
Oben