用户与内核空间数据交换的方式之一:内核启动参数

    Linux      提供了一种通过 bootloader 向其传输启动参数的功能,内核开发者可以通过这种方式来向内核传输数据,从而控制内核启动行为。

通常的使用方式是,定义一个分析参数的函数,而后使用内核提供的宏 __setup把它注册到内核中,该宏定义在 linux/init.h 中,因此要使用它必须包含该头文件:

__setup("para_name=", pa     rs   e_func)

para_name 为参数名,parse_func 为分析参数值的函数,它负责把该参数的值转换成相应的内核变量的值并设置那个内核变量。内核为整数参数值的分析提供了函数 get_op     ti   on 和 get_op  TI ons,前者用于分析参数值为一个整数的情况,而后者用于分析参数值为逗号分割的一系列整数的情况,对于参数值为     字符   串的情况,需要开发者自定义相应的分析函数。在源代码包中的内核程序kern-boot-par     ams   .c 说明了三种情况的使用。该程序列举了参数为一个整数、逗号分割的整数串以及字符串三种情况,读者要想     测试   该程序,需要把该程序拷贝到要使用的内核的源码目录树的一个目录下,为了避免与内核其他部分混淆,作者建议在内核源码树的根目录下创建一个新目录,如 examples,然后把该程序拷贝到 examples 目录下并重新命名为 setup_example.c,并且为该目录创建一个 Makefile 文件:

obj-y = setup_example.o

Makefile 仅许这一行就足够了,然后需要修改源码树的根目录下的 Makefile文件的一行,把下面行

core-y          := usr/

修改为

core-y          := usr/ examples/

注意:如果读者创建的新目录和重新命名的文件名与上面不同,需要修改上面所说 Makefile 文件相应的位置。 做完以上工作就可以按照内核构建步骤去构建新的内核,在构建好内核并设置好lilo或grub为该内核的启动条目后,就可以启动该内核,然后使用lilo或grub的编辑功能为该内核的启动参数行增加如下参数串:

setup_example_int=1234 setup_example_int_array=100,200,300,400 setup_example_string=Thisisa     te   st

当然,该参数串也可以直接写入到lilo或grub的配置文件中对应于该新内核的内核命令行参数串中。读者可以使用其它参数值来测试该功能。

下面是作者系统上使用上面参数行的输出:

setup_example_int=1234

setup_example_int_array=100,200,300,400

setup_example_int_array includes 4 intergers

setup_example_string=Thisisatest

读者可以使用$dmesg | grep setup  来查看该程序的输出。

//filename: kern-boot-pa     ram   s.c
#include



用户与内核空间数据交换的方式之一:内核启动参数_设计制作_光电显示
99
81
0
79

相关资讯

  1. 1、Windows设置无法打开总卡在纯蓝色界面怎么回事?971
  2. 2、Win11激活必须联网且登录账号?安装完可退出账号4489
  3. 3、Win7旗舰版系统电脑启动不了怎么办?1500
  4. 4、vivoZ3怎么隐藏导航键?vivoZ3隐藏导航键的方法430
  5. 5、抖音国际版出现注册失败怎么办抖音国际版注册失败的解决方法3134
  6. 6、怎么在win11中设置默认浏览器?Win11设置默认浏览器详细步骤2902
  7. 7、电脑.CHM文件打开显示空白怎么办?2361
  8. 8、Win10网络连接配置异常怎么办?Win10网络连接配置异常的解决方法2565
  9. 9、Win7电脑怎么提高开机速度721
  10. 10、Win7系统无法删除文件夹怎么办?2393
全部评论(0)
我也有话说
0
收藏
点赞
顶部