快捷搜索:

Linux操作系统内核引导参数简介

概述

内核向导参数大年夜体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 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,eth0root=/dev/hda1

差错:ether = 9, 0x300, 0xd0000, 0xd4000, eth0root = /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-32IA-32(i386)体系布局

X86-64X86-64体系布局,更多参数在 Documentation/x86_64/boot-options.txt 中描述

IOSCHED 启用了多个IO调整器

LIBATA启用了Libata驱动

LOOP启用了Loopback设备

NET启用了收集支持

PCIPCI总线支持

PNP即插即用支持

PS2PS/2支持

SCSI许多SCSI设备的参数在 Documentation/scsi/ 中描述

SMP对称多处置惩罚器

USBUSB支持

USBHIDUSB人机界面设备

VT虚拟终端(Virtual terminal)

此外,下面的标记的含义与在逻辑上与上面的有所不合:

BUGS= 用于在特定的体系布局上办理某些CPU的bug

KNL是一个内核启动参数

BOOT 是一个向导法度榜样参数

标记为”BOOT”的参数实际上由向导法度榜样应用,对内核本身没有直接的意义。没有特其余需求,请不要改动此类参数的语法,更多信息请涉猎 Documentation/i386/boot.txt 文档。

节制台

这些参数节制着节制台或内核日志,在何处显示内核调试信息和差错信息。

[KNL]

console=tty

设置输出节制台应用第N号虚拟节制台。

[IA-32,X86-64]

earlyprintk=vga

在传统的节制台初始化之前,在VGA上显示内核日志信息。假如不应用此参数那么这些信息你可用永世没时机望见。

loglevel={0|1|2|3|4|5|6|7}

所有小于该数字的内核信息都将在节制台上显示出来。这个级别可以应用 klogd 法度榜样或者改动 /proc/sys/kernel/printk 文件进行调剂。取值范围是”0″(不显示任何信息)到”7″(显示所有级其余信息)。建议至少设为”4″。[提示]级别”7″要求编译时加入了调试支持。

[KNL]

initcall_debug

跟踪所有内核初始化历程中调用的函数。有助于诊断内核在启动历程中逝世在了那个函数上面。

中断

这些参数影响内核与处置惩罚中断的硬件之间的接口。常见的中断节制器有两种:传统的8259A和新式的APIC,前者也被称为”PIC”。8259A只 得当单CPU的场合,而APIC则能够把中断通报给系统中的每个CPU,从而充分掘客SMP体系布局的并行性。以是8259A已经被淘汰了。

APIC系统由3部分组成:APIC总线、IO-APIC、本地APIC。

每个CPU中集成了一个本地APIC,认真通报中断旌旗灯号到处置惩罚器。而IO-APIC是系统芯片组中一部分,认真网络来自I/O设备的中断旌旗灯号并发送到本地APIC。APIC总线则是连接IO-APIC和各个本地APIC的桥梁。

[APIC,i386]

apic={quiet|verbose|debug}

在初始化 APIC 和 IO-APIC 组件的时刻,显示调试信息的具体程度。默认是”quiet”。

[SMP,APIC]

noapic

强制内核禁止应用IO-APIC(输入输出高档可编程输入节制器)

[IA-32,APIC]

lapic

强制内核启用 local APIC ,纵然 BIOS 已经禁用了。

[IA-32,APIC]

nolapic

强制内核禁用 local APIC ,纵然 BIOS 已经启用了。

[IA-32,SMP,KNL]

noirqbalance

禁止应用内核中的中断平衡逻辑

[HW]

irqfixup

用于修复基础的中断问题:当一其中断没有被处置惩罚时搜索所有可用的中断处置惩罚器。用于办理某些firmware缺陷。

[HW]

irqpoll

用于修复更进一步的中断问题:当一其中断没有被处置惩罚时搜索所有可用的中断处置惩罚器,并且对每个时钟中断都进行搜索。用于办理某些严重的firmware缺陷。

