取自2.6.18 kernelnode
Documentation/i386/boot.txt 文件中介紹ios
vga=編程
這裏的不是一個整數(在C語言表示法中,應是十進制,八進制或者十六進制其中之一),就是「normal」(0xFFFF),「ext」(0xFFFE),「ask」(0xFFFD)中的一個。這個值應被填入vid_mode(視頻模式控制)域,api
由於他會在命令行被解析前被內核使用。數組
mem=緩存
是用C語言表示法定義的整形,後面能夠追加(大小寫不敏感的)K,M,G,T,P或者E(表明<< 10, << 20, << 30, << 40, << 50網絡
或者 << 60)。這就指明瞭內核文件在內存中的末尾。它影響了initrd可能存放的位置,由於initrd應該被放置在內核末尾的附近。併發
要注意:這個選項同時做用於內核和啓動裝載器!dom
initrd=ide
指定裝載的initrd,顯然是和啓動裝載器是獨立的文件,並且一些啓動裝載器(好比LILO)甚至不須要這個選項。
Documentation/kernel-parameters.txt 文件
對於可加載模塊在啓動時添加參數通常約定爲以下:
modprobe usbcore blinkenlights=1 //modprode加模塊名加參數名加等號加值
對於編譯在覈心中的模塊約定以下:
usbcore.blinkenlights=1 //模塊名加「.」加參數名加等號加值
全部模塊在加載到核心後會出如今目錄/sys/module/${modulename}/中,其中模塊參數在parameters/目錄中,有的能夠進行修改在kernel運行時。
53c7xx= [HW,SCSI] Amiga SCSI controllers
參考文件Documentation/scsi/ncr53c7xx.txt,有詳細說明。
[acpi]
acpi= [HW,ACPI] Advanced Configuration and Power Interface
force : 強制開啓acpi.
off : 關閉acpi.
noirq : 不要使用acpi去路由irq。禁止使用ACPI來處理PCI設備中斷路由,和pci=noacpi的區別是它容許使用ACPI來枚舉PCI root bus.
ht : 只使用足夠的acpi去支持超線程
這個參數和"acpi=off"幾乎同樣,它禁止了除多處理器配置相關的內容之外的全部ACPI功能。
若是acpi=off正常,但acpi=ht不正常, 則解析ACPI表或者Linux SMP的代碼有bug.
strict : 下降對不嚴格遵循acpi規範平臺的兼容性
acpi_sleep= [HW,ACPI] Sleep options
Format: { s3_bios, s3_mode }
ACPI休眠選項。在從S3狀態(掛起到內存)恢復的時候,硬件須要被正確的初始化。這對大多數硬件都不成問題,
除了顯卡以外,由於顯卡是由BIOS初始 化的,內核沒法獲取必要的恢復信息(僅存在於BIOS中,內核沒法讀取)。
這個選項容許內核以兩種方式嘗試使用ACPI子系統來恢復顯卡的狀態。
acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
Format: { level | edge | high | low }
ACPI系統控制終端觸發器模式
acpi_irq_balance [HW,ACPI]
使ACPI對中斷請求進行平衡,在APIC模式下爲默認值
acpi_irq_nobalance [HW,ACPI]
ACPI不對中斷請求進行平衡(默認),PIC模式下爲默認值
acpi_irq_pci= [HW,ACPI]
Format: <irq>,<irq>...
若是啓用了irq_balance則將列出的中斷號標記爲已經被PCI子系統使用,可用於屏蔽某些中斷。
acpi_irq_isa= [HW,ACPI]
Format: <irq>,<irq>...
若是irq balance選項被開啓,表示列出的irq號被isa子系統使用。
acpi_os_name= [HW,ACPI]
告訴ACPI BIOS操做系統的名稱。經常用來哄騙某些老舊的BIOS覺得運行的是Windows系統。好比"Microsoft 2001"表示WinXP,"Microsoft Windows"表示Win98。
acpi_osi= [HW,ACPI]
空參數是關閉 _OSI方法.
acpi_serialize [HW,ACPI]
強制串行化ACPI機器語言(ACPI Machine Language)方法,操做系統使用這種語言與BIOS打交道。
acpi_skip_timer_override [HW,ACPI]
對於某些有毛病的 Nvidia NF5 主板須要使用此選項才能正常使用,不過此時 HPET 將失效。
acpi_dbg_layer= [HW,ACPI]
acpi_dbg_level= [HW,ACPI]
每個int位標明一個debug layer或level,1開啓,0關閉。對於系統啓動時debug acpi有用。
啓動後能夠經過/proc/acpi/debug_layer 或 debug_level 設置。
acpi_fake_ecdt [HW,ACPI]
當bios缺少 ecdt,容許acpi去代替它工做。
Embedded Controller Boot Resources Table (ECDT)
This optional table provides the processor-relative, translated resources of an Embedded Controller. The
presence of this table allows OSPM to provide Embedded Controller operation region space access before
the namespace has been evaluated. If this table is not provided, the Embedded Controller region space will
not be available until the Embedded Controller device in the AML namespace has been discovered and
enumerated. The availability of the region space can be detected by providing a _REG method object
underneath the Embedded Controller device.
acpi_generic_hotkey [HW,ACPI]
容許acpi使用通用熱插拔驅動去代替平臺特殊的驅動。
acpi_pm_good [IA-32,X86-64]
跳過pmtimer的bug檢測,強制內核假設這臺機器的pmtimer沒有毛病。用於解決某些有缺陷的BIOS。
memmap=nn[KMG]#ss[KMG] [KNL,ACPI]
將從ss開始的nn長度的內存區域標記爲ACPI數據。
memmap=nn[KMG]$ss[KMG] [KNL,ACPI]
將從ss開始的nn長度的內存區域標記爲"保留"。
pnpacpi=off [ACPI]
禁用ACPI的即插即用功能,而使用PNPBIOS來代替。
processor.max_cstate= [HW,ACPI]
{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方法。
ec_intr=n
指定acpi中斷控制器的模式。若是n是0那麼輪詢模式將被啓用,不然中斷模式將被使用,默認是中斷模式。
[/acpi]
[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。
禁止使用ACPI來處理任何PCI相關的內容,包括PCI root bus的枚舉和PCI設備中斷路由。
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。
[/pci]
[中斷]
這些參數影響內核與處理中斷的硬件之間的接口。常見的中斷控制器有兩種:傳統的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= [APIC,i386]
Format: { quiet (default) | verbose | debug }
在初始化 APIC 和 IO-APIC 組件的時候,顯示調試信息的詳細程度。
noapic [SMP,APIC]
強制內核禁止使用IO-APIC(輸入輸出高級可編程輸入控制器).
禁止使用io-apic來作設備中斷路由,這樣作的效果之一是ACPI返回的中斷路由表將是針對PIC(8259)的。
nolapic [IA-32,APIC]
強制內核禁用 local APIC ,即便 BIOS 已經啓用了。
lapic [IA-32,APIC]
強制內核啓用 local APIC ,即便 BIOS 已經禁用了。
noirqbalance [IA-32,SMP,KNL]
禁止使用內核中的中斷平衡邏輯.
irqfixup [HW]
用於修復基本的中斷問題:當一箇中斷沒有被處理時搜索全部可用的中斷處理器。用於解決某些firmware缺陷。
irqpoll [HW]
用於修復更進一步的中斷問題:當一箇中斷沒有被處理時搜索全部可用的中斷處理器,而且對每一個時鐘中斷都進行搜索。用於解決某些嚴重的firmware缺陷。
noirqdebug [IA-32]
默認狀況下,內核將探測而且禁止未處理的中斷源,以避免引發內核其餘部分的響應問題,這個選項禁止該功能。
[/中斷]
[內存]
highmem=nn[KMG] [KNL,BOOT]
強制指定highmem區域的大小,甚至在默認沒有highmem的機器上也能工做。這個選項還能夠用來在大內存的機器上強制減小highmem區域的大小。
內核使用低於896M的"直接映射物理內存"很方便,但使用大於896M的部分(highmem)卻比較麻煩,因此係統在給用戶進程分配內存時會優先 使用highmem。
對於小於等於 1G 內存的用戶來講,則無需關心這個問題。
hugepages=<num> [HW,IA-32,IA-64]
指定 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 支持。
ihash_entries=<num> [KNL]
內核會在內存中緩存必定數量的inode結構來加速文件訪問,每一個inode對應一個文件(不一樣於文件系統中的inode概念),
包含文件訪問權限/屬主/組/大小/生成時間/訪問時間/最後修改時間等信息。這些inode保存在一個哈希表中。這個值用於指定這個哈希表的最大項數。
好比 1G 內存推薦爲 16384 ,4G 及以上內存推薦 131072 ,但你能夠根據本身硬盤上可能被訪問的文件數量對默認值進行調整(注意須要考慮哈希值的碰撞)。
最大就到內存的 1/16 的數量。
max_addr=[KMG] [KNL,BOOT,ia64]
內核將忽略在該物理地址以上的內存.
mem=nn[KMG] [KNL,BOOT]
強制指定內核使用多少數量的內存。缺少遠見設計的傳統BIOS只能報告最大64MB內存。新的e820規範則突破了這個限制,使得BIOS能夠正確報告大於64MB的內存。
若是你在老舊的機器上使用大內存就須要指定這個參數(最保險的作法是在實際內存的總數上減掉1MB)。但有時候e820報告的數量並不許確,
此時就須要使用下面的memmap參數精確指定內存映射(此時就不要使用"mem="了)。
memmap=exactmap [KNL,IA-32,X86_64]
指定將要使用隨後的"memmap=nn@ss"等參數進行精確的E820內存映射。好比對於一個4G內存的機器多是:"memmap=exactmap memmap=640K@0 memmap=4095M@1M"。
memmap=nn[KMG]@ss[KMG] [KNL]
強制內核只使用從ss開始的nn長度的特定內存區域。能夠屢次使用以指定多個區域。
noexec={on|off} [IA-32,X86-64,IA-64]
容許(on,默認)或禁止(off)內核將部份內存映射設置爲"不可執行"區域。
reserve=nn[KMG] [KNL,BUGS]
強制內核忽略(預留)必定量的IO內存區域.
vmalloc=nn[KMG] [KNL,BOOT]
強制指定vmalloc區域的大小。可用於增長vmalloc區域的最小尺寸(x86默認128MB),也能夠用於減小vmalloc的大小,增長更多的空間用於直接映射內核RAM。
norandmaps
默認內核隨機化程序啓動的地址,該選項禁用該功能。該選項等價於"echo 0 > /proc/sys/kernel/randomize_va_space"命令。
[/內存]
[CPU]
cachesize=<NUM> [BUGS=IA-32]
強制指定 CPU L2 cache 的大小,單位是字節。
nmi_watchdog={0|1|2|3} [KNL,BUGS=IA-32]
設置非屏蔽中斷(NMI)watchdog的特性。"0"表示禁用NMI watchdog;"1"表示使用APIC;"2"表示使用local APIC;"3"表示NMI watchdog有缺陷,所以被禁用。
mce
nomce [IA-32]
啓用/禁用Machine Check Exception功能。
若是你的系統出現一些問題好比CPU過熱,內核將會在屏幕上打印相關信息來提醒你。這個功能是須要硬件支持的。
你能夠查看/proc/cpuinfo看看是否有mce標誌,有的話就選吧。若是你十分十分的不幸,選了它以後出現問題,能夠在啓動時加nomce參數來關閉它。
maxcpus=<NUM> [SMP]
明確指定一個SMP內核可以使用的最大CPU數量。最好使用"maxcpus=0"而不是"maxcpus=1"來禁用SMP功能。
[/CPU]
[ramdisk]
initrd= [BOOT]
指定initial ramdisk的位置.
noinitrd [RAM]
禁止使用任何initial RAM disk.
ramdisk_blocksize= [RAM]
指定ramdisk的塊尺寸,默認是"1024"。
ramdisk_size= [RAM]
RAM disks的大小(kB),默認爲4096(4MB)。
[/ramdisk]
[根文件系統]
root= [KNL]
告訴核心啓動時根文件系統位置。
rootdelay= [KNL] Delay
掛載文件系統前延遲多少秒,當根文件系統在USB或FireWire設備上時經常使用。
rootflags= [KNL]
設置根文件系統的掛載選項,好比"noatime,ro"。
rootfstype= [KNL]
根文件系統的類型,好比"xfs"。
[/根文件系統]
[init]
init= [KNL]
指定內核啓動後運行的第一個程序的絕對路徑。默認爲"/sbin/init"。
rdinit= [KNL]
從ramdisk中運行的第一個程序的絕對路徑,默認爲"/init"。指定的文件必須是在ramdisk而不是在根文件系統中進行。
S [KNL]
以單用戶模式運行init,默認是多用戶模式。
[/init]
[網絡]
netdev=<irq>,<io>,<mem_start>,<mem_end>,<name> [NET]
網絡設備參數。具體細節取決於不一樣的驅動程序,請參考各自的驅動程序文檔。該選項一般不用於PCI/USB等即插即用網卡。
rhash_entries= [KNL,NET]
設置內核路由緩衝區哈希表桶的大小,僅供內核網絡專家使用。
shapers= [NET]
設置內核容許使用的最大網絡Shaper(限制網絡速率的虛擬網絡設備)。
thash_entries= [KNL,NET]
設置內核容許使用的TCP連接哈希表的桶大小。
[/網絡]
[定時器]
enable_8254_timer
disable_8254_timer [i386,x86-64]
啓用/禁用 在經過IO-APIC對IRQ0(時鐘中斷)進行路由以外,還經過8254進行路由。內核將盡量經過檢測來選擇正確的值。
enable_timer_pin_1
disable_timer_pin_1 [i386,x86-64]
啓用/禁用APIC定時器的PIN1,能夠用於解決某些有bug的芯片組(特別是ATI芯片組)。內核將盡量自動探測正確的值。
hpet= [IA-32,HPET]
Format: disable
禁用HPET,轉而使用PIT。
HPET是intel制定的新的用以代替傳統的8254(PIT)中判定時器與RTC的定時器,全稱叫做高精度事件定時器。
clocksource={hpet|pit|tsc|acpi_pm} [GENERIC_TIME,IA-32,X86-64,ACPI]
強制指定clocksource來取代默認值。
[/定時器]
dhash_entries= [KNL]
設置dentry hash桶數。
ihash_entries= [KNL]
設置inode hash桶數。