ARM/Arbian Jessie에 sysdig 설치 - 잘못된 커널 버전으로 컴파일된 모듈

ARM/Arbian Jessie에 sysdig 설치 - 잘못된 커널 버전으로 컴파일된 모듈

지난 며칠 동안 나는 Lamobo R1의 Armbian 5.0/Debian Jessie 8.0에서 sysdig를 설치하고 실행하려고 여러 번 시도했습니다.

설치 후:

apt-get install -t jessie-backports sysdig sysdig-dkms dkms 

실행시 다음과 같은 오류가 발생합니다.

# sysdig
Unable to load the driver
error opening device /dev/sysdig0. Make sure you have root credentials and that the sysdig-probe module is loaded.

며칠 전 첫 번째 시도에서 모듈이 삽입되지 않은 것을 발견 /lib/modules/4.4.1-sunxi/updates/dkms/sysdig-probe.ko하고 asm-offsets.h 포함에 대해 언급했습니다 /var/lib/dkms/sysdig/0.5.1/build/main.c.

make scripts또한 커널 디렉토리에서 실행 해야 했습니다 /usr/src/linux-headers-4.4.1-sunxi.

그 후 /usr/lib/dkms/dkms_autoinstaller start모듈을 실행하고 컴파일했습니다. 그러나 런타임 오류는 동일합니다.

insmod를 실행하면 다음과 같이 됩니다.

#insmod /lib/modules/4.4.1-sunxi/updates/dkms/sysdig-probe.ko
insmod: ERROR: could not insert module /lib/modules/4.4.1-sunxi/updates/dkms/sysdig-probe.ko: Invalid module format

modinfo를 실행합니다:

modinfo /lib/modules/4.4.1-sunxi/updates/dkms/sysdig-probe.ko 

산출:

filename:       /lib/modules/4.4.1-sunxi/updates/dkms/sysdig-probe.ko
author:         sysdig inc
license:        GPL
depends:        
vermagic:       4.4.1 SMP mod_unload ARMv7 p2v8 
parm:           max_consumers:Maximum number of consumers that can     simultaneously open the devices (uint)
parm:           verbose:Enable verbose logging (bool)

모듈의 커널 버전이 잘못된 것 같습니다.

이제 설치할 때에도 다음과 같이 말합니다.

#apt-get install -t jessie-backports sysdig sysdig-dkms dkms 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
sysdig is already the newest version.
The following NEW packages will be installed:
  dkms sysdig-dkms
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Need to get 0 B/137 kB of archives.
After this operation, 821 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Selecting previously unselected package dkms.
(Reading database ... 72251 files and directories currently installed.)
Preparing to unpack .../dkms_2.2.0.3-2_all.deb ...
Unpacking dkms (2.2.0.3-2) ...
Selecting previously unselected package sysdig-dkms.
Preparing to unpack .../sysdig-dkms_0.5.1-1~bpo8+1_all.deb ...
Unpacking sysdig-dkms (0.5.1-1~bpo8+1) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up dkms (2.2.0.3-2) ...
Setting up sysdig-dkms (0.5.1-1~bpo8+1) ...
Loading new sysdig-0.5.1 DKMS files...
First Installation: checking all kernels...
Building only for 4.4.1-sunxi
Building initial module for 4.4.1-sunxi
Done.

sysdig-probe:
Running module version sanity check.
  - Original module
    - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.4.1-sunxi/updates/dkms/

depmod....

DKMS: install completed.

다시 말하지만, sysdig-probe.ko가 4.4.1-sunxi용으로 컴파일되고 있다는 보고가 있지만 이는 4.4.1-sunxi가 아닌 4.4.1 커널에 대해 컴파일됩니다.

uname -r출력: 4.4.1-sunxi. 4.4.1 커널이나 4.4.1 소스가 설치되어 있지 않습니다.

root@ruir:/usr/src# ls -la
total 16
drwxr-xr-x  4 root root 4096 Apr  3 11:06 .
drwxr-xr-x 11 root root 4096 Oct 23 21:04 ..
drwxr-xr-x 25 root root 4096 Mar 30 21:29 linux-headers-4.4.1-sunxi
drwxr-xr-x  2 root root 4096 Apr  3 11:06 sysdig-0.5.1

그래서 제 질문은, Linux에 4.4.1 대신 4.4.1-sunxi로 컴파일하도록 변경할 수 있는 파일/구성 항목이 있습니까?입니다.

답변1

/lib/modules/4.4.1-sunxi/build아래에 나타나는 4.4.1을 4.4.1-sunxi로 변경 해야 했습니다.

    include/generated/utsrelease.h:#define UTS_RELEASE "4.4.1"
    include/config/auto.conf.cmd:ifneq "$(KERNELVERSION)" "4.4.1"
    include/config/kernel.release:4.4.1

sysdig-probe.ko그 후 올바른 버전으로 sysdig/compile을 설치할 수 있었습니다 .

따라서 일부 스크립트가 uname -r올바른 실행(또는 다른 커널 버전 허용) 및 출력 작업을 수행하는 동안, 적어도 모듈 컴파일의 일부는 컴파일된 모듈을 조정하기 위해 해당 커널 버전 파일을 참조하는 것 같습니다.

관련 정보