内核可传递参数(中文)-good剖析.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核可传递参数(中文)-good剖析

概述 内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 Documentation/kernel-parameters.txt 文件列出了所有可用的引导参数,并指明了处理每个参数的具体文件。注意:对于模块而言,引导参数只能用于直接编译到核心里的模块,格式是使用模块名.参数=值模式指定,比如:usbcore.blinkenlights=1 。动态加载的模块可以在 modprobe 命令行上指定相应的参数值,比如:modprobe usbcore blinkenlights=1 。 可以使用modinfo -p ${modulename}命令显示可加载模块的所有可用参数。已经加载到内核中的模块会在 /sys/module/${modulename}/parameters/ 中显示出其参数,并且某些参数的值还可以在运行时通过echo -n ${value} /sys/module/${modulename}/parameters/${parm}命令修改。 与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就到 drivers/scsi 目录下寻找到 aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过__setup(... , ...)函数设置的,逗号前的部分就是引导参数的名称,后面的部分就是处理这些参数的函数名。[提示]你可以在源码树的根目录下试一试 grep -r \b__setup *( * 命令。 [注意]多个参数之间用空格分割,而每个参数的值中不能包含空白,参数值是一个逗号分割的列表。 正确:ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1 错误:ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1 在内核运行起来之后,可以通过 cat /proc/cmdline 命令查看当初使用的引导参数以及相应的值。 所有引导参数都是大小写敏感的! 内核如何处理引导参数 绝大部分的内核引导参数的格式如下(每个参数的值列表中最多只能有十项): name[=value_1][,value_2]...[,value_10] 如果name不能被识别并且满足name=value的格式,那么则被解译为一个环境变量(比如TERM=linux或BOOT_IMAGE=vmlinuz.bak),否则将被原封不动的传递给 init 程序(比如single)。 内核可以接受的参数个数没有限制,但是整个命令行的总长度(参数/值/空格全部包含在内)却是有限制的,一般是 256-4096 之间,定义在 include/asm/setup.h 中的 COMMAND_LINE_SIZE 宏中。 内核引导参数精选 由于引导参数多如牛毛,本文不可能涉及全部,因此下面只列出精选出来的一些(基于 2.6.22 内核),与设备有关的基本上都被忽略了。 标记说明 并不是所有的参数都是永远可用的,只有在特定的模块存在并且相应的硬件也存在的情况下才可用。引导参数上面的方括号说明了其依赖关系,其中使用的标记解释如下: ACPI 高级配置与电源接口 APIC 高级可编程中断控制器 HW 相应的硬件设备存在 IA-32 IA-32(i386)体系结构 X86-64 X86-64体系结构,更多参数在 Documentation/x86_64/boot-options.txt 中描述 IOSCHED 启用了多个IO调度器 LIBATA 启用了Libata驱动 LOOP 启用了Loopback设备 NET 启用了网络支持 PCI PCI总线支持 PNP 即插即用支持 PS2 PS/2支持 SCSI 许多SCSI设备的参数在 Documentation/scsi/ 中描述 SMP 对称多处理器 USB USB支持 USBHID USB人机界面设备 VT 虚拟终端(Virtual terminal) 此外,下面的标记的含义与在逻辑上与上面的有所不同: BUGS= 用于在特定的体系结构上解决某些CPU的bug KNL 是一个内核启动参数 BOOT 是一个引导程序参数 标记为BOOT的参数实际上由引导程序使用,对内核本身没有直接的意义。没有特别的需求,请不要修改此类参数的语法,更多信息请阅读 Documentation/i386/boot.txt 文档。 控制台 这些

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档