[IA-32]

noirqdebug

默认环境下,内核将探测并且禁止未处置惩罚的中断源,以免引起内核其他部分的相应问题,这个选项禁止该功能。

内存

[KNL,BOOT]

highmem=nn[KMG]

强制指定highmem区域的大年夜小,以致在默认没有 highmem的机械上也能事情。这个选项还可以用来在大年夜内存的机械上强制削减highmem区域的大年夜小。内核应用低于896M的”直接映射物理内存”很 方便,但应用大年夜于896M的部分(highmem)却对照麻烦,以是系统在给用户进程分配内存时会优先应用highmem。对付小于即是 1G 内存的用户来说,则无需关心这个问题。

[HW,IA-32]

hugepages=

指定 HugeTLB 页的最大年夜数量,仅在内核启用了CONFIG_HUGETLBFS之后才有效。大年夜多半今世谋略机体系布局供给对多页面大年夜小的支持,比如IA-32布局支持 4K和4M(PAE模式为2M)两种页面。是以Linux将物理内存划分成许多固定大年夜小的页面(默认大年夜小为 4k),每个页对应一个page布局,这些布局组成一个mem_map[]数组。TLB(Translation Lookaside Buffer)是虚拟地址到物理地址的翻译缓冲区,这种缓冲区在处置惩罚器上是很宝贵的,操作系统老是考试测验将有限的TLB资本发挥到极致。分外是能够轻松得到 多少G内存的时刻(>4G),这种优化就显得尤为关键。而 HugeTLB 特点则容许将某些页的尺寸增大年夜到 4MB 。用户可以应用mmap系统调用或者标准的SYSv共享内存调用(shmget,shmat)来应用hugepage。可以应用 grep Huge /proc/meminfo 敕令查看是否开启了 hugepage 支持。

[KNL]

ihash_entries=

内核会在内存中缓存必然数量的inode布局来加速文 件造访,每个inode对应一个文件(不合于文件系统中的inode观点),包孕文件造访权限/属主/组/大年夜小/天生光阴/造访光阴/着末改动光阴等信 息。这些inode保存在一个哈希表中。这个值用于指定这个哈希表的最大年夜项数。比如 1G 内存保举为 16384 ,4G 及以上内存保举 131072 ,但你可以根据自己硬盘上可能被造访的文件数量对默认值进行调剂(留意必要斟酌哈希值的碰撞)。

[KNL,BOOT]

max_addr=nn[KMG]

内核将轻忽在该物理地址以上的内存

[KNL,BOOT]

mem=nn[KMG]

强制指定内核应用若干数量的内存。短缺远见设计的传统BIOS只能申报最 大年夜64MB内存。新的e820规范则冲破了这个限定,使得BIOS可以精确申报大年夜于64MB的内存。假如你在老旧的机械上应用大年夜内存就必要指定这个参数 (最保险的做法是在实际内存的总数上减掉落1MB)。但无意偶尔候e820申报的数量并不准确,此时就必要应用下面的memmap参数正确指定内存映射(此时就 不要应用”mem=”了)。

[KNL,IA-32,X86_64]

memmap=exactmap

指定将要应用随后的”memmap=nn@ss”等参数进行正确的E820内存映射。比如对付一个4G内存的机械可能是:”memmap=exactmap memmap=640K@0 memmap=4095M@1M”。

[KNL]

memmap=nn[KMG]@ss[KMG]

强制内核只应用从ss开始的nn长度的特定内存区域。可以多次应用以指定多个区域。

[IA-32,X86-64]

noexec={on|off}

容许(on,默认)或禁止(off)内核将部分内存映射为”弗成履行”区域。

[KNL,BUGS]

reserve=nn[KMG]

强制内核轻忽(预留)必然量的IO内存区域

[KNL,BOOT]

vmalloc=nn[KMG]

