内核模块传参

1.使用module_param()函数传递参数

hello.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>

MODULE_LICENSE("GPL");

static char *who="world";
static int times=1;    //先声明变量(static型),然后调用module_param 
module_param(times,int,S_IRUGO);
module_param(who,charp,S_IRUGO);
static int hello_init(void)
{
    int i;
    for(i=0;i<times;i++)
    {
        printk(KERN_ALERT "(%d) hello ,%s \r\n",i,who);
    }
    return 0;
}
 static void hello_exit(void)
 {
     printk(KERN_ALERT "Goodbye,%s!\n",who);
 }

 module_init(hello_init);
 module_exit(hello_exit);

makefile

#General Purpose Makefile for cross compile Linux Kernel module
ifneq ($(KERNELRELEASE),)
obj-m := hello.o  #+=是连接字符串
else

ARCH := arm    
CROSS_COMPILE := arm-linux-gnueabihf-
KERN_DIR := /home/zqh/lichee/linux-zero-4.14.y  #选择内核路径
PWD :=$(shell pwd)   #当前路径

all:
        make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERN_DIR) M=$(PWD) modules    

clean:                                   
        make -C $(KERN_DIR) M=$(shell pwd) modules clean
        rm -rf modules.order
endif
 

2.现象

# insmod hello.ko who="mom" times=5
# dmesg | tail -10
[    6.057104] RTL8723BS: set pairwise key camid:4, addr:e6:02:9b:c8:c8:41, kid:0, type:AES
[    6.068026] RTL8723BS: set group key camid:5, addr:e6:02:9b:c8:c8:41, kid:2, type:AES
[  129.211272] hello: loading out-of-tree module taints kernel.
[  129.217970] (0) hello ,world 
[  151.453028] Goodbye,world!
[  383.426642] (0) hello ,mom 
[  383.429541] (1) hello ,mom 
[  383.432419] (2) hello ,mom 
[  383.435295] (3) hello ,mom 
[  383.438304] (4) hello ,mom 

 

转载于:https://www.cnblogs.com/ZQQH/p/8550978.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux内核命令行传参可以在运行内核时在命令行中添加参数。例如,要给内核传递 "debug" 参数,可以使用命令 "linux debug" 来启动内核。更多参数可以使用 "man bootparam" 来查看。 ### 回答2: 在Linux内核中,命令行传参可以通过在启动时使用启动参数来实现。当系统启动时,内核会读取启动命令行,并将其中的参数传递给内核。 在GRUB引导器中,可以编辑启动菜单并添加启动参数。在启动菜单中,可以按下"E"键编辑引导条目,然后找到以"linux"开头的行。在该行的末尾添加需要的参数,用空格分隔。完成后按下"F10"键来启动系统,内核会读取并使用这些传递的参数。 另一种方法是通过修改引导器的配置文件来设置默认的启动参数。在GRUB中,可以编辑"/etc/default/grub"文件,找到"GRUB_CMDLINE_LINUX"行,然后在引号中添加需要的参数。完成后保存文件并执行"sudo update-grub"命令使更改生效。 除了GRUB,其他引导器如SYSLINUX、LILO等也有类似的配置文件,请根据使用的引导器进行相应的操作。 通过这些方法,可以在Linux启动时传递参数给内核。这些参数可以用于控制内核启动的行为,如设置系统参数、加载特定模块、开启调试功能等。根据具体需求,可以按照上述步骤进行相应的设置和修改。 ### 回答3: 在Linux内核中,可以使用命令行传参来配置内核的行为。通过命令行传参,可以在启动系统时将特定的选项传递给内核。下面是一些步骤来实现这个过程: 1. 首先,开机时在引导加载程序(如GRUB)的启动菜单中选择要启动的内核项。 2. 在选择内核项后,按下"e"键,进入编辑模式。 3. 在编辑模式下,可编辑内核的命令行参数。在命令行参数中,可以指定各种选项和参数,用以配置内核。 4. 根据需要,在命令行参数中添加或修改选项。例如,可以指定内核的启动方式、硬件参数、系统参数等。 5. 修改完成后,按下"Ctrl+x"或"Ctrl+b"等组合键来启动内核。 此外,还有其他的方法来传递内核命令行参数,如修改GRUB的配置文件、通过/sys文件系统修改等。但无论是哪种方法,都可以通过命令行传参来配置内核的行为。 总结:Linux内核命令行传参是通过修改引导加载程序的启动菜单中的内核项来实现的。在编辑模式下,通过添加或修改内核命令行参数来配置内核的行为。内核命令行参数可以包括各种选项和参数,用以指定启动方式、硬件参数、系统参数等。这样,可以在启动系统时通过命令行传参来定制内核的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值