星期三, 5月 31, 2017

[Linux] 安裝kernel module



一般如果linux系統裡有提供kernel的ko檔,
一般都會放在
parallels@ubuntu:/lib/modules/4.4.0-21-generic/kernel/drivers

然後假設我要安裝"target_core_mod.ko",
(以scsi來說,target_core_mod.ko是主要的, 所以要先裝。)
則會出現error,
insmod: ERROR: could not insert module target_core_mod.ko: Unknown symbol in module

後來發現他少了dependency的kernel moduel,
用"modinfo"來查詢這kernel的一些訊息。

parallels@ubuntu:/lib/modules/4.4.0-21-generic/kernel/drivers/target$ modinfo target_core_mod
filename:       /lib/modules/4.4.0-21-generic/kernel/drivers/target/target_core_mod.ko
license:        GPL
author:         nab@Linux-iSCSI.org
description:    Target_Core_Mod/ConfigFS
srcversion:     B7EFA4BB121AE1F1D4CC723
depends:        configfs
intree:         Y
vermagic:       4.4.0-21-generic SMP mod_unload modversions

可以發現他需要configfs.ko,
所以我必須先安裝這套才行。
parallels@ubuntu:/$ sudo insmod /lib/modules/4.4.0-21-generic/kernel/fs/configfs/configfs.ko

之後就可以安裝"target_core_mod.ko"了。
如果你要查你安裝哪些ko檔,
使用"lsmod"即可。

沒有留言: