Linux 内核引导选项简介 *********很多常用的受益匪浅
內(nèi)核引導(dǎo)選項(xiàng)大體上可以分為兩類:一類與設(shè)備無(wú)關(guān)、另一類與設(shè)備有關(guān)。與設(shè)備有關(guān)的引導(dǎo)選項(xiàng)多如牛毛,需要你自己閱讀內(nèi)核中的相應(yīng)驅(qū)動(dòng)程序源碼以獲取其能夠接受的引導(dǎo)選項(xiàng)。比如,如果你想知道可以向 AHA1542 SCSI 驅(qū)動(dòng)程序傳遞哪些引導(dǎo)選項(xiàng),那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注釋里就可以找到所接受的引導(dǎo)選項(xiàng)說明。大多數(shù)選項(xiàng)是通過"__setup()"函數(shù)設(shè)置的,少部分是通過"early_param()"或"module_param()"或"module_param_named()"之類的函數(shù)設(shè)置的,逗號(hào)前的部分就是引導(dǎo)選項(xiàng)的名稱,后面的部分就是處理這些選項(xiàng)的函數(shù)名。
[提示]你可以在源碼樹的根目錄下試一試下面幾個(gè)命令:
grep -r '\b__setup *(' * grep -r '\bearly_param *(' * grep -r '\bmodule_param *(' * grep -r '\bmodule_param_named *(' *格式上,多個(gè)選項(xiàng)之間用空格分割,選項(xiàng)值是一個(gè)逗號(hào)分割的列表,并且選項(xiàng)值中不能包含空白。
正確:ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/sda2 錯(cuò)誤:ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/sda2注意,所有引導(dǎo)選項(xiàng)都是大小寫敏感的!
在內(nèi)核運(yùn)行起來(lái)之后,可以通過 cat /proc/cmdline 命令查看當(dāng)初使用的引導(dǎo)選項(xiàng)以及相應(yīng)的值。
內(nèi)核模塊
對(duì)于模塊而言,引導(dǎo)選項(xiàng)只能用于直接編譯到核心中的模塊,格式是"模塊名.選項(xiàng)=值",比如"usbcore.blinkenlights=1"。動(dòng)態(tài)加載的模塊則可以在 modprobe 命令行上指定相應(yīng)的選項(xiàng)值,比如"modprobe usbcore blinkenlights=1"。
可以使用"modinfo -p ${modulename}"命令顯示可加載模塊的所有可用選項(xiàng)。已經(jīng)加載到內(nèi)核中的模塊會(huì)在 /sys/module/${modulename}/parameters/ 中顯示出其選項(xiàng),并且某些選項(xiàng)的值還可以在運(yùn)行時(shí)通過"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}"進(jìn)行修改。
內(nèi)核如何處理引導(dǎo)選項(xiàng)
絕大部分的內(nèi)核引導(dǎo)選項(xiàng)的格式如下(每個(gè)選項(xiàng)的值列表中最多只能有十項(xiàng)):
name[=value_1][,value_2]...[,value_10]如果"name"不能被識(shí)別并且滿足"name=value"的格式,那么將被解譯為一個(gè)環(huán)境變量(比如"TERM=linux"或"BOOT_IMAGE=vmlinuz.bak"),否則將被原封不動(dòng)的傳遞給 init 程序(比如"single")。
內(nèi)核可以接受的選項(xiàng)個(gè)數(shù)沒有限制,但是整個(gè)命令行的總長(zhǎng)度(選項(xiàng)/值/空格全部包含在內(nèi))卻是有限制的,定義在 include/asm/setup.h 中的 COMMAND_LINE_SIZE 宏中(對(duì)于X86_64而言是2048)。
內(nèi)核引導(dǎo)選項(xiàng)精選
由于引導(dǎo)選項(xiàng)多如牛毛,本文不可能涉及全部,因此本文只基于 X86_64 平臺(tái)以及 Linux-3.13.2 精選了一些與設(shè)備無(wú)關(guān)的引導(dǎo)選項(xiàng)以及少部分與設(shè)備有關(guān)的引導(dǎo)選項(xiàng),過時(shí)的選項(xiàng)、非x86平臺(tái)選項(xiàng)、與設(shè)備有關(guān)的選項(xiàng),基本上都被忽略了。
[提示]內(nèi)核源碼樹下的?Documentation/kernel-parameters.txt?和?Documentation/x86/x86_64/boot-options.txt?文件列出了所有可用的引導(dǎo)選項(xiàng),并作了簡(jiǎn)要說明。
標(biāo)記說明
并不是所有的選項(xiàng)都是永遠(yuǎn)可用的,只有在特定的模塊存在并且相應(yīng)的硬件也存在的情況下才可用。引導(dǎo)選項(xiàng)上面的方括號(hào)說明了其依賴關(guān)系,其中使用的標(biāo)記解釋如下:
ACPI 開啟了高級(jí)配置與電源接口(CONFIG_ACPI)支持 AGP 開啟了AGP(CONFIG_AGP)支持 APIC 開啟了高級(jí)可編程中斷控制器支持(2000年以后的CPU都支持) APPARMOR 開啟了AppArmor(CONFIG_SECURITY_APPARMOR)支持 DRM 開啟了Direct Rendering Manager(CONFIG_DRM)支持 EFI 開啟了EFI分區(qū)(CONFIG_EFI_PARTITION)支持 EVM 開啟了Extended Verification Module(CONFIG_EVM)支持 FB 開啟了幀緩沖設(shè)備(CONFIG_FB)支持 HIBERNATION 開啟了"休眠到硬盤"(CONFIG_HIBERNATION)支持 HPET_MMAP 允許對(duì)HPET寄存器進(jìn)行映射(CONFIG_HPET_MMAP) HW 存在相應(yīng)的硬件設(shè)備 IOMMU 開啟了IOMMU(CONFIG_IOMMU_SUPPORT)支持 IOSCHED 開啟了多個(gè)不同的I/O調(diào)度程序(CONFIG_IOSCHED_*) IPV6 開啟了IPv6(CONFIG_IPV6)支持 IP_PNP 開啟了自動(dòng)獲取IP的協(xié)議(DHCP,BOOTP,RARP)支持 IP_VS_FTP 開啟了IPVS FTP協(xié)議連接追蹤(CONFIG_IP_VS_FTP)支持 KVM 開啟了KVM(CONFIG_KVM_*)支持 LIBATA 開啟了libata(CONFIG_ATA)驅(qū)動(dòng)支持 LOOP 開啟了回環(huán)設(shè)備(CONFIG_BLK_DEV_LOOP)支持 MCE 開啟了Machine Check Exception(CONFIG_X86_MCE)支持 MOUSE 開啟了鼠標(biāo)(CONFIG_INPUT_MOUSEDEV)支持 MSI 開啟了PCI MSI(CONFIG_PCI_MSI)支持 NET 開啟了網(wǎng)絡(luò)支持 NETFILTER 開啟了Netfilter(CONFIG_NETFILTER)支持 NFS 開啟了NFS(網(wǎng)絡(luò)文件系統(tǒng))支持 NUMA 開啟了NUMA(CONFIG_NUMA)支持 PCI 開啟了PCI總線(CONFIG_PCI)支持 PCIE 開啟了PCI-Express(CONFIG_PCIEPORTBUS)支持 PNP 開啟了即插即用(CONFIG_PNP)支持 PV_OPS 內(nèi)核本身是半虛擬化的(paravirtualized) RAID 開啟了軟RAID(CONFIG_BLK_DEV_MD)支持 SECURITY 開啟了多個(gè)不同的安全模型(CONFIG_SECURITY) SELINUX 開啟了SELinux(CONFIG_SECURITY_SELINUX)支持 SLUB 開啟了SLUB內(nèi)存分配管理器(CONFIG_SLUB) SMP 開啟了對(duì)稱多處理器(CONFIG_SMP)支持 TPM 開啟了可信賴平臺(tái)模塊(CONFIG_TCG_TPM)支持 UMS 開啟了USB大容量存儲(chǔ)設(shè)備(CONFIG_USB_STORAGE)支持 USB 開啟了USB(CONFIG_USB_SUPPORT)支持 USBHID 開啟了USB HID(CONFIG_USB_HID)支持 VMMIO 開啟了使用內(nèi)存映射機(jī)制的virtio設(shè)備驅(qū)動(dòng)(CONFIG_VIRTIO_MMIO) VT 開啟了虛擬終端(CONFIG_VT)支持此外,下面的標(biāo)記在含義上與上面的有所不同:
BUGS 用于解決某些特定硬件的缺陷 KNL 是一個(gè)內(nèi)核啟動(dòng)選項(xiàng) BOOT 是一個(gè)引導(dǎo)程序選項(xiàng)標(biāo)記為"BOOT"的選項(xiàng)實(shí)際上由引導(dǎo)程序(例如GRUB)使用,對(duì)內(nèi)核本身沒有直接的意義。如果沒有特別的需求,請(qǐng)不要修改此類選項(xiàng)的語(yǔ)法,更多信息請(qǐng)閱讀?Documentation/x86/boot.txt?文檔。
說明:下文中的 [KMG] 后綴表示 210, 220, 230?的含義。
控制臺(tái)與終端
[KNL]console=設(shè)備及選項(xiàng)
consoleblank=秒數(shù)
no_console_suspend
vt.default_utf8={0|1}
日志與調(diào)試
earlyprintk=設(shè)備[,keep]在傳統(tǒng)的控制臺(tái)初始化之前,在哪個(gè)設(shè)備上顯示內(nèi)核日志信息。不使用此選項(xiàng),那么你將永遠(yuǎn)沒機(jī)會(huì)看見這些信息。
在尾部加上",keep"選項(xiàng)表示在真正的內(nèi)核控制臺(tái)初始化并接管系統(tǒng)后,不會(huì)抹掉本選項(xiàng)消息的顯示。
earlyprintk=vga 表示在VGA上顯示內(nèi)核日志信息,這是最常用的選項(xiàng),但不能用于EFI環(huán)境。
earlyprintk=efi v3.13新增,表示將錯(cuò)誤日志寫入EFI framebuffer,專用于EFI環(huán)境。
earlyprintk=xen 僅可用于XEN的半虛擬化客戶機(jī)。
ignore_loglevel
debug
quiet
initcall_debug
kmemleak={on|off}
檢測(cè)方法類似于跟蹤內(nèi)存收集器,一個(gè)內(nèi)核線程每10分鐘(默認(rèn)值)掃描內(nèi)存,并打印發(fā)現(xiàn)新的未引用的對(duì)象的數(shù)量。
memtest=整數(shù)
pnp.debug=1
異常檢測(cè)與處理
[MCE]mce=off
mce=dont_log_ce
mce=容錯(cuò)級(jí)別[,超時(shí)]
0 在出現(xiàn)未能糾正的錯(cuò)誤時(shí)panic,記錄所有已糾正的錯(cuò)誤
1(默認(rèn)值) 在出現(xiàn)未能糾正的錯(cuò)誤時(shí)panic或SIGBUS,記錄所有已糾正的錯(cuò)誤
2 在出現(xiàn)未能糾正的錯(cuò)誤時(shí)SIGBUS或記錄日志,記錄所有已糾正的錯(cuò)誤
3 從不panic或SIGBUS,記錄所有日志。僅用于調(diào)試目的。
超時(shí)(單位是微秒[百萬(wàn)分之一秒]):在machine check時(shí)等待其它CPU的時(shí)長(zhǎng),"0"表示不等待。
erst_disable
hest_disable
nosoftlockup
softlockup_panic={0|1}
nowatchdog
nmi_watchdog={0|panic|nopanic}
0 表示關(guān)閉看門狗;
panic 表示出現(xiàn)看門狗超時(shí)(長(zhǎng)時(shí)間沒喂狗)的時(shí)候觸發(fā)內(nèi)核錯(cuò)誤,通常和"panic="配合使用,以實(shí)現(xiàn)在系統(tǒng)出現(xiàn)鎖死的時(shí)候自動(dòng)重啟。
nopanic 正好相反,表示即使出現(xiàn)看門狗超時(shí)(長(zhǎng)時(shí)間沒喂狗),也不觸發(fā)內(nèi)核錯(cuò)誤。
panic=秒數(shù)
秒數(shù)>0 等待指定的秒數(shù)后重啟
秒數(shù)=0(默認(rèn)值) 只是簡(jiǎn)單的掛起,而永不重啟
秒數(shù)<0 立即重啟
時(shí)鐘(Timer)
時(shí)鐘(Timer)的功能有兩個(gè):(1)定時(shí)觸發(fā)中斷;(2)維護(hù)和讀取當(dāng)前時(shí)間。x86_64平臺(tái)常見的時(shí)鐘硬件有以下這些:
RTC(Real Time Clock) 實(shí)時(shí)時(shí)鐘的獨(dú)特之處在于,RTC是主板上一塊電池供電的CMOS芯片(精度一般只到秒級(jí)),RTC(Clock)吐出來(lái)的是"時(shí)刻"(例如"2014-2-22 23:38:44"),而其他硬件時(shí)鐘(Timer)吐出來(lái)的是"時(shí)長(zhǎng)"(我走過了XX個(gè)周期,按照我的頻率,應(yīng)該是10秒鐘)。
PIT(Programmable Interval Timer) PIT是最古老的時(shí)鐘源,產(chǎn)生周期性的時(shí)鐘中斷(IRQ0),精度在100-1000Hz,現(xiàn)在基本已經(jīng)被HPET取代。
APIC Timer 這是PIT針對(duì)多CPU環(huán)境的升級(jí),每個(gè)CPU上都有一個(gè)APIC Timer(而PIT則是所有CPU共享的),但是它經(jīng)常有BUG且精度也不高(3MHz左右),所實(shí)際很少使用。
ACPI Timer(Power Management Timer) 它唯一的功能就是為每個(gè)時(shí)鐘周期提供一個(gè)時(shí)間戳,用于提供與處理器速度無(wú)關(guān)的可靠時(shí)間戳。但其精度并不高(3.579545MHz)。
HPET(High Precision Event Timer) HPET提供了更高的精度(14.31818MHz)以及更寬的計(jì)數(shù)器(64位)。HPET可以替代前述除RTC之外的所有時(shí)鐘硬件(Timer),因?yàn)樗饶芏〞r(shí)觸發(fā)中斷,又能維護(hù)和讀取當(dāng)前時(shí)間。一個(gè)HPET包含了一個(gè)固定頻率的數(shù)值遞增的計(jì)數(shù)器以及3-32個(gè)獨(dú)立計(jì)數(shù)器,每個(gè)計(jì)數(shù)器又包含了一個(gè)比較器和一個(gè)寄存器,當(dāng)兩者數(shù)值相等時(shí)就會(huì)觸發(fā)中斷。HPET的出現(xiàn)將允許刪除芯片組中的一些冗余的舊式硬件。2006年之后的主板基本都已支持HPET。
TSC(Time Stamp Counter) TSC是位于CPU里面的一個(gè)64位寄存器,與傳統(tǒng)的周期性時(shí)鐘不同,TSC并不觸發(fā)中斷,它是以計(jì)數(shù)器形式存在的單步遞增性時(shí)鐘。也就是說,周期性時(shí)鐘是通過周期性觸發(fā)中斷達(dá)到計(jì)時(shí)目的,如心跳一般。而單步遞增時(shí)鐘則不發(fā)送中斷,取而代之的是由軟件自己在需要的時(shí)候去主動(dòng)讀取TSC寄存器的值來(lái)獲得時(shí)間。TSC的精度(納秒級(jí))遠(yuǎn)超HPET并且速度更快,但僅能在較新的CPU(Sandy Bridge之后)上使用。
acpi_skip_timer_override
acpi_use_timer_override
no_timer_check
apicpmtimer
apicmaintimer
noapicmaintimer
noapicmaintimer 不將APIC timer用于計(jì)時(shí)(而是使用PIT/HPET中斷)。這是默認(rèn)值。但有時(shí)候依然需要明確指定。
lapic_timer_c2_ok
noapictimer
disable_timer_pin_1
jiffies 最差的時(shí)鐘源,只能作為最后的選擇。
acpi_pm [ACPI]符合ACPI規(guī)范的主板都提供的硬件時(shí)鐘源(CONFIG_X86_PM_TIMER),提供3.579545MHz固定頻率,這是傳統(tǒng)的硬件時(shí)鐘發(fā)生器。
hpet 一種取代傳統(tǒng)"acpi_pm"的高精度硬件時(shí)鐘源(CONFIG_HPET),提供14.31818MHz固定頻率。2007年以后的芯片組一般都支持。
tsc TSC(Time Stamp Counter)的主體是位于CPU里面的一個(gè)64位TSC寄存器,與傳統(tǒng)的以中斷形式存在的周期性時(shí)鐘不同,TSC是以計(jì)數(shù)器形式存在的單步遞增性時(shí)鐘,兩者的區(qū)別在于,周期性時(shí)鐘是通過周期性觸發(fā)中斷達(dá)到計(jì)時(shí)目的,如心跳一般。而單步遞增時(shí)鐘則不發(fā)送中斷,取而代之的是由軟件自己在需要的時(shí)候去主動(dòng)讀取TSC寄存器的值來(lái)獲得時(shí)間。TSC的精度更高并且速度更快,但僅能在較新的CPU(Sandy Bridge之后)上使用。
highres={"on"|"off"}
hpet_mmap
tsc=reliable
tsc=noirqtime
notsc 表示不將TSC用作"wall time"時(shí)鐘源,主要用于不能在多個(gè)CPU之間保持正確同步的SMP系統(tǒng)。
tsc=reliable 表示TSC時(shí)鐘源是絕對(duì)穩(wěn)定的,關(guān)閉啟動(dòng)時(shí)和運(yùn)行時(shí)的穩(wěn)定性檢查。用于在某些老舊硬件/虛擬化環(huán)境使用TSC時(shí)鐘源。
tsc=noirqtime 不將TSC用于統(tǒng)計(jì)進(jìn)程IRQ時(shí)間。主要用于在RDTSC速度較慢的CPU上禁止內(nèi)核的CONFIG_IRQ_TIME_ACCOUNTING功能。
關(guān)于"TSC時(shí)鐘源",詳見"clocksource="選項(xiàng)的說明。
中斷
常見的中斷控制器有兩種:傳統(tǒng)的8259A和新式的APIC,前者也被稱為"PIC"。8259A只適合單CPU的場(chǎng)合,而APIC則能夠把中斷傳遞給系統(tǒng)中的每個(gè)CPU,從而充分挖掘SMP體系結(jié)構(gòu)的并行性。所以8259A已經(jīng)被淘汰了。APIC系統(tǒng)由3部分組成:APIC總線(前端總線)、IO-APIC(南橋)、本地APIC(CPU)。每個(gè)CPU中集成了一個(gè)本地APIC,負(fù)責(zé)傳遞中斷信號(hào)到處理器。而IO-APIC是系統(tǒng)芯片組中一部分,負(fù)責(zé)收集來(lái)自I/O設(shè)備的中斷信號(hào)并發(fā)送到本地APIC。APIC總線則是連接IO-APIC和各個(gè)本地APIC的橋梁。
[SMP,APIC]noapic
nolapic
disableapic
nox2apic
x2apic_phys
threadirqs
pirq=
irqfixup
irqpoll
ACPI
高級(jí)配置與電源管理接口(Advanced Configuration and Power Interface)是提供操作系統(tǒng)與應(yīng)用程序管理所有電源管理接口,包括了各種軟件和硬件方面的規(guī)范。2004年推出3.0規(guī)范;2009年推出4.0規(guī)范;2011年推出5.0規(guī)范。2013年之后新的ACPI規(guī)格將由UEFI論壇制定。ACPI可以實(shí)現(xiàn)的功能包括:電源管理;性能管理;配置與即插即用;系統(tǒng)事件;溫度管理;電池管理;SMBus控制器;嵌入式控制器。
[HW,ACPI]acpi={force|off|noirq|strict|rsdt|nocmcff|copy_dsdt}
force 表示強(qiáng)制啟用ACPI(即使BIOS中已關(guān)閉);
off 表示強(qiáng)制禁用ACPI(即使BIOS中已開啟);
noirq 表示不要將ACPI用于IRQ路由;
strict 表示嚴(yán)格要求系統(tǒng)遵循ACPI規(guī)格(降低兼容性);
rsdt 表示使用老舊的RSDT(Root System Description Table)代替較新的XSDT(Extended System Description Table);
copy_dsdt 表示將DSDT(Differentiated System Description Table)復(fù)制到內(nèi)存中。
更多信息可參考Documentation/power/runtime_pm.txt以及"pci=noacpi"。
acpi_backlight={vendor|video}
video(默認(rèn)值)表示使用通用的ACPI video.ko驅(qū)動(dòng)(CONFIG_ACPI_VIDEO),該驅(qū)動(dòng)僅可用于集成顯卡。
vendor表示使用廠商特定的ACPI驅(qū)動(dòng)(thinkpad_acpi,sony_acpi等)。
詳見Documentation/acpi/video_extension.txt文檔。
acpi_os_name="字符串"
常用于哄騙有缺陷的BIOS,讓其以為運(yùn)行的是Windows系統(tǒng)而不是Linux系統(tǒng)。
"Linux" = Linux
"Microsoft Windows" = Windows 98
"Windows 2000" = Windows 2000
"Windows 2001" = Windows XP
"Windows 2001 SP2" = Windows XP SP2
"Windows 2001.1" = Windows Server 2003
"Windows 2001.1 SP1" = Windows Server 2003 SP1
"Windows 2006" = Windows Vista
"Windows 2006 SP1" = Windows Vista SP1
"Windows 2006.1" = Windows Server 2008
"Windows 2009" = Windows 7 / Windows Server 2008 R2
"Windows 2012" = Windows 8 / Windows Server 2012
"Windows 2013" = Windows 8.1 / Windows Server 2012 R2
acpi_osi="字符串"
此選項(xiàng)用于修改內(nèi)核中的操作系統(tǒng)接口字符串(_OSI string)列表默認(rèn)值,這樣當(dāng)BIOS向內(nèi)核詢問:"你是xxx嗎?"的時(shí)候,內(nèi)核就可以根據(jù)修改后的列表中是否存在"xxx"回答"Yes"或"No"了,主要用于解決BIOS兼容性問題導(dǎo)致的故障(例如屏幕亮度調(diào)整)。
acpi_osi="Linux"表示添加"Linux";
acpi_osi="!Linux"表示刪除"Linux";
acpi_osi=!* 表示刪除所有字符串(v3.13新增),可以和多個(gè)acpi_osi="Linux"格式聯(lián)合使用;
acpi_osi=! 表示刪除所有內(nèi)置的字符串(v3.13新增),可以和多個(gè)acpi_osi="Linux"格式聯(lián)合使用;
acpi_osi= 表示禁用所有字符串,僅可單獨(dú)使用(不能聯(lián)合使用)。
acpi_serialize
acpi_enforce_resources={strict|lax|no}
strict(默認(rèn)值)禁止任何驅(qū)動(dòng)程序訪問已被ACPI聲明為"受保護(hù)"的操作區(qū)域,這是最安全的方式,可以從根本上避免沖突。
lax允許驅(qū)動(dòng)程序訪問已被ACPI聲明的保護(hù)區(qū)域(但會(huì)顯示一個(gè)警告)。這可能會(huì)造成沖突,但是可以兼容某些老舊且腦殘的驅(qū)動(dòng)程序(例如某些硬件監(jiān)控驅(qū)動(dòng))。
no表示根本不聲明任何ACPI保護(hù)區(qū)域,也就是完全允許任意驅(qū)動(dòng)程序訪問ACPI操作區(qū)域。
pnpacpi=off
休眠與喚醒
[HW,ACPI]acpi_sleep={s3_bios,s3_mode,s3_beep,s4_nohwsig,old_ordering,nonvs,sci_force_enable}
(1)s3_bios和s3_mode與顯卡有關(guān)。計(jì)算機(jī)從S3狀態(tài)(掛起到內(nèi)存)恢復(fù)時(shí),硬件需要被正確的初始化。這對(duì)大多數(shù)硬件都不是問題,但因?yàn)轱@卡是由BIOS初始化的,內(nèi)核無(wú)法獲取必要的恢復(fù)信息(僅存在于BIOS中,內(nèi)核無(wú)法讀取),所以這里就提供了兩個(gè)選項(xiàng),以允許內(nèi)核通過兩種不同的方式來(lái)恢復(fù)顯卡,更多細(xì)節(jié)請(qǐng)參考Documentation/power/video.txt文檔。
(2)s3_beep主要用于調(diào)試,它讓PC喇叭在內(nèi)核的實(shí)模式入口點(diǎn)被調(diào)用時(shí)發(fā)出響聲。
(3)s4_nohwsig用于關(guān)閉ACPI硬件簽名功能,某些有缺陷的BIOS會(huì)因?yàn)檫@個(gè)原因?qū)е聫腟4狀態(tài)(掛起到硬盤)喚醒時(shí)失敗。
(4)old_ordering用于兼容古董級(jí)的ACPI 1.0 BIOS
(5)nonvs表示阻止內(nèi)核在掛起/喚醒過程中保存/恢復(fù)ACPI NVS內(nèi)存信息,主要用于解決某些有缺陷的BIOS導(dǎo)致的掛起/喚醒故障。
(6)sci_force_enable表示由內(nèi)核直接設(shè)置SCI_EN(ACPI模式開關(guān))的狀態(tài),主要用于解決某些有缺陷的BIOS導(dǎo)致的從S1/S3狀態(tài)喚醒時(shí)的故障。
noresume
hibernate={noresume|nocompress}
noresume 表示禁用喚醒,也就是在啟動(dòng)過程中無(wú)視任何已經(jīng)存在的休眠鏡像,完全重新啟動(dòng)。
nocompress 表示禁止對(duì)休眠鏡像進(jìn)行壓縮/解壓。
resume={ /dev/swap | PARTUUID=uuid | major:minor | hex }
假定內(nèi)存鏡像存放在"/dev/sdc15"分區(qū)上,該分區(qū)的 UUID=0123456789ABCDEF ,其主設(shè)備號(hào)是"8",次設(shè)備號(hào)是"47",那么這4種表示法應(yīng)該分別這樣表示:
resume=/dev/sdc15 (這是內(nèi)核設(shè)備名稱,有可能與用戶空間的設(shè)備名稱不同)
resume=PARTUUID=0123456789ABCDEF
resume=08:47
resume=082F
resume_offset=整數(shù)
僅在使用swap文件(而不是分區(qū))的時(shí)候才需要此選項(xiàng)。詳見Documentation/power/swsusp-and-swap-files.txt文檔
resumedelay=秒數(shù)
resumewait
溫度控制
[HW,ACPI]thermal.act=攝氏度
正整數(shù) 強(qiáng)制設(shè)置所有的最低"主動(dòng)散熱"標(biāo)志點(diǎn)的溫度值,單位是攝氏度。
詳見Documentation/thermal/sysfs-api.txt文檔。
thermal.psv=攝氏度
正整數(shù) 強(qiáng)制設(shè)置所有的"被動(dòng)散熱"標(biāo)志點(diǎn)的溫度值,單位是攝氏度。
詳見Documentation/thermal/sysfs-api.txt文檔。
thermal.crt=攝氏度
正整數(shù) 強(qiáng)制設(shè)置所有的"緊急"標(biāo)志點(diǎn)的溫度值,單位是攝氏度。
詳見Documentation/thermal/sysfs-api.txt文檔。
thermal.nocrt=1
thermal.off=1
thermal.tzp=整數(shù)
0(默認(rèn)值) 不輪詢
正整數(shù) 輪詢間隔,單位是十分之一秒。
CPU節(jié)能
[KNL]nohz={on|off}
nohz_full=CPU列表
"CPU列表"是一個(gè)逗號(hào)分隔的CPU編號(hào)(從0開始計(jì)數(shù)),也可以使用"-"界定一個(gè)范圍。例如"0,2,4-7"等價(jià)于"0,2,4,5,6,7"
[注意](1)"boot CPU"(通常都是"0"號(hào)CPU)會(huì)無(wú)條件的從列表中剔除。(2)這里列出的CPU編號(hào)必須也要同時(shí)列進(jìn)"rcu_nocbs=..."選項(xiàng)中。
processor.nocst
processor.max_cstate={0|1|2|3|4|5|6|7|8|9}
intel_idle.max_cstate=[0|正整數(shù)]
idle=halt
idle=nomwait
poll 從根本上禁用休眠功能(也就是禁止進(jìn)入C-states狀態(tài)),可以略微提升一些CPU性能,但是卻需要多消耗許多電力,得不償失。不推薦使用。
halt 表示直接使用HALT指令讓CPU進(jìn)入C1/C1E休眠狀態(tài),但是不再繼續(xù)進(jìn)入C2/C3以及更深的休眠狀態(tài)。此選項(xiàng)兼容性最好,喚醒速度也最快。但是電力消耗并不最低。
nomwait 表示進(jìn)入休眠狀態(tài)時(shí)禁止使用CPU的MWAIT指令。MWAIT是專用于Intel超線程技術(shù)的線程同步指令,有助于提升CPU的超線程效能,但對(duì)于不具備超線程技術(shù)的CPU沒有意義。
[提示]可以同時(shí)使用halt和nomwait,也就是"idle=halt idle=nomwait"(但不是:idle=halt,nomwait)
PCI與PCIE
[PCI]pci=選項(xiàng)[,選項(xiàng)...]
earlydump 在內(nèi)核做出任何改變之前,首先轉(zhuǎn)儲(chǔ)出PCI配置空間。主要用于調(diào)試目的。
off 不檢測(cè)PCI總線,也就是關(guān)閉所有PCI設(shè)備。
conf1 強(qiáng)制使用"PCI配置機(jī)制1"(目前的事實(shí)標(biāo)準(zhǔn))
conf2 強(qiáng)制使用"PCI配置機(jī)制2"(已被拋棄的老古董)
noaer [PCIE]禁止使用CONFIG_PCIEAER功能(PCI Express Root Port Advanced Error Reporting)
nodomains 禁止支持多個(gè)PCI root domain(也就是PCI總線域[PCI segment])
nommconf 禁止使用通過MMCONFIG(CONFIG_PCI_MMCONFIG)方式訪問PCI配置空間,MMCONFIG是PCI Express引入的新總線枚舉方式。
check_enable_amd_mmconf 在 AMD family 10h CPU 上檢查并啟用正確配置的MMIO以訪問PCI配置空間
nomsi [MSI]在全系統(tǒng)范圍內(nèi)禁止MSI中斷(CONFIG_PCI_MSI)的使用
noioapicquirk [APIC]禁止屏蔽任何boot中斷(CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),以確保boot IRQ永遠(yuǎn)可用。應(yīng)該永遠(yuǎn)不需要使用此選項(xiàng)。
ioapicreroute [APIC]允許將boot IRQ重新路由到主IO-APIC(相當(dāng)于開啟CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),用于修復(fù)某些芯片組bug(在某些情況下會(huì)發(fā)送多余的"boot IRQ")。
noioapicreroute [APIC]禁止將boot IRQ重新路由到主IO-APIC(相當(dāng)于關(guān)閉CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS),不建議使用此項(xiàng)。
rom 為擴(kuò)展ROM分配地址空間。使用此選項(xiàng)要小心,因?yàn)槟承┰O(shè)備在ROM與其它資源之間共享地址譯碼器。
norom 即使BIOS沒有為擴(kuò)展ROM分配地址空間,也禁止內(nèi)核為擴(kuò)展ROM分配地址空間。
nobar 即使BIOS沒有為BAR分配地址空間,也禁止內(nèi)核為BAR分配地址空間。
irqmask=0xMMMM 指定允許自動(dòng)分配到PCI設(shè)備的IRQ位掩碼,目的是為了避免使用那些被ISA設(shè)備占用的IRQ。
pirqaddr=0xAAAAA 如果PIRQ表(通常情況下由BIOS生成)在F0000h-100000h范圍之外,此選項(xiàng)可用于明確指定其物理地址。
lastbus=N 通過掃描N號(hào)總線來(lái)掃描全部總線。如果內(nèi)核不能找到第二條總線,可以通過此方法明確告知其位置。
assign-busses 總是使用內(nèi)核自己生成的PCI總線號(hào)碼替代固件自己生成的值。
usepirqmask 優(yōu)先使用可能存在于BIOS $PIR表中的IRQ掩碼。某些有缺陷的BIOS需要這個(gè)選項(xiàng)(例如HP Pavilion N5400和Omnibook XE3筆記本)。此選項(xiàng)僅在noioapicreroute(相當(dāng)于關(guān)閉CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS)的前提下有效。
noacpi 不為IRQ路由或PCI掃描使用ACPI
use_crs 使用來(lái)自ACPI的PCI主橋的窗口信息。在2008年之后的BIOS上,這是默認(rèn)值,如果需要明確使用此項(xiàng),請(qǐng)當(dāng)做bug上報(bào)開發(fā)者。
nocrs 忽略來(lái)自ACPI的PCI主橋的窗口信息,如果需要明確使用此項(xiàng),請(qǐng)當(dāng)做bug上報(bào)開發(fā)者。
routeirq 對(duì)所有PCI設(shè)備使用IRQ路由。這個(gè)通常是由內(nèi)核的pci_enable_device()函數(shù)完成,所以此項(xiàng)僅為那些忘記調(diào)用此函數(shù)的驅(qū)動(dòng)提供的臨時(shí)解決方案。
skip_isa_align 不對(duì)齊ISA IO起始地址,這樣就可以處理更多的PCI卡
noearly 不做任何"early type 1"掃描,這樣許多針對(duì)主板缺陷的檢測(cè)將被禁止,同時(shí)某些IOMMU驅(qū)動(dòng)也會(huì)失效。僅用于解決某些有缺陷的主板故障。
bfsort 按照寬度優(yōu)先(breadth-first)的順序?qū)CI設(shè)備進(jìn)行排序。目的是為了以與2.4內(nèi)核兼容的方式獲取設(shè)備序號(hào)。
nobfsort 不按寬度優(yōu)先(breadth-first)的順序?qū)CI設(shè)備進(jìn)行排序。
pcie_bus_tune_off 不對(duì)PCIe MPS(Max Payload Size)進(jìn)行調(diào)整,而是使用BIOS配置好的默認(rèn)值。
pcie_bus_safe 將每個(gè)設(shè)備的MPS都設(shè)為root complex下所有設(shè)備支持的MPS中的最大值
pcie_bus_perf 將設(shè)備的MPS設(shè)為其上級(jí)總線允許的最大MPS,同時(shí)將MRRS(Max Read Request Size)設(shè)為能支持的最大值(但不能大于設(shè)備或總線所支持的MPS值)
pcie_bus_peer2peer 將每個(gè)設(shè)備的MPS都設(shè)為最安全的"128B",以確保支持所有設(shè)備之間的點(diǎn)對(duì)點(diǎn)DMA,同時(shí)也能保證熱插入(hot-added)設(shè)備能夠正常工作,但代價(jià)是可能會(huì)造成性能損失。
cbiosize=nn[KMG] 從CardBus橋的IO窗口中保留的固定長(zhǎng)度的總線空間(bus space),默認(rèn)值是256B。
cbmemsize=nn[KMG] 從CardBus橋的內(nèi)存窗口中保留的固定長(zhǎng)度的總線空間(bus space),默認(rèn)值是64MB。
resource_alignment=[對(duì)齊規(guī)則@][域:]總線:插槽.功能[; ...] 為重新分配已對(duì)齊的內(nèi)存資源指定對(duì)齊方式與設(shè)備。如果未指定對(duì)齊規(guī)則,那么將使用PAGE_SIZE作為對(duì)齊規(guī)則。也可以通過指定PCI-PCI橋來(lái)擴(kuò)展資源窗口(resource windows)。
ecrc={bios|on|off} 啟用/禁用PCIe ECRC(事務(wù)層的端對(duì)端CRC校驗(yàn))。默認(rèn)值是"bios"(使用BIOS/固件的設(shè)定)。
hpiosize=nn[KMG] 為熱插拔橋的IO窗口保留的固定總線空間的大小,默認(rèn)值是256B。
hpmemsize=nn[KMG] 為熱插拔橋的內(nèi)存窗口保留的固定總線空間的大小,默認(rèn)值是2MB。
realloc={on|off} 當(dāng)BIOS分配的PCI橋資源太小而無(wú)法滿足所有子設(shè)備的需求時(shí),是否由內(nèi)核重新分配PCI橋資源。沒有默認(rèn)值(內(nèi)核的默認(rèn)值為"undefined")
realloc 等價(jià)于"realloc=on"
noari 不使用PCIe ARI
pcie_scan_all 掃描所有可能的PCIe設(shè)備。默認(rèn)只在每個(gè)PCIe下游端口掃描一個(gè)設(shè)備。
pcie_hp=nomsi
pcie_ports={auto|native|compat}
auto 由BIOS來(lái)決定是否使用關(guān)聯(lián)在PCIe端口上的本地PCIe服務(wù)(PME, hot-plug, AER)
native 無(wú)條件的使用關(guān)聯(lián)在PCIe端口上的本地PCIe服務(wù)(PME, hot-plug, AER)
compat 禁用PCIe端口驅(qū)動(dòng),同時(shí)將PCIe端口當(dāng)做PCI-to-PCI橋處理。
pcie_aspm={off|force}
off 強(qiáng)制禁用
force 即使設(shè)備聲明不支持ASPM也強(qiáng)制啟用(可能會(huì)導(dǎo)致系統(tǒng)鎖死)。
pcie_pme=nomsi
LIBATA
[LIBATA]libata.noacpi
libata.dma=整數(shù)
libata.dma=0 表示完全禁止所有SATA/PATA端口使用DMA
libata.dma=1 表示僅允許SATA/PATA硬盤使用DMA
libata.dma=2 表示僅允許ATAPI(CDROM)使用DMA
libata.dma=4 表示僅允許CF卡使用DMA
上述1,2,4實(shí)際上是位掩碼,可以組合使用,例如 libata.dma=3 表示允許硬盤和CDROM使用DMA,但是禁止CF卡使用DMA
libata.ignore_hpa={0|1}
libata.force=PORT[.DEVICE]:VAL,PORT[.DEVICE]:VAL,...
其中的"PORT[.DEVICE]"是libata驅(qū)動(dòng)在控制臺(tái)上以相同格式顯示出來(lái)的ATA ID字符串(PORT和DEVICE都是十進(jìn)制數(shù)字),下面是兩個(gè)實(shí)例("1.00","2.00"):
ata1.00: ATAPI: VBOX CD-ROM, 1.0, max UDMA/133 ata2.00: ATA-6: VBOX HARDDISK, 1.0, max UDMA/133 如果不指定DEVICE部分,那么就表示適用于該P(yáng)ORT端口上的所有設(shè)備。
VAL部分用來(lái)強(qiáng)制設(shè)定設(shè)備屬性:
40c, 80c, short40c, unk, ign, sata 這些都用于指定線纜類型
1.5Gbps, 3.0Gbps 這些都用于指定SATA連接速度
noncq, ncq 關(guān)閉還是開啟NCQ功能
dump_id 轉(zhuǎn)儲(chǔ)IDENTIFY數(shù)據(jù)
pio[0-7], mwdma[0-4], udma[0-7](或者這么寫也一樣:udma[16,25,33,44,66,100,133]) 數(shù)據(jù)傳輸模式
nohrst, nosrst, norst 只禁止硬重置,只禁止軟重置,同時(shí)禁止硬重置和軟重置
rstonce 在熱拔連接恢復(fù)(hot-unplug link recovery)過程中僅嘗試一次重置
atapi_dmadir 開啟 ATAPI DMADIR bridge 支持
disable 禁用該設(shè)備
鍵盤/鼠標(biāo)/觸摸板
[HW]atkbd.set={2|3}
atkbd.reset
atkbd.softraw={0|1}
0 表示返回原始的掃描碼(Scancode)
1(默認(rèn)值)表示返回轉(zhuǎn)換之后的鍵碼(Keycode)
usbhid.mousepoll=毫秒數(shù)
mousedev.tap_time=毫秒數(shù)
mousedev.xres=正整數(shù)
mousedev.yres=正整數(shù)
USB
[USB]nousb
usbcore.authorized_default={-1|0|1}
-1(默認(rèn)值) 對(duì)除無(wú)線USB之外的設(shè)備默認(rèn)授權(quán)
0 對(duì)所有設(shè)備都默認(rèn)不授權(quán)
1 對(duì)所有設(shè)備都默認(rèn)授權(quán)
usbcore.autosuspend=秒數(shù)
如果將秒數(shù)設(shè)為負(fù)數(shù),則表示永不進(jìn)入自動(dòng)休眠狀態(tài)。
usbcore.initial_descriptor_timeout=毫秒數(shù)
usbcore.blinkenlights={0|1}
usbcore.usbfs_snoop={0|1}
usbcore.old_scheme_first={0|1}
usbcore.use_both_schemes={0|1}
usbcore.usbfs_memory_mb=[0-2047]
usb-storage.delay_use=秒數(shù)
usb-storage.quirks=VID:PID:Flags[,VID:PID:Flags]...
多個(gè)修正項(xiàng)之間用逗號(hào)分隔,修正項(xiàng)的格式是"VID:PID:Flags",其中VID和PID的含義分別是4位16進(jìn)制數(shù)表示的"Vendor ID"與"Product ID"。
而Flags則是一組字符的組合,其中的每個(gè)字符都對(duì)應(yīng)一個(gè)具有特定含義的修正(quirk)標(biāo)記:
a = SANE_SENSE (收集超過18字節(jié)的傳感器數(shù)據(jù))
b = BAD_SENSE (不收集超過18字節(jié)的傳感器數(shù)據(jù))
c = FIX_CAPACITY (無(wú)條件的將設(shè)備報(bào)告的扇區(qū)數(shù)(容量)減少一個(gè)扇區(qū))
d = NO_READ_DISC_INFO (不使用 READ_DISC_INFO 命令)
e = NO_READ_CAPACITY_16 (不使用 READ_CAPACITY_16 命令)
h = CAPACITY_HEURISTICS (如果設(shè)備報(bào)告的扇區(qū)數(shù)(容量)是奇數(shù),那么就減少一個(gè)扇區(qū))
i = IGNORE_DEVICE (不綁定此設(shè)備)
l = NOT_LOCKABLE (不要嘗試鎖定/解鎖可彈出媒體)
m = MAX_SECTORS_64 (每次傳輸最大不超過64個(gè)扇區(qū)(32KB)的數(shù)據(jù))
n = INITIAL_READ10 (強(qiáng)制重試初始的 READ(10) 命令(如果最初一次讀取失敗的話))
o = CAPACITY_OK (完全信任設(shè)備報(bào)告的扇區(qū)數(shù)(容量))
p = WRITE_CACHE (默認(rèn)開啟設(shè)備寫入緩存[不怕數(shù)據(jù)丟失的風(fēng)險(xiǎn)])
r = IGNORE_RESIDUE (不相信設(shè)備報(bào)告的[容量]剩余值)
s = SINGLE_LUN (此設(shè)備只有一個(gè)邏輯單元(Logical Unit))
w = NO_WP_DETECT (不檢測(cè)設(shè)備是否有寫保護(hù))
例如:usb-storage.quirks=0419:aaf5:rl,0421:0433:rc
uhci-hcd.ignore_oc={0|1}
0(默認(rèn)值) 不忽略
1 忽略。某些有缺陷的主板會(huì)在USB端口未連接任何設(shè)備時(shí),報(bào)告很多虛假的"電流超限"事件。設(shè)為"1"之后可以避免在內(nèi)核日志中出現(xiàn)大量的"電流超限"警告,但同時(shí),真實(shí)的"電流超限"事件也會(huì)被一并忽略。
IOMMU
IOMMU非常類似于MMU,主要有如下功能:(1)IO地址轉(zhuǎn)換[在64位系統(tǒng)上支持32位設(shè)備];(2)分散-聚集(scatter-gather)支持[簡(jiǎn)化驅(qū)動(dòng)程序的編寫];(3)DMA重映射與IRQ重映射[簡(jiǎn)化了IO設(shè)備的虛擬化]。
Linux內(nèi)核當(dāng)前的DMA映射有如下4種具體實(shí)現(xiàn):
(1)在內(nèi)存不足3G的機(jī)器上,根本不使用任何IOMMU功能,因?yàn)楦緵]必要。內(nèi)核消息:"PCI-DMA: Disabling IOMMU"
(2)基于GART(CONFIG_GART_IOMMU)的硬件IOMMU。內(nèi)核消息:"PCI-DMA: using GART IOMMU"
(3)如果內(nèi)存大于3G同時(shí)機(jī)器上又沒有IOMMU硬件(或者用了"iommu=soft"),那么就使用軟件模擬的IOMMU(CONFIG_BOUNCE)。內(nèi)核消息:"PCI-DMA: Using software bounce buffering for IO (SWIOTLB)"
(4)基于IBM Calgary硬件的IOMMU,僅用于IBM pSeries/xSeries系列服務(wù)器。內(nèi)核消息:"PCI-DMA: Using Calgary IOMMU"
iommu={off,force,noforce,soft}
off 徹底關(guān)閉IOMMU功能
force 強(qiáng)制使用硬件IOMMU,即使硬件可能有缺陷(例如VIA芯片組)或者根本沒有必要這樣做(例如內(nèi)存不足3G)。
noforce(默認(rèn)) 在內(nèi)存不足3G的機(jī)器上,不使用硬件IOMMU,因?yàn)楦緵]有必要。
soft(Intel平臺(tái)的默認(rèn)值) 使用通過軟件模擬的IOMMU(SWIOTLB),同時(shí)禁止使用硬件IOMMU(即使存在)。
iommu=[SIZE][,allowed][,fullflush|nofullflush][,leak[=NUM]][,memaper[=N]|noaperture][,noagp][,merge|nomerge][,forcesac][,panic][,allowdac|nodac][,calgary]
SIZE 重映射區(qū)域的大小,單位是字節(jié)。
allowed 含義與"force"相同,即使硬件可能有缺陷(例如VIA芯片組)也強(qiáng)制使用硬件IOMMU
fullflush(默認(rèn)) 每次分配時(shí)都刷新IOMMU
nofullflush 不刷新IOMMU
leak=NUM 開啟IOMMU泄漏跟蹤(CONFIG_IOMMU_LEAK),NUM是的泄漏頁(yè)數(shù)(默認(rèn)值是20)。
memaper=N 在RAM中分配的固有窗口(own aperture)的大小,算法是 2N*32MB,N的默認(rèn)值是"1",也就是64MB。
noaperture 禁止IOMMU使用AGP的"aperture"。
noagp 不初始化AGP驅(qū)動(dòng),使用完全的"aperture"。
merge 強(qiáng)制"scatter-gather"合并,隱含了"force",這是一個(gè)實(shí)驗(yàn)性選項(xiàng)。
nomerge 禁止"scatter-gather"合并
forcesac 對(duì)于少于40位的掩碼強(qiáng)制使用單地址周期(single-address cycle),這是一個(gè)實(shí)驗(yàn)性選項(xiàng)。
panic 當(dāng)IOMMU益處時(shí),允許panic
allowdac 將32位PCI地址用兩個(gè)時(shí)鐘周期推入64位地址,這就是DAC的作用。
nodac 禁用DAC,也就是所有4GB以上的DMA將強(qiáng)制通過IOMMU(硬件的或模擬的)
calgary 使用IBM Calgary IOMMU
頁(yè)數(shù) 為"IO bounce buffer"預(yù)先保留的頁(yè)數(shù),每個(gè)頁(yè)的大小是128K
force 強(qiáng)制所有IO都透過軟件IOMMU
amd_iommu={fullflush|off|force_isolation}
fullflush 表示當(dāng)IO/TLB項(xiàng)被取消映射的時(shí)候立即刷新IO/TLB項(xiàng)(嚴(yán)格模式,速度較慢),否則將僅在IO/TLB項(xiàng)被重用之前進(jìn)行刷新(寬松模式,速度更快)
off 表示徹底禁用AMD IOMMU功能
force_isolation 表示為所有設(shè)備強(qiáng)制啟用IOMMU隔離(映射),這樣IOMMU驅(qū)動(dòng)就不再需要自己去發(fā)起隔離請(qǐng)求。注意:此選項(xiàng)不會(huì)覆蓋"iommu=pt"
intel_iommu={on,off,igfx_off,forcedac,strict,sp_off}
on 開啟Intel-IOMMU驅(qū)動(dòng)
off 關(guān)閉Intel-IOMMU驅(qū)動(dòng)
igfx_off 關(guān)閉Intel集成顯卡的DMA重映射功能(默認(rèn)值為開啟)
forcedac 強(qiáng)制PCI設(shè)備使用DAC,而禁止進(jìn)行地址轉(zhuǎn)換(默認(rèn)值為允許)
strict 禁止批量刷寫IOTLB(默認(rèn)值為允許)
sp_off 關(guān)閉super page支持(默認(rèn)值為開啟)
intremap={on,off,nosid,no_x2apic_optout}
on(默認(rèn)值)開啟中斷重映射
off 關(guān)閉中斷重映射
nosid 重映射時(shí)不對(duì)SID(Source ID)做檢查
no_x2apic_optout 無(wú)視BIOS的設(shè)置,強(qiáng)制禁用x2APIC特性,主要用于解決某些對(duì)x2APIC支持有缺陷的BIOS導(dǎo)致的故障
虛擬化
[PV_OPS]noreplace-paravirt
virtio_mmio.device=size@baseaddr:irq[:id]
size 大小(可以使用K,M,G后綴)
baseaddr 物理基準(zhǔn)地址(physical base address)
irq 中斷號(hào)(將會(huì)被傳遞給request_irq())
id(可選) platform設(shè)備號(hào)(device id)
例子:virtio_mmio.device=1K@0x100b0000:48:7
kvm.ignore_msrs={0|1}
kvm.mmu_audit={0|1}
kvm-amd.nested={0|1}
kvm-amd.npt={0|1}
kvm-intel.ept={0|1}
kvm-intel.emulate_invalid_guest_state={0|1}
kvm-intel.flexpriority={0|1}
kvm-intel.nested={0|1}
kvm-intel.unrestricted_guest={0|1}
kvm-intel.vpid={0|1}
內(nèi)存
[KNL,BOOT]mem=nn[KMG]
memmap=exactmap
memmap=nn[KMG]@ss[KMG]
memmap=nn[KMG]#ss[KMG]
memmap=nn[KMG]$ss[KMG]
reserve=起點(diǎn),長(zhǎng)度[,起點(diǎn),長(zhǎng)度]...
內(nèi)核會(huì)將此處指定的iomem區(qū)域標(biāo)記為"reserved"(意為"已經(jīng)在此處找到設(shè)備"),從而將該區(qū)域保留。
因?yàn)樵O(shè)備驅(qū)動(dòng)不應(yīng)該去偵測(cè)標(biāo)記為"reserved"的區(qū)域,除非另一個(gè)啟動(dòng)選項(xiàng)明確地指示它這樣做,所以此選項(xiàng)經(jīng)常和其它啟動(dòng)選項(xiàng)一起使用:
用"reserve="保留一段區(qū)域禁止所有其他驅(qū)動(dòng)的探測(cè),同時(shí)再明確指定一個(gè)驅(qū)動(dòng)去檢測(cè)被保留的區(qū)域。例如:
reserve=0x300,32 blah=0x300的意思是:除了允許"blah"驅(qū)動(dòng)探測(cè) 0x300 之外,禁止任何其他驅(qū)動(dòng)探測(cè) 0x300-0x31f 區(qū)域。
絕大部份的機(jī)器都不需要此選項(xiàng)。只有真正有缺陷的硬件或特殊情況才會(huì)需要使用它。
[注意]每個(gè)"reserve="選項(xiàng)最多可以指定4個(gè)保留區(qū)域,如果你有異常復(fù)雜的需求,可以使用多重"reserve="來(lái)指定。
vmalloc=nn[KMG]
slub_min_order=整數(shù)
slub_max_order=整數(shù)
slub_min_objects=整數(shù)
slub_nomerge
dhash_entries=正整數(shù)
ihash_entries=正整數(shù)
這個(gè)值用于指定這個(gè)哈希表的最大項(xiàng)數(shù)。你可以根據(jù)自己硬盤上可能被訪問的文件數(shù)量對(duì)默認(rèn)值進(jìn)行調(diào)整(注意需要考慮哈希值的碰撞)。僅供內(nèi)核專家使用。
transparent_hugepage={always|madvise|never}
always 表示總是對(duì)所有應(yīng)用程序啟用透明大內(nèi)存頁(yè)支持
madvise 表示僅對(duì)明確要求該特性的程序啟用
never 表示徹底禁用。
其默認(rèn)值由內(nèi)核的編譯時(shí)設(shè)置決定。詳見"Documentation/vm/transhuge.txt"文檔。
default_hugepagesz={2M|1G}
大多數(shù)現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)提供對(duì)多頁(yè)面大小的支持,比如X86_64支持4K和2M(要求CPU帶有"pse"標(biāo)記)以及1G(要求CPU帶有"pdpe1gb"標(biāo)記)。
因此Linux將物理內(nèi)存劃分成許多固定大小的頁(yè)面(默認(rèn)為4K),每個(gè)頁(yè)對(duì)應(yīng)一個(gè)page結(jié)構(gòu),這些結(jié)構(gòu)組成一個(gè)mem_map[]數(shù)組。TLB(Translation Lookaside Buffer)是虛擬地址到物理地址的翻譯緩沖區(qū),這種緩沖區(qū)在處理器上是很寶貴的,操作系統(tǒng)總是嘗試將有限的TLB資源發(fā)揮到極致。特別是能夠輕松獲得若干G內(nèi)存的時(shí)候(大于4G),這種優(yōu)化就顯得尤為關(guān)鍵。而HugeTLB特性則允許將某些頁(yè)的尺寸增大到2MB或1GB,從而大大減小TLB的尺寸,提高緩沖區(qū)的命中率,進(jìn)而提升內(nèi)存性能。
hugepagesz={2M|1G}
例如:hugepagesz=2M hugepages=128 hugepagesz=1G hugepages=8
注意:1GB的大頁(yè)只能在命令行上使用"hugepages="預(yù)先分配,且分配之后不可在運(yùn)行時(shí)釋放。
hugepages=正整數(shù)
nogbpages
vdso=1 啟用VDSO(Virtual Dynamic Shared Object)映射,這是"CONFIG_COMPAT_VDSO=n"時(shí)的默認(rèn)值。
vdso=2 將VDSO(Virtual Dynamic Shared Object)映射到舊式的確定性地址,這是"CONFIG_COMPAT_VDSO=y"時(shí)的默認(rèn)值。
vdso32=1 啟用32位VDSO(Virtual Dynamic Shared Object)映射,這是"CONFIG_COMPAT_VDSO=n"時(shí)的默認(rèn)值。
vdso32=2 將32位VDSO(Virtual Dynamic Shared Object)映射到舊式的確定性地址,這是"CONFIG_COMPAT_VDSO=y"時(shí)的默認(rèn)值。
MTRR與PAT
enable_mtrr_cleanupdisable_mtrr_cleanup
圖形與顯示
[AGP]agp={off|try_unsupported}
try_unsupported 表示嘗試驅(qū)動(dòng)那些不受支持的芯片(可能會(huì)導(dǎo)致系統(tǒng)崩潰或數(shù)據(jù)錯(cuò)誤)
gamma=浮點(diǎn)數(shù)
但是從v3.13內(nèi)核開始,新增了此選項(xiàng),并且其默認(rèn)值為"1",表示video.ko驅(qū)動(dòng)除了向用戶空間傳遞事件之外,還要自己在內(nèi)核層去改變顯示器的亮度。
如果設(shè)為"0"則表示不在內(nèi)核層改變顯示器的亮度,依然留給用戶層的工具去通過sysfs接口修改。
詳見Documentation/acpi/video_extension.txt文檔。
i915.invert_brightness={-1|0|1}
通常情況下,brightness的值為"0"表示關(guān)閉背光(全黑),隨著brightness的值增大到最大值,表示最大亮度。
但是通過這個(gè)選項(xiàng),可以反轉(zhuǎn)brightness的含義,讓"0"表示最亮,而隨著brightness值的遞增亮度逐漸降低,直到最大值關(guān)閉背光(全黑)。
-1 表示絕不反轉(zhuǎn)其含義,也就是"0"始終表示關(guān)閉,最大值始終表示最亮。
0 表示內(nèi)核不對(duì)此變量的含義加以干預(yù),使用機(jī)器自身的默認(rèn)含義。
1 表示強(qiáng)制反轉(zhuǎn)其含義,也就是"0"始終表示最亮,最大值始終表示關(guān)閉。
此選項(xiàng)常用于解決某些使用Intel集顯/核顯(CONFIG_DRM_I915)的電腦在啟動(dòng)時(shí)黑屏的問題。
logo.nologo
網(wǎng)絡(luò)
[IPV6]ipv6.disable={0|1}
ipv6.disable_ipv6={0|1}
ipv6.autoconf={0|1}
0 表示禁止自動(dòng)配置,這樣就只有IPv6回環(huán)地址(::1)和"link-local"地址會(huì)被自動(dòng)添加到網(wǎng)絡(luò)接口上。如果你不想從路由器公告(Router Advertisements)中的地址前綴自動(dòng)生成IPv6地址,可以使用此項(xiàng)。
1(默認(rèn)值) 表示在所有網(wǎng)絡(luò)接口上開啟IPv6地址自動(dòng)配置
ip=[client-ip:server-ip:gateway-ip:netmask:hostname:device:]autoconf[:dns0-ip:dns1-ip]
此選項(xiàng)有以下4種用法:
(1)ip={off|none}或者沒有使用"ip"選項(xiàng)。這是默認(rèn)值,表示徹底關(guān)閉自動(dòng)配置功能。
(2)ip={dhcp|bootp|rarp|any} 表示內(nèi)核全自動(dòng)完成所有配置工作(也就是將所有字段設(shè)為各自的默認(rèn)值)。各選項(xiàng)的含義參見下面對(duì)autoconf字段的說明。
(3)將autoconf字段設(shè)為{off|none}之一,并明確指定所有其它字段。表示全靜態(tài)配置,也就是手動(dòng)指定各字段的值(禁止自動(dòng)檢測(cè))。
(4)將autoconf字段設(shè)為{dhcp|bootp|rarp|any}之一,并明將部分字段留空(字段分割符":"不能省略)。表示半自動(dòng)配置,也就是將留空的字段設(shè)為各自的默認(rèn)值(自動(dòng)檢測(cè)),而將手動(dòng)指定的字段設(shè)為指定的值(禁止自動(dòng)檢測(cè))。
各字段的說明如下:
client-ip NFS客戶端IP地址。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取。
server-ip NFS服務(wù)器IP地址。該字段僅在需要將NFS掛載為根文件系統(tǒng)(root=/dev/nfs)的時(shí)候才是必須的。如果使用RARP檢測(cè)client-ip并且此字段非空,那么將僅接受指定服務(wù)器的應(yīng)答。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取(也就是自動(dòng)配置服務(wù)器的地址)。
gateway-ip 網(wǎng)關(guān)的IP地址。僅在NFS服務(wù)器位于不同子網(wǎng)的時(shí)候才是必須的。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取。
netmask 子網(wǎng)掩碼。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取(根據(jù)client-ip所屬的地址類型[A/B/C之類])。
hostname NFS客戶端的主機(jī)名。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取(client-ip的ASCII表示形式)。
device 使用的網(wǎng)卡。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取:若有多個(gè)網(wǎng)卡,那么將通過所有網(wǎng)卡同時(shí)發(fā)送自動(dòng)配置請(qǐng)求包,并將最先接收到應(yīng)答的網(wǎng)卡設(shè)為默認(rèn)網(wǎng)卡。
autoconf 自動(dòng)配置方式。{off|none}表示不使用自動(dòng)配置(必須手動(dòng)指定個(gè)字段的值);{dhcp|bootp|rarp}分別表示只使用DHCP/BOOTP/RARP協(xié)議進(jìn)行自動(dòng)配置(當(dāng)然內(nèi)核必須支持指定的協(xié)議);"any"表示使用內(nèi)核支持的所有自動(dòng)配置協(xié)議(同時(shí)發(fā)送不同協(xié)議的自動(dòng)配置請(qǐng)求包,以最先接收到的應(yīng)答為準(zhǔn))。 dns0-ip 主DNS服務(wù)器IP地址。若留空,其默認(rèn)值將通過自動(dòng)檢測(cè)獲取。其值將通過 /proc/net/pnp 導(dǎo)出到用戶空間。在嵌入式系統(tǒng)上,/etc/resolv.conf 常常是到 /proc/net/pnp 的軟連接。
dns1-ip 輔DNS服務(wù)器IP地址。其它同上。
rhash_entries=正整數(shù)
thash_entries=正整數(shù)
uhash_entries=正整數(shù)
nf_conntrack.acct={0|1}
塊設(shè)備與磁盤陣列
blkdevparts=gpt
elevator={"bfq"|"cfq"|"deadline"|"noop"}
loop.max_loop=[0-256]
raid={autodetect|noautodetect,partitionable|part}
autodetect|noautodetect 表示內(nèi)核是否應(yīng)該自動(dòng)檢測(cè)RAID模式(CONFIG_MD_AUTODETECT)。如果關(guān)閉了自動(dòng)檢測(cè),那么必須使用"md="明確告訴內(nèi)核RAID模式及配置。
partitionable|part 兩者含義相同,都表示內(nèi)核應(yīng)該將組裝之后得到的RAID設(shè)備視為"可分區(qū)"設(shè)備。
md=N,dev0,dev1,...
建議僅在根文件系統(tǒng)位于RAID上的情況下使用這個(gè)選項(xiàng)。其他非根文件系統(tǒng)的RAID最好在系統(tǒng)啟動(dòng)后(掛載完根之后)再組裝。
N 可以是 0,1,2,3,...,255 中的任意一個(gè)整數(shù),表示被創(chuàng)建的md設(shè)備的編號(hào),例如:
md=2,/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd表示將 /dev/sda,/dev/sdb,/dev/sdc,/dev/sdd 組裝成 /dev/md2 塊設(shè)備(至于RAID級(jí)別之類的信息則由存儲(chǔ)在超級(jí)塊中的元數(shù)據(jù)提供)。
[提示]2.6.28之前的老版本內(nèi)核對(duì)創(chuàng)建的陣列還有所謂"可分區(qū)陣列"和"不可分區(qū)陣列"的區(qū)別,具體表現(xiàn)是:如果在N前加上字母"d",則表示所創(chuàng)建的陣列是一個(gè)可分區(qū)陣列,否則就是不可分區(qū)陣列。不過現(xiàn)在已經(jīng)沒有這個(gè)區(qū)別了,所有創(chuàng)建的陣列都是可分區(qū)的,因此"d"也就沒有存在的必要了。
根文件系統(tǒng)
[KNL]root=字符串
"字符串"可以使用如下幾種形式:
XXxx 一個(gè)16進(jìn)制數(shù),其中"XX"是主設(shè)備號(hào),"xx"是次設(shè)備號(hào)。例如"/dev/sdc15"(主設(shè)備號(hào)是"8",次設(shè)備號(hào)是"47"),可以表示成"082F"。
/dev/nfs 表示使用由nfsroot選項(xiàng)指定的NFS磁盤,僅在根文件系統(tǒng)位于NFS文件系統(tǒng)上的時(shí)候才使用。
/dev/disk 表示一塊完整的無(wú)分區(qū)塊設(shè)備。比如:/dev/md0 /dev/loop0 /dev/sdb /dev/mmcblk0
/dev/diskN 表示disk磁盤的第N(十進(jìn)制)個(gè)分區(qū)。這是最常見的用法,比如:/dev/sda2 /dev/ubda1 /dev/xvda13
/dev/diskpN 含義與上面的一樣,也表示disk磁盤的第N(十進(jìn)制)個(gè)分區(qū),但是用于disk本身以數(shù)字結(jié)尾的情況(避免混淆)。比如:/dev/md0p3 /dev/emd/0p2 /dev/mmcblk0p1
PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF 僅用于EFI/GPT格式的磁盤,表示分區(qū)表中UUID值為"00112233-4455-6677-8899-AABBCCDDEEFF"的分區(qū)。[提示]可以使用blkid查看"PARTUUID"。
PARTUUID=SSSSSSSS-PP 僅用于傳統(tǒng)的MSDOS分區(qū)表。"SSSSSSSS"是用16進(jìn)制表示的32位"NT disk signature","PP"是用16進(jìn)制表示的分區(qū)號(hào)。比如:PARTUUID=97531ACF-02 可能相當(dāng)于 /dev/sda2?
PARTUUID=XXXX/PARTNROFF=N 表示以UUID="XXXX"的分區(qū)為基準(zhǔn),偏移N個(gè)分區(qū)。假定 /dev/sdb5 的UUID=XXXX,那么 PARTUUID=XXXX/PARTNROFF=3 就表示 /dev/sdb8 ,而 PARTUUID=XXXX/PARTNROFF=-3 則表示 /dev/sdb2
major:minor 由一對(duì)十進(jìn)制數(shù)組成,其中major是主設(shè)備號(hào),minor是次設(shè)備號(hào)。例如"/dev/sdc15"(主設(shè)備號(hào)是"8",次設(shè)備號(hào)是"47"),可以表示成"8:47"。
LABEL=??? 表示卷標(biāo)為"???"的分區(qū)。比如:root=LABEL=/ 。不過這種格式并不被內(nèi)核直接支持,僅是發(fā)行版通過initramfs中的腳本添加了這種格式的支持而已。所以并不通用。
rootfstype=文件系統(tǒng)類型
rootflags=掛載選項(xiàng)
ro
rw
rootdelay=秒數(shù)
rootwait
系統(tǒng)初始化(init)
[KNL]init=文件全路徑
rdinit=全路徑
[注意]一旦使用了initramfs并且成功的運(yùn)行了其中的"/init",所有"init"以及與根文件系統(tǒng)相關(guān)的選項(xiàng)(包括"nfsroot")對(duì)內(nèi)核而言都將失效。
initramfs中的腳本必須自己分析各個(gè)內(nèi)核引導(dǎo)選項(xiàng)(/proc/cmdline)并完成根文件系統(tǒng)的掛載與切換,當(dāng)然也包括啟動(dòng)真正的"init"進(jìn)程。
S
NFS(網(wǎng)絡(luò)文件系統(tǒng))
[NFS]lockd.nlm_grace_period=秒數(shù)
lockd.nlm_tcpport=端口號(hào)
lockd.nlm_timeout=秒數(shù)
lockd.nlm_udpport=端口號(hào)
nfsroot=[server-ip:]root-dir[,nfs-options]
server-ip NFS服務(wù)器IP地址。其默認(rèn)值是"ip"選項(xiàng)中的server-ip字段的值。
root-dir 作為根文件系統(tǒng)掛載的NFS服務(wù)器的目錄。如果其中包含"%s",那么將會(huì)被替換為本機(jī)IP地址的ASCII表示形式。
nfs-options 標(biāo)準(zhǔn)的NFS文件系統(tǒng)掛載選項(xiàng)(例如"ro"),多個(gè)選項(xiàng)之間使用逗號(hào)分隔。下面是默認(rèn)使用的值:
port = 由NFS服務(wù)器的portmap守護(hù)進(jìn)程給出rsize = 4096wsize = 4096timeo = 7retrans = 3acregmin = 3acregmax = 60acdirmin = 30acdirmax = 60flags = hard,nointr,noposix,cto,ac
nfsrootdebug
nfs.callback_tcpport=端口號(hào)
nfs.cache_getent=路徑
nfs.cache_getent_timeout=秒數(shù)
nfs.idmap_cache_timeout=秒數(shù)
nfs.enable_ino64={0|1}
nfs.max_session_slots=正整數(shù)
nfs.nfs4_unique_id=字符串
nfs.send_implementation_id={0|1}
nfs.recover_lost_locks={0|1}
nfs.nfs4_disable_idmapping={0|1}
nfsd.nfs4_disable_idmapping={0|1}
模塊功能
nomodulemodule.sig_enforce
安全
no_file_capsnoexec32={on|off}
[說明]noexec對(duì)32bit代碼以及64bit代碼都有約束力,而noexec32只針對(duì)32bit代碼。
emulate(默認(rèn)值) 捕捉vsyscalls系統(tǒng)調(diào)用,并對(duì)其進(jìn)行安全的模擬。這是比較安全的選項(xiàng),但效率并不最高。
native 將vsyscall系統(tǒng)調(diào)用直接轉(zhuǎn)變成本地syscall指令,這比模擬方式效率稍微高一些。但是很容易被攻擊。
none 完全禁用vsyscall系統(tǒng)調(diào)用。這是最安全的選項(xiàng),但是有可能會(huì)導(dǎo)致系統(tǒng)工作異常。
evm="fix"
security={selinux|smack|tomoyo|apparmor|yama}
selinux={0|1}
默認(rèn)值由內(nèi)核在編譯時(shí)確定(CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE)。
即使設(shè)為"1",隨后也可以通過 /selinux/disable 在加載安全策略前禁止SELinux功能。
enforcing={0|1}
"0"(默認(rèn)值)表示僅僅做記錄違規(guī)操作日志而不真正拒絕違規(guī)操作;
"1"表示真正拒絕違規(guī)操作并做記錄違規(guī)操作日志。
該選項(xiàng)還可以在運(yùn)行時(shí)通過 /selinux/enforce 進(jìn)行修改
checkreqprot={0|1}
"0"表示由內(nèi)核強(qiáng)制執(zhí)行檢查保護(hù)(包括其中隱含的所有執(zhí)行保護(hù))
"1"表示由應(yīng)用程序自己主動(dòng)請(qǐng)求執(zhí)行檢查保護(hù)
默認(rèn)值由內(nèi)核在編譯時(shí)確定,也可以在運(yùn)行時(shí)通過 /selinux/checkreqprot 修改
apparmor={0|1}
默認(rèn)值由內(nèi)核在編譯時(shí)確定(CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE)。
多CPU與CPU間調(diào)度
SMP(對(duì)稱多處理器)系統(tǒng)中,所有的CPU共享全部資源(總線,內(nèi)存,I/O等),最大的特點(diǎn)就是所有資源共享,多個(gè)CPU之間沒有區(qū)別。NUMA(非一致內(nèi)存訪問)的基本特征是具有多個(gè)CPU節(jié)點(diǎn),每個(gè)CPU節(jié)點(diǎn)由多個(gè)CPU組成,并且具有獨(dú)立的本地內(nèi)存與I/O槽口等。因此,雖然每個(gè)CPU都可以訪問整個(gè)系統(tǒng)的內(nèi)存,但是訪問本地節(jié)點(diǎn)內(nèi)存的速度遠(yuǎn)遠(yuǎn)高于訪問其它節(jié)點(diǎn)的內(nèi)存。詳見《SMP/NUMA/MPP體系結(jié)構(gòu)對(duì)比》
[SMP]nosmp
maxcpus=整數(shù)
nr_cpus=正整數(shù)
(1)從休眠狀態(tài)(S3,S4)喚醒以及從運(yùn)行狀態(tài)進(jìn)入休眠狀態(tài)
(2)PIC中斷,也就是某些情況下,關(guān)機(jī)和重啟也會(huì)依賴于cpu0
additional_cpus=整數(shù)
numa={off|noacpi}
noacpi 不為NUMA解析ACPI SRAT表
numa_balancing={enable|disable}
numa_zonelist_order={zone|node|default}
isolcpus=CPU編號(hào)列表
[注意]提出后并不是絕對(duì)不能再使用該CPU的,操作系統(tǒng)仍然可以強(qiáng)制指定特定的進(jìn)程使用哪個(gè)CPU(可以通過taskset來(lái)做到)。
該選項(xiàng)的目的主要是用于實(shí)現(xiàn)特定cpu只運(yùn)行特定進(jìn)程的目的。
CPU編號(hào)從"0"開始計(jì)數(shù),列表的表示方法有三種:
numA,numB,...,numN
numA-numN
以及上述兩種表示方法的組合:
numA,...,numM-numN
例如:0,3,4-7,9
relax_domain_level={-1|0|1|2|3|4|5}
-1(默認(rèn)值) 使用系統(tǒng)的默認(rèn)值(取決于不同的硬件架構(gòu))或者由其他的請(qǐng)求確定,也就是不人為指定默認(rèn)級(jí)別。
0 禁用所有調(diào)度域的閑時(shí)均衡和喚醒均衡
1 超線程域(siblings),也就是同一個(gè)物理核心內(nèi)的不同超線程
2 核域(cores),也就是同一個(gè)物理CPU中不同的核心
3 節(jié)點(diǎn)域(node),對(duì)于NUMA系統(tǒng)來(lái)說就是同一個(gè)NUMA節(jié)點(diǎn)內(nèi),對(duì)于non-NUMA系統(tǒng)來(lái)說這是整個(gè)系統(tǒng)范圍
4 節(jié)點(diǎn)組域(chunk of node),僅適用于NUMA系統(tǒng),表示在一組特定的NUMA節(jié)點(diǎn)范圍內(nèi)
5 全系統(tǒng)(system wide),全部系統(tǒng)范圍內(nèi)
詳見Documentation/cgroups/cpusets.txt文檔
控制組(Control Group)
Cgroup(CONFIG_CGROUPS)是一種進(jìn)程管理機(jī)制,也是內(nèi)核的資源分配框架。
[KNL]cgroup_disable="控制器名稱"
swapaccount={0|1}
EFI/UEFI
noefiadd_efi_memmap
雜項(xiàng)
[IP_VS_FTP]ports=portA,portB,...
0x80(CONFIG_IO_DELAY_0X80) 傳統(tǒng)的Linux IO延遲方式,久經(jīng)考驗(yàn),也最安全
0xed(CONFIG_IO_DELAY_0XED) 基于0xed端口的IO延遲方式,主要是為了避免和基于0x80端口的主板診斷卡沖突
udelay(CONFIG_IO_DELAY_UDELAY) 使用內(nèi)核端udelay()函數(shù)作為延遲方法(簡(jiǎn)單的延遲2微秒).可以不占用任何IO端口空間.
none(CONFIG_IO_DELAY_NONE) 不使用任何port-IO延遲機(jī)制.只要你的機(jī)器不是老古董,這個(gè)應(yīng)該是首選.
reboot=[mode][,type][,force]
mode 用于指定重啟模式,可以使用如下2種模式之一:warm(熱重啟[跳過內(nèi)存檢測(cè)]), cold(冷重啟[檢測(cè)并重新初始化所有硬件])
type 用于指定重啟類型,可以使用如下4種類型之一:bios(為熱重啟使用CPU reboot vector), acpi(優(yōu)先使用FADT中的ACPI RESET_REG,若失敗再轉(zhuǎn)kbd), kbd(使用鍵盤控制器冷重啟,這是默認(rèn)值), triple, efi(優(yōu)先使用EFI提供的reset_system運(yùn)行時(shí)服務(wù),若失敗再轉(zhuǎn)kbd)
結(jié)尾的"force"表示在重啟時(shí)不停用其它的CPU,在某些情況下可以讓reboot更可靠。
reset_devices
rcu_nocbs=
nodelayacct
sysfs.deprecated={0|1}
總結(jié)
以上是生活随笔為你收集整理的Linux 内核引导选项简介 *********很多常用的受益匪浅的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内核中的GPIO系统之(4):
- 下一篇: imx6 LCD 参数配置(lvds为例