强制指定vmalloc区域的大年夜小。可用于增添vmalloc区域的最小尺寸(x86默认128MB),也可以用于削减vmalloc的大年夜小,增添更多的空间用于直接映射内核RAM。

norandmaps

默认内核随机化法度榜样启动的地址,该选项禁用该功能。该选项等价于”echo 0 > /proc/sys/kernel/randomize_va_space”敕令。

CPU

[BUGS=IA-32]

cachesize=

强制指定 CPU L2 cache 的大年夜小,单位是字节。

[KNL,BUGS=IA-32]

nmi_watchdog={0|1|2|3}

设置非樊篱中断(NMI)watchdog的特点。”0″表示禁用NMI watchdog;”1″表示应用APIC;”2″表示应用local APIC;”3″表示NMI watchdog出缺陷,是以被禁用。

[IA-32]

mce

nomce

启用/禁用Machine Check Exception功能。

[SMP]

maxcpus=

明确指定一个SMP内核能够应用的最大年夜CPU数量。最好应用”maxcpus=0″而不是”maxcpus=1″来禁用SMP功能。

Ramdisk

[BOOT]

initrd=

指定initial ramdisk的位置

[RAM]

noinitrd

禁止应用任何initial RAM disk

[RAM]

ramdisk_blocksize=

指定ramdisk的块尺寸,默认是”1024″。

[RAM]

ramdisk_size=

RAM disks的大年夜小(kB),默觉得4096(4MB)。

根文件系统

[KNL]

root=XXxx

奉告核心启动时以那个设备作为根文件系统应用,默觉得编译内核时应用的设备。设备名由16进制主设备号(XX)与16进制次设备号(xx)组成,比如:root=B401 相称于从 /dev/uba1 启动;root=0801 相称于从 /dev/sda1 启动。

[KNL]

rootdelay=

挂载文件系统前延迟若干秒,当根文件系统在USB或FireWire设备上时常用。

[KNL]

rootflags=

设置根文件系统的挂载选项,比如”noatime,ro”。各类不合的文件系统所能应用的选项各不相同(比如 Documentation/filesystems/xfs.txt),也可以参考 mount 法度榜样的选项。

[KNL]

rootfstype=

根文件系统的类型,比如”xfs”。

init

[KNL]

init=

指定内核启动后运行的第一个法度榜样的绝对路径。默觉得”/sbin/init”。

[KNL]

rdinit=

从ramdisk中运行的第一个法度榜样的绝对路径,默觉得”/init”。指定的文件必须是在ramdisk而不是在根文件系统中进行。

[KNL]

S

以单用户模式运行init,默认是多用户模式。

ACPI

[HW,ACPI,X86-64,i386]

acpi={force|off|ht|strict|noirq}

ACPI的总开关。force表示强制启用;off表示强制禁用;noirq表示不要将ACPI用于IRQ路由;ht表示只运行足够的ACPI来支持超线程;strict表示低落对不严格遵照ACPI规格的平台的兼容性。

acpi_sleep={s3_bios,s3_mode}

ACPI休眠选项。在从S3状态(挂起到内存)规复的时刻,硬件需 要被精确的初始化。这对大年夜多半硬件都不成问题,除了显卡之外,由于显卡是由BIOS初始化的,内核无法获取需要的规复信息(仅存在于BIOS中,内核无法 读取)。这个选项容许内核以两种要领考试测验应用ACPI子系统来规复显卡的状态。

[HW,ACPI]

acpi_sci={level|edge|high|low}

ACPI系统节制终端触发器模式(System Control Interrupt trigger mode)。

[HW,ACPI]

acpi_irq_balance

使ACPI对中断哀求进行平衡,在APIC模式下为默认值

[HW,ACPI]

acpi_irq_nobalance

ACPI纰谬中断哀求进行平衡(默认),PIC模式下为默认值

[HW,ACPI]

acpi_irq_pci=,…

