LINUX.ORG.RU

Сборка модуля ядра из исходников под Linux 4.4

 , ,


0

1

Собираю модуль ядра на linux 3.8.0-19-generic - успех. На 4.4.0-133-generic не собирается, что, собственно, и рекомендуется:

Kernel == 3.8. Due to tree function changes this version of can-eth-gw will only compile at this Kernel version. But it should be modifiable for other verions.

Пытался определить зависимости (strace make) при сборке на обоих ядрах (слева 4.4, справа 3.8):

execve("/usr/bin/make", ["make"], [/* 62 vars */]) = 0	      |	execve("/usr/bin/make", ["make"], [/* 52 vars */]) = 0
brk(NULL)                               = 0x250e000	      |	brk(0)                                  = 0x16e2000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
							      >	mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such 
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3		open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=113782, ...}) = 0     |	fstat(3, {st_mode=S_IFREG|0644, st_size=69923, ...}) = 0
mmap(NULL, 113782, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8d9cb8 |	mmap(NULL, 69923, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6487c14
close(3)                                = 0			close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC)  |	open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) 
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\r |	read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20#\0
fstat(3, {st_mode=S_IFREG|0644, st_size=14608, ...}) = 0      |	fstat(3, {st_mode=S_IFREG|0644, st_size=31760, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	mmap(NULL, 2128984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY
mmap(NULL, 2109680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY |	mprotect(0x7f6487805000, 2093056, PROT_NONE) = 0
mprotect(0x7f8d9c776000, 2093056, PROT_NONE) = 0	      |	mmap(0x7f6487a04000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|
mmap(0x7f8d9c975000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE| <
close(3)                                = 0			close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) =	open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) =
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\2\ |	read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\3
fstat(3, {st_mode=S_IFREG|0755, st_size=1868984, ...}) = 0    |	fstat(3, {st_mode=S_IFREG|0755, st_size=1848024, ...}) = 0
mmap(NULL, 3971488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY |	mmap(NULL, 3961912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY
mprotect(0x7f8d9c569000, 2097152, PROT_NONE) = 0	      |	mprotect(0x7f64875f4000, 2093056, PROT_NONE) = 0
mmap(0x7f8d9c769000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE |	mmap(0x7f64877f3000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE
mmap(0x7f8d9c76f000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE |	mmap(0x7f64877f9000, 17464, PROT_READ|PROT_WRITE, MAP_PRIVATE
close(3)                                = 0		      |	close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOE
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20m\0
arch_prctl(ARCH_SET_FS, 0x7f8d9cb7d700) = 0		      |	fstat(3, {st_mode=S_IFREG|0755, st_size=135175, ...}) = 0
mprotect(0x7f8d9c769000, 16384, PROT_READ) = 0		      |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
mprotect(0x7f8d9c975000, 4096, PROT_READ) = 0		      |	mmap(NULL, 2212936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY
mprotect(0x630000, 4096, PROT_READ)     = 0		      |	mprotect(0x7f6487231000, 2093056, PROT_NONE) = 0
mprotect(0x7f8d9cb9c000, 4096, PROT_READ) = 0		      |	mmap(0x7f6487430000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|
munmap(0x7f8d9cb80000, 113782)          = 0		      |	mmap(0x7f6487432000, 13384, PROT_READ|PROT_WRITE, MAP_PRIVATE
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_ |	close(3)                                = 0
setrlimit(RLIMIT_STACK, {rlim_cur=RLIM64_INFINITY, rlim_max=R |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
brk(NULL)                               = 0x250e000	      |	mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
brk(0x252f000)                          = 0x252f000	      |	arch_prctl(ARCH_SET_FS, 0x7f6487c10740) = 0
							      >	mprotect(0x7f64877f3000, 16384, PROT_READ) = 0
							      >	mprotect(0x7f6487430000, 4096, PROT_READ) = 0
							      >	mprotect(0x7f6487a04000, 4096, PROT_READ) = 0
							      >	mprotect(0x627000, 4096, PROT_READ)     = 0
							      >	mprotect(0x7f6487c28000, 4096, PROT_READ) = 0
							      >	munmap(0x7f6487c14000, 69923)           = 0
							      >	set_tid_address(0x7f6487c10a10)         = 2717
							      >	set_robust_list(0x7f6487c10a20, 0x18)   = 0
							      >	futex(0x7fffad445fac, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_R
							      >	rt_sigaction(SIGRTMIN, {0x7f648721f800, [], SA_RESTORER|SA_SI
							      >	rt_sigaction(SIGRT_1, {0x7f648721f880, [], SA_RESTORER|SA_RES
							      >	rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
							      >	getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_IN
							      >	getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_IN
							      >	setrlimit(RLIMIT_STACK, {rlim_cur=RLIM_INFINITY, rlim_max=RLI
							      >	brk(0)                                  = 0x16e2000
							      >	brk(0x1703000)                          = 0x1703000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 	open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 
fstat(3, {st_mode=S_IFREG|0644, st_size=4230720, ...}) = 0    |	fstat(3, {st_mode=S_IFREG|0644, st_size=8460064, ...}) = 0
mmap(NULL, 4230720, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8d9bf |	mmap(NULL, 8460064, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6486a
close(3)                                = 0			close(3)                                = 0
rt_sigaction(SIGHUP, {0x409b80, [HUP], SA_RESTORER|SA_RESTART |	rt_sigaction(SIGHUP, {0x405c40, [HUP], SA_RESTORER|SA_RESTART
rt_sigaction(SIGQUIT, {0x409b80, [QUIT], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGQUIT, {0x405c40, [QUIT], SA_RESTORER|SA_RESTA
rt_sigaction(SIGINT, {0x409b80, [INT], SA_RESTORER|SA_RESTART |	rt_sigaction(SIGINT, {0x405c40, [INT], SA_RESTORER|SA_RESTART
rt_sigaction(SIGTERM, {0x409b80, [TERM], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGTERM, {0x405c40, [TERM], SA_RESTORER|SA_RESTA
rt_sigaction(SIGXCPU, {0x409b80, [XCPU], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGXCPU, {0x405c40, [XCPU], SA_RESTORER|SA_RESTA
rt_sigaction(SIGXFSZ, {0x409b80, [XFSZ], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGXFSZ, {0x405c40, [XFSZ], SA_RESTORER|SA_RESTA
rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTAR |	rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTAR
fcntl(1, F_GETFL)                       = 0x8402 (flags O_RDW |	getcwd("/home/reddyard/Downloads/can_eth_gw-master", 4096) = 
fcntl(1, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0	      |	stat("/usr/include", {st_mode=S_IFDIR|0755, st_size=4096, ...
fcntl(2, F_GETFL)                       = 0x8402 (flags O_RDW |	stat("/usr/gnu/include", 0x7fffad4446c0) = -1 ENOENT (No such
fcntl(2, F_SETFL, O_RDWR|O_APPEND|O_LARGEFILE) = 0	      <
getcwd("/home/reddyard/\320\227\320\260\320\263\321\200\321\2 <
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0     <
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0     <
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...} <
readlink("/proc/self/fd/1", "/dev/pts/1", 4095) = 10	      <
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(136 <
ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0     <
ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0     <
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...} <
readlink("/proc/self/fd/2", "/dev/pts/1", 4095) = 10	      <
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(136 <
stat("/usr/include", {st_mode=S_IFDIR|0755, st_size=12288, .. <
stat("/usr/gnu/include", 0x7ffccdc67620) = -1 ENOENT (No such <
stat("/usr/local/include", {st_mode=S_IFDIR|0755, st_size=409	stat("/usr/local/include", {st_mode=S_IFDIR|0755, st_size=409
stat("/usr/include", {st_mode=S_IFDIR|0755, st_size=12288, .. |	stat("/usr/include", {st_mode=S_IFDIR|0755, st_size=4096, ...
rt_sigaction(SIGCHLD, {0x412dd0, [CHLD], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGCHLD, {0x40e130, [CHLD], SA_RESTORER|SA_RESTA
rt_sigaction(SIGUSR1, {0x4165c0, [USR1], SA_RESTORER|SA_RESTA |	rt_sigaction(SIGUSR1, {0x4108c0, [USR1], SA_RESTORER|SA_RESTA
brk(0x2550000)                          = 0x2550000	      <
stat(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0	stat(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3      |	openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEX
fstat(3, {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0	      |	getdents(3, /* 16 entries */, 32768)    = 472
getdents(3, /* 17 entries */, 32768)    = 512		      <
getdents(3, /* 0 entries */, 32768)     = 0			getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0			close(3)                                = 0
open("Makefile", O_RDONLY)              = 3			open("Makefile", O_RDONLY)              = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0		      <
fstat(3, {st_mode=S_IFREG|0664, st_size=1991, ...}) = 0		fstat(3, {st_mode=S_IFREG|0664, st_size=1991, ...}) = 0
							      >	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
read(3, " ###############################"..., 4096) = 1991	read(3, " ###############################"..., 4096) = 1991
pipe([4, 5])                            = 0			pipe([4, 5])                            = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_S |	vfork()                                 = 2718
close(5)                                = 0			close(5)                                = 0
read(4, "4.4.0-133-generic\n", 200)     = 18		      |	read(4, "3.8.0-19-generic\n", 200)      = 17
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=264 |	--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigreturn({mask=[]})                 = 18		      |	rt_sigreturn(0xffffffff)                = 17
read(4, "", 182)                        = 0		      |	read(4, "", 183)                        = 0
close(4)                                = 0			close(4)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = |	wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) =
pipe([4, 5])                            = 0			pipe([4, 5])                            = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_S |	vfork()                                 = 2719
close(5)                                = 0			close(5)                                = 0
read(4, "/home/reddyard/\320\227\320\260\320\263\321\200\321\ |	read(4, "/home/reddyard/Downloads/can_eth"..., 200) = 43
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=264 |	--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigreturn({mask=[]})                 = 50		      |	rt_sigreturn(0xffffffff)                = 43
read(4, "", 150)                        = 0		      |	read(4, "", 157)                        = 0
close(4)                                = 0			close(4)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = |	wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) =
read(3, "", 4096)                       = 0			read(3, "", 4096)                       = 0
close(3)                                = 0			close(3)                                = 0
stat("RCS", 0x7ffccdc675d0)             = -1 ENOENT (No such  |	munmap(0x7f6487c25000, 4096)            = 0
stat("SCCS", 0x7ffccdc675d0)            = -1 ENOENT (No such  |	stat("RCS", 0x7fffad444670)             = -1 ENOENT (No such 
							      >	stat("SCCS", 0x7fffad444670)            = -1 ENOENT (No such 
stat("Makefile", {st_mode=S_IFREG|0664, st_size=1991, ...}) =	stat("Makefile", {st_mode=S_IFREG|0664, st_size=1991, ...}) =
stat("modules", 0x7ffccdc653e0)         = -1 ENOENT (No such  |	stat("modules", 0x7fffad442550)         = -1 ENOENT (No such 
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...} |	fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}
write(1, "make -C /lib/modules/4.4.0-133-g"..., 105) = 105    |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
							      >	write(1, "make -C /lib/modules/3.8.0-19-ge"..., 97) = 97
pipe([3, 4])                            = 0			pipe([3, 4])                            = 0
close(4)                                = 0			close(4)                                = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0			fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL	rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_S |	vfork()                                 = 2720
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0			rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0, NULL) = |	wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) =
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=264 |	--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigreturn({mask=[]})                 = 26428		      |	rt_sigreturn(0xffffffff)                = 2720
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) =  <
fstat(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0	      <
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995  <
read(4, "", 4096)                       = 0		      <
close(4)                                = 0		      <
open("/usr/share/locale/ru/LC_MESSAGES/make.mo", O_RDONLY) =  <
open("/usr/share/locale-langpack/ru/LC_MESSAGES/make.mo", O_R <
fstat(4, {st_mode=S_IFREG|0644, st_size=55696, ...}) = 0      <
mmap(NULL, 55696, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f8d9cb8e <
close(4)                                = 0		      <
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O <
fstat(4, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0      <
mmap(NULL, 26258, PROT_READ, MAP_SHARED, 4, 0) = 0x7f8d9cb870 <
close(4)                                = 0		      <
write(1, "Makefile:51: \320\276\321\210\320\270\320\261\320\2 <
write(2, "make: *** [modules] \320\236\321\210\320\270\320\26 <
rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL	rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0			rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
chdir("/home/reddyard/\320\227\320\260\320\263\321\200\321\20 |	stat("modules", 0x7fffad4425e0)         = -1 ENOENT (No such 
							      >	chdir("/home/reddyard/Downloads/can_eth_gw-master") = 0
close(1)                                = 0			close(1)                                = 0
exit_group(2)                           = ?		      |	munmap(0x7f6487c25000, 4096)            = 0
+++ exited with 2 +++					      |	exit_group(0)                           = ?
, но все, что я вижу - и на старом и на новом ядре сборщик не может найти одни и те же файлы, все, больше мне мой навык не позволяет. При этом сборка на 3.8 успешна. Как с наименьшей болью определить зависимости, чтобы собрать модуль на linux 4.4?

Ответ на: комментарий от reddyard

Она где-то в этих строчках

write(1, "Makefile:51: \320\276\321\210\320\270\320\261\320\2 <
write(2, "make: *** [modules] \320\236\321\210\320\270\320\26 <

vzzo ★★★
()
Ответ на: комментарий от anonymous

Ну это специфично для ядра, я же дал общее решение.

DELIRIUM ☆☆☆☆☆
()

Ну, там же чёрным по белому написано, что из-за изменения в функции дерева(нужно грепать исходники модуля по tree) модуль можно собрать только с Kernel == 3.8. Подозреваю, что изменения функций вызваны какими-то изменениями в api какой-то подсистемы ядра. Нужно смотреть, что изменилось в этой версии модуля, по сравнению с предыдущей версией, и в порте для 3.9, выделить соответствующие функции и переписать под актуальные версии ядра. Одна беда, для этого нужно уметь C...

lucentcode ★★★★★
()
Последнее исправление: lucentcode (всего исправлений: 1)

strace make

Мощно

anonymous
()
Ответ на: комментарий от redgremlin

вот что бывает когда человек не знает взглядов Торвальдса на соблюдение совместимости между разными версиями ядра.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

За соблюдение юзерспейсной он пасти рвёт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.