View previous topic :: View next topic |
Author |
Message |
n3rd Guru
Joined: 30 Apr 2005 Posts: 328
|
Posted: Fri Mar 09, 2012 9:17 pm Post subject: [SOLVED] kompilacja modułu jądra z poziomu ebuilda |
|
|
Witam,
Mam moduł jądra, który chcę instalować z poziomu ebuild. Makefile wygląda tak:
Code: | KERNELDIR := /lib/modules/`uname -r`/build
obj-m := nazwa_mod.o
default:
$(MAKE) -C $(KERNELDIR) M=`pwd` modules |
I kiedy chcę to skompilować wszystko działa prawidłowo:
Code: | $ make
make -C /lib/modules/`uname -r`/build M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-3.2.9-hardened'
CC [M] /home/danice/mod/nazwa_mod.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/danice/mod/nazwa_mod.mod.o
LD [M] /home/danice/mod/nazwa_mod.ko
make[1]: Leaving directory `/usr/src/linux-3.2.9-hardened' |
I zabrałem się do przygotowanie do tego ebuildu ale dostaję coś takiego:
Code: | >>> Compiling source in /var/tmp/portage/dev-util/modtest-0.1/work ...
make -C /lib/modules/`uname -r`/build M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-3.2.9-hardened'
Makefile:610: /usr/src/linux-3.2.9-hardened/arch/amd64/Makefile: No such file or directory
make[1]: *** No rule to make target `/usr/src/linux-3.2.9-hardened/arch/amd64/Makefile'. Stop.
make[1]: Leaving directory `/usr/src/linux-3.2.9-hardened'
make: *** [default] Error 2 |
I teraz o co chodzi z tą linią 610:
Code: | $ sed -n 607,612p /lib/modules/3.2.9-hardened/build/Makefile
endif
endif
include $(srctree)/arch/$(SRCARCH)/Makefile
ifneq ($(CONFIG_FRAME_WARN),0) |
Wygląda na to, że problem jest z tym, jak w zmiennych definiowana jest SRCARCH. Przypuszczalnie portage ustawia tę zmienną na "amd64" a niestety jądro ma to ustawione albo na x86 albo x86_64 (dlatego nie znajduje 'amd64').
Czy ktoś może ma pomysł w jaki sposób można rozwiązać ten problem?
Pozdrawiam,
daniel _________________ "Jeśli coś jest niemożliwe do zrobienia, przychodzi ktoś kto o tym nie wie i robi to."
-- Albert Einstein
Zanim zadasz pytanie na forum, wykonaj: /etc/init.d/brain.
Last edited by n3rd on Sat Mar 10, 2012 1:04 pm; edited 2 times in total |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Fri Mar 09, 2012 11:27 pm Post subject: |
|
|
Mozesz sprobowac przekazac poprawne SRCARCH do Make, poinienes tez przekazac KERNELDIR poniewaz uzywanie 'uname -r' to naprawde zly pomysl.
Jednak najpierw radzil bym Ci sprawdzenie czy mozesz uzyc linux-mod eclass. Przykladowy ebuild z acpI_call:
Code: |
EAPI=3
EGIT_REPO_URI="git://github.com/mkottman/acpi_call.git"
inherit git-2 linux-info linux-mod
DESCRIPTION="A kernel module that enables you to call ACPI methods"
HOMEPAGE="http://github.com/mkottman/acpi_call"
SRC_URI=""
LICENSE="GPL-2"
SLOT="0"
KEYWORDS=""
IUSE=""
CONFIG_CHECK="ACPI"
MODULE_NAMES="acpi_call(misc:${S})"
BUILD_TARGETS="clean default"
|
Wszystkie funkcje wywola eclass. |
|
Back to top |
|
|
n3rd Guru
Joined: 30 Apr 2005 Posts: 328
|
Posted: Sat Mar 10, 2012 1:03 pm Post subject: |
|
|
Dzięki! Przerobiłem Makefile bazując na acpi_call oraz dodałem zmiany w ebuild i teraz wszystko działa znakomicie
Swoją drogą, to nie wiem, czy kiedyś nie warto w gentoo zrobić globalnego porządku z tym, aby oznaczenie architektury 64-bitowej było zgodne z oznaczeniem używanym w jądrze, czyli x86_64 zamiast amd64.
Pozdrawiam _________________ "Jeśli coś jest niemożliwe do zrobienia, przychodzi ktoś kto o tym nie wie i robi to."
-- Albert Einstein
Zanim zadasz pytanie na forum, wykonaj: /etc/init.d/brain. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|