假如启用了irq_balance则将列出的中断号标记为已经被PCI子系统应用,可用于樊篱某些中断。

[HW,ACPI]

acpi_os_name=

奉告ACPI BIOS操作系统的名称。经常用来哄骗某些老旧的BIOS以为运行的是Windows系统。比如”Microsoft 2001″表示WinXP,”Microsoft Windows”表示Win98。

[HW,ACPI]

acpi_serialize

强制串行化ACPI机械说话(ACPI Machine Language)措施,操作系统应用这种说话与BIOS打交道。

[HW,ACPI]

acpi_use_timer_override

对付某些有搭档的 Nvidia NF5 主板必要应用此选项才能正常应用,不过此时 HPET 将掉效。

[IA-32,X86-64]

acpi_pm_good

跳过pmtimer的bug检测,强制内核假设这台机械的pmtimer没有搭档。用于办理某些出缺陷的BIOS。

[KNL,ACPI]

memmap=nn[KMG]#ss[KMG]

将从ss开始的nn长度的内存区域标记为ACPI数据。

[KNL,ACPI]

memmap=nn[KMG]$ss[KMG]

将从ss开始的nn长度的内存区域标记为”保留”。

[ACPI]

pnpacpi=off

禁用ACPI的即插即用功能,而应用PNPBIOS来代替。

[HW,ACPI]

processor.max_cstate={0|1|2|3|4|5|6|7|8|9}

疏忽 ACPI表申报的值,强制拟订CPU的最大年夜C-state值。这里的数字必须是一个有效的C-state值,比如Yonah处置惩罚器支持”0-4″五个级 别:C0为正常状态,其他则为不合的省电模式(数字越大年夜表示CPU休眠的程度越深/越省电)。”9″表示逾越所有的DMI黑名单限定。你的CPU的95% 的光阴应该处于最深度的idle状态。

processor.nocst

不应用_CST措施来侦测C-state值,而是应用传统的FADT措施。

SCSI

这里只列出了SCSI子系统的通用参数。其他特定于某一种SCSI驱动的参数并未列出,请在 Documentation 目录下的 kernel-parameters.txt 文件中和 scsi 目录下探求它们。

[SCSI]

max_luns=

限定SCSI的最大年夜逻辑单元号(LUN,logical unit number)。取值范围在1到2^32-1之间。

[SCSI]

max_report_luns=

限定系统能够吸收的最大年夜逻辑单元号(LUN)。取值范围在1到16384之间。

PCI

[PCI]

pci=option[,option...]

off

[IA-32]不检测PCI总线,也便是关闭所有PCI设备。

bios

[IA-32]强制应用PCI BIOS而不是直接造访硬件,这表示内核完全相信BIOS(大年夜多半环境下它并弗成信)。仅在你的机械有一个不标准的PCI host bridge的时刻才用。

nobios

[IA-32]强制直接造访硬件而不应用PCI BIOS,2.6.13之后这是默认值。假如你确定在内核向导时的崩溃是由BIOS所致就可以应用它。

conf1

[IA-32]强制硬件设备应用PCI Configuration Mechanism 1造访PCI Memory以与内核中的驱动法度榜样进行通信。

conf2

[IA-32]强制硬件设备应用PCI Configuration Mechanism 2造访PCI Memory以与内核中的驱动法度榜样进行通信。

nommconf

[IA-32,X86_64]禁止为 PCI Configuration 应用 MMCONFIG 表。

nomsi

[MSI]假如启用了PCI_MSI内核设置设置设备摆设摆设选项,那么可以应用这个参数在系统范围内禁用MSI中断。

nosort

[IA-32]不在检测阶段根据PCI BIOS给出的顺序对PCI设备进行排序。进行这样的排序是为了以与早期内核兼容的要领获取设备序号。

biosirq

