ubuntu 插入内核模块时参数无效

kxkpmulp  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(118)

我写了一个简单的内核模块,并声明了3个参数:

#include<linux/module.h>

int date = 1, month = 1, year = 2000;
module_param(date, int, 0);
MODULE_PARM_DESC(date, "date of time");
module_param(month, int, 0);
MODULE_PARM_DESC(month, "month of time");
module_param(year, int, 0);
MODULE_PARM_DESC(year, "year of time");

int init_module(void) {
    printk(KERN_INFO "Today is %d/%d/%d.\n", year, month, date);  // write to dmesg file
    return 0;
}

字符串
当我执行此命令时:

sudo insmod hello.ko year=`date +%Y` month=`date +%m` date=`date +%d`


终端显示:

insmod: ERROR: could not insert module hello.ko: Invalid parameters


所以我检查dmesg日志:

[ 4283.774215] hello: `09' invalid for parameter `date'


但当我将命令更改为:

sudo insmod hello.ko year=`date +%Y` month=`date +%m` date=9


成功了!

[ 4373.679843] Today is 2023/7/9.


为什么date +%d不能工作,而其他的工作?

wa7juj8i

wa7juj8i1#

你应该这样重写你的命令,以避免date命令中的前导零:

sudo insmod hello.ko year=`date +%Y` month=`date +%-m` date=`date +%-d`

字符串
(the -告诉date不要添加前导零)

相关问题