저는 커널 모듈 개발을 배우기 위해 최소한의 Linux 배포판을 만들기 위해 buildroot를 사용하고 있습니다.
hello.ko
최소한의 모듈 (또는 내가 시도한 거의 모든 다른 이름) 을 호출하면 모든 것이 잘 작동합니다.
그러나 정확히 동일한 코드를 사용했지만 모듈 호출이 workqueue.ko
실패하면 insmod workqueue.ko
dmesg에는 다음이 포함됩니다.
workqueue: module is already loaded
그리고 insmod
stderr로 출력합니다:
insmod: can't insert 'workqueue.ko': invalid argument
둘 lsmod
다 cat /proc/modules
비어 있습니다.
이것은정확한 저장소이로 인해 문제가 발생합니다.
참고로 모듈 코드는 다음과 같습니다.
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
int init_module(void)
{
printk(KERN_INFO "hello init\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "hello cleanup\n");
}
커널 버전(buildroot가 암시하는 기본 버전)은 4.9입니다.
답변1
$ uname -a
Linux alan-laptop 4.10.14-200.fc25.x86_64 #1 SMP Wed May 3 22:52:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ ls /sys/module/workqueue/
parameters uevent
$ ls /sys/module/workqueue/parameters/
debug_force_rr_cpu disable_numa power_efficient
이미 내장되어 있습니다. 커널 작업 대기열 동작에 영향을 미치는 매개변수에 대한 네임스페이스를 제공할 수도 있습니다.