[IA-32]应用PCI BIOS调用来获取中断路由表。这些调用在不少机械上都出缺陷,会导致系统在应用历程中挂起。然则在某些机械上却是独一获取中断路由表的手段。假如内核无法分配IRQ或者发清楚明了第二个PCI总线,就可以考试测验应用这个选项办理问题。

rom

[IA-32]为扩展ROM分配地址空间。应用此选项要小心,由于某些设备在ROM与其它资本之间共享地址解码器。

pirqaddr=0xAAAAA

[IA-32]指定物理地址位于F0000h-100000h范围之外的PIRQ表(平日由BIOS孕育发生)的物理地址。

lastbus=N

[IA-32]扫描所有总线,直到第N个总线。假如内核找不到第二条总线的时刻,你就必要应用这个选项明确奉告它。

assign-busses

[IA-32]老是应用你自己指定的PCI总线号(而不是firmware供给的)。

usepirqmask

[IA-32]优先应用可能存在于BIOS $PIR表中的IRQ掩码。某些出缺陷的BIOS必要这个选项,分外是在HP Pavilion N5400和Omnibook XE3条记本上。假如启用了ACPI IRQ路由的话,将不会斟酌这个选项的设置。

noacpi

[IA-32]不为IRQ路由或者PCI扫描应用ACPI。

routeirq

为所有PCI设备履行IRQ路由。这个平日在pci_enable_device()中履行,所有这是一个办理不调用此函数的bug驱动法度榜样的临时办理措施。

bfsort

按照宽度优先的顺序对PCI设备进行排序。进行这样的排序是为了以与2.4内核兼容的要领获取设备序号。

nobfsort

不按照宽度优先的顺序对PCI设备进行排序。

cbiosize=nn[KMG]

从CardBus bridge 的 IO 窗口吸收的固定长度的总线空间(bus space),默认值是256字节。

cbmemsize=nn[KMG]

从CardBus bridge 的 memory 窗口吸收的固定长度的总线空间(bus space),默认值是64MB。

收集

[NET]

netdev=,,,,

收集设备参数。详细细节取决于不合的驱动法度榜样,请参考各自的驱动法度榜样文档。该选项平日不用于PCI/USB等即插即用网卡。

[KNL,NET]

rhash_entries=

设置内核路由缓冲区哈希表的大年夜小,仅供内核收集专家应用。

[NET]

shapers=

设置内核容许应用的最大年夜收集Shaper(限定收集速度的虚拟收集设备)。

[KNL,NET]

thash_entries=

设置内核容许应用的TCP链接哈希表的大年夜小。

硬件

[USB]

nousb

禁用USB子系统。

准时器

[i386,x86-64]

enable_timer_pin_1

disable_timer_pin_1

启用/禁用APIC准时器的PIN1,可以用于办理某些有bug的芯片组(分外是ATI芯片组)。内核将尽可能自动探测精确的值。

[IA32/X86_64]

enable_8254_timer

disable_8254_timer

启用/禁用 在经由过程IO-APIC对IRQ0(时钟中断)进行路由之外,还经由过程8254进行路由。内核将尽可能经由过程检测来选择精确的值。

[IA-32,HPET]

hpet=disable

禁用HPET,转而应用PIT。

[GENERIC_TIME,IA-32,X86-64,ACPI]

clocksource={hpet|pit|tsc|acpi_pm}

强制指定clocksource来取代默认值。

其他杂项

[VT]

default_utf8={0|1}

在系统范围内为将所有tty默认设置为UTF-8模式。”1″表示UTF-8模式,默认值为”0″。

[IOSCHED]

elevator={”anticipatory”|”cfq”|”deadline”|”noop”}

指定默认IO调整器

[LOOP]

max_loop=

最大年夜容许挂载的loopback设备数。

[KNL]

panic=

在内核发生panic之后reboot之前期待的秒数。默认值”0″表示不重启而逗留在那里。

Popularity: 1% [?]

您可能还会对下面的文章感兴趣: