
過去数日間、私は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
正しい実行(または他のカーネルバージョンを許可する)および出力操作を実行している間、少なくともモジュールコンパイルの一部は、コンパイルされたモジュールを調整するためにそのカーネルバージョンファイルを参照するようです。