지난 며칠 동안 나는 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
올바른 실행(또는 다른 커널 버전 허용) 및 출력 작업을 수행하는 동안, 적어도 모듈 컴파일의 일부는 컴파일된 모듈을 조정하기 위해 해당 커널 버전 파일을 참조하는 것 같습니다.