Linux內(nèi)核在啟動的時候,能接收某些命令行選項或啟動時參數(shù)。當內(nèi)核不能識別某些硬件進而不能設(shè)置硬件參數(shù)或者為了避免內(nèi)核更改某些參數(shù)的值,可以通過這種方式手動將這些參數(shù)傳遞給內(nèi)核。
如果不使用啟動管理器,比如直接從BIOS或者把內(nèi)核文件用“cp zImage /dev/fd0”等方法直接從設(shè)備啟動,就不能給內(nèi)核傳遞參數(shù)或選項--這也許是我們使用引導管理器比如LILO的好處之一吧。
Linux的內(nèi)核參數(shù)是以空格分開的一個字符串列表,通常具有如下形式:
name[=value_1][,value_2]...[,value_10]
“name”是關(guān)鍵字,內(nèi)核用它來識別應該把“關(guān)鍵字”后面的值傳遞給誰,也就是如何處理這個值,是傳遞給處理例程還是作為環(huán)境變量或者拋給“init”。值的個數(shù)限制為10,你可以通過再次使用該關(guān)鍵字使用超過10個的參數(shù)。
首先,內(nèi)核檢查關(guān)鍵字是不是 `root=',`nfsroot=', `nfsaddrs=', `ro', `rw', `debug'或 `init',然后內(nèi)核在bootsetups數(shù)組里搜索于該關(guān)鍵字相關(guān)聯(lián)的已注冊的處理函數(shù),如果找到相關(guān)的已注冊的處理函數(shù),則調(diào)用這些函數(shù)并把關(guān)鍵字后面的值作為參數(shù)傳遞給這些函數(shù)。比如你在啟動時設(shè)置參數(shù)name=a,b,c,d,內(nèi)核搜索bootsetups數(shù)組,如果發(fā)現(xiàn)“name”已注冊,則調(diào)用“name”的設(shè)置函數(shù)如name_setup(),并把a,b,c,d傳遞給name_setup()執(zhí)行。
所有型如“name=value”參數(shù),如果沒有被上面所述的設(shè)置函數(shù)接收,將被解釋為系統(tǒng)啟動后的環(huán)境變量,比如“TERM=vt100”就會被作為一個啟動時參數(shù)。
所有沒有被內(nèi)核設(shè)置函數(shù)接收也沒又被設(shè)置成環(huán)境變量的參數(shù)都將留給init進程處理,比如“single”。
新聞熱點
疑難解答
圖片精選