歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux操作系統內核啟動參數詳細解析

Linux操作系統內核啟動參數詳細解析

日期:2017/2/28 17:49:25   编辑:Linux教程

Linux內核在啟動的時候,能接收某些命令行選項或啟動時參數。當內核不能識別某些硬件進而不能設置硬件參數或者為了避免內核更改某些參數的值,可以通過這種方式手動將這些參數傳遞給內核。

如果不使用啟動管理器,比如直接從BIOS或者把內核文件用“cp zImage /dev/fd0”等方法直接從設備啟動,就不能給內核傳遞參數或選項--這也許是我們使用引導管理器比如LILO的好處之一吧。

Linux的內核參數是以空格分開的一個字符串列表,通常具有如下形式:

name[=value_1][,value_2]...[,value_10]

“name”是關鍵字,內核用它來識別應該把“關鍵字”後面的值傳遞給誰,也就是如何處理這個值,是傳遞給處理例程還是作為環境變量或者拋給“init”。值的個數限制為10,你可以通過再次使用該關鍵字使用超過10個的參數。

首先,內核檢查關鍵字是不是 `root=',`nfsroot=', `nfsaddrs=', `ro', `rw', `debug'或 `init',然後內核在bootsetups數組裡搜索於該關鍵字相關聯的已注冊的處理函數,如果找到相關的已注冊的處理函數,則調用這些函數並把關鍵字後面的值作為參數傳遞給這些函數。比如你在啟動時設置參數name=a,b,c,d,內核搜索bootsetups數組,如果發現“name”已注冊,則調用“name”的設置函數如name_setup(),並把a,b,c,d傳遞給name_setup()執行。

所有型如“name=value”參數,如果沒有被上面所述的設置函數接收,將被解釋為系統啟動後的環境變量,比如“TERM=vt100”就會被作為一個啟動時參數。

所有沒有被內核設置函數接收也沒又被設置成環境變量的參數都將留給init進程處理,比如“single”。

常用的設備無關啟動時參數。

1、init=...

設置內核執行的初始化進程名,如果該項沒有設置,內核會按順序嘗試/etc/init,

/bin/init,/sbin/init, /bin/sh,如果所有的都沒找到,內核會拋出 kernel panic:的錯誤。

2、nfsaddrs=...

設置從網絡啟動時NFS的啟動地址,已字符串的形式給出。

3、nfsroot=...

設置網絡啟動時的NFS根名字,如果該字符串不是以 "/"、","、"."開始,默認指向“/tftp-boot”。

以上2、3在無盤站中很有用處。

Copyright © Linux教程網 All Rights Reserved