Za pierwszym razem czekałem 5 godzin i trochę się zniecierpliwiłem, zwłaszcza, że poprzednio na tym samym sprzęcie jądro 2.4 skompilowało się w 40 minut(tyle, że wtedy nowy kernel robiłem do Slackware).
dedito pisze:
- na czym to robisz?
Na VirtualBoxie, gospodarz to Pentium Dual Core T2390 @ 1.86GHz, 3 GB RAM z systemem Ubuntu. Postanowiłem odpalić wirtualną maszynę bez trybu graficznego( bo i tak robił lekką zamułę) i faktycznie po dwóch godzinach sypnęło błędem.
dedito pisze:
- po co to robisz?
Na projekt mam filtrowanie w warstwie 7. Maszyna wirtualna ma pełnić zadanie tego filtra, a gospodarzem ma być Debian. Właśnie przez to zależy mi na tym layer7. Ogólnie to jestem też otwarty na
wszystkie propozycje o ile są oparte na Debianie i filtrują warstwę aplikacji.
dedito pisze:
Podawanie linków do rozwiązań błędów też nie jest właściwe.
Linki po czasie mogą wygasnąć i wątek stanie się mało użyteczny.
Wklej do wątku w znaczniki Quote bardziej ważne informacje z tych podanych wcześniej linków.
Debian jest świeżo zassany, kernel który kompiluję to 2.6.34, iptables w wersji 1.4.8 oraz iproute2 2.6.34. Na to wszystko patche z powerpack-2.6.34.
Teraz napotkane błędy #1:
make[2]: *** [arch/x86/kernel/ptrace.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2
make: *** [arch/x86] Error 2
i rozwiązanie:
w pliku: linux-2.6.32.59/arch/x86/include/asm/ptrace.h
#ifdef __KERNEL__
#include <linux/init.h>
+#include <linux/linkage.h>
struct cpuinfo_x86;
struct task_struct;
@@ -142,8 +143,8 @@
int error_code, int si_code);
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
-extern long syscall_trace_enter(struct pt_regs *);
-extern void syscall_trace_leave(struct pt_regs *);
+extern asmregparm long syscall_trace_enter(struct pt_regs *);
+extern asmregparm void syscall_trace_leave(struct pt_regs *);
oraz błąd #2 i rozwiązanie:
------------------------------------------------------------------------------------------------------
PROBLEM:-1
------------------------------------------------------------------------------------------------------
gcc: error: elf_i386: No such file or directory
OBJCOPY arch/x86/vdso/vdso32-int80.so
objcopy: 'arch/x86/vdso/vdso32-int80.so.dbg': No such file
make[2]: *** [arch/x86/vdso/vdso32-int80.so] Error 1
make[1]: *** [arch/x86/vdso] Error 2
make: *** [arch/x86] Error 2
------------------------------------------------------------------------------------------------------
SOLUTION:
----------
The problem is that gcc 4.6 doesn't support anymore linker-style architecture options.
Apply the following changes to solve the problem :
In arch/x86/vdso/Makefile :
replace "-m elf_x86_64" by "-m64" on the line starting with VDSO_LDFLAGS_vdso.lds
replace "-m elf_i386" by "-m32" on the line starting with VDSO_LDFLAGS_vdso32.lds
i teraz dostałem kolejnym błędem:
Building modules, stage 2.
MODPOST 1636 modules
ERROR: "__bad_udelay" [drivers/net/tokenring/tms380tr.ko] undefined!
WARNING: modpost: Found 11 section mismatch(es).
To see full detalis build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
/usr/src/linux-2.6.34/scripts/Makefile.modpost:91: polecenia dla obiektu '__modpost nie powiodły się
make[2]: *** [__modpost] Błąd 1
Makefile:1091: polecenia dla obiektu 'modules' nie powiodły się
Make[1]: *** [modules] Błąd 2
make[1]: Opuszczenie katalogu '/usr/src/linux-2.6.34'
debian/ruleset/targets/common.mk:295: polecenia dla obiektu 'debian/stamp/build/kernel' nie powiodły się
make: *** [debian/stamp/build/kernel] Błąd 2