Linux作業系統核心啟動參數詳細解析

來源:互聯網
上載者:User
 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在無盤站中很有用處。
  4、no387
  該選項僅當定義了CONFIG_BUGi386時才能用,某些i387副處理器晶片使用32位的保護模式時會有BUG,比如一些浮點運算,使用這個參數可以讓核心忽略387副處理器。
  5、no-hlt
  該選項僅當定義了CONFIG_BUGi386時才能用,一些早期的i486DX-100晶片在處理"hlt"指令時會有問題,執行該指令後不能可靠的返回作業系統,使用該選項,可以讓Linux系統在CPU閒置時候不要掛起CPU。
 6、root=...
  該參數告訴核心啟動時使用哪個裝置作為根檔案系統。比如可以指定根檔案為hda8:root=/dev/hda8。
  7、ro和rw
  ro參數告訴核心以唯讀方式載入根檔案系統,以便進行檔案系統完整性檢查,比如運行fsck;rw參數告訴核心以讀寫方式載入根檔案系統,這是預設值。
  8、reserve=...
  保留連接埠號碼。格
  式:reserve=iobase,extent[,iobase,extent]...,用來保護一定地區的I/O連接埠不被裝置驅動程式自動探測。在某些機器上,自動探測會失敗,或者裝置探測錯誤或者不想讓核心初始化裝置時會用到該參數;比如:
reserve=0x300,32device=0x300,除device=0x300外所有裝置驅動不探測
0x300-0x31f範圍的I/O連接埠。
  9、mem=...
  限制核心使用的記憶體數量。早期BIOS設計為只能識別64M以下的記憶體,如果你的記憶體數量大於64M,你可以指明,如果你指明的數量超過了實際安裝的記憶體數量,系統崩潰是遲早的事情。
  如:mem=0x1000000意味著有16M記憶體,如果是mem=0x6000000,就是96M記憶體了。
  注意:很多機型把部分記憶體作為BIOS的映射,所以你在指定記憶體大小的時候一定要預留空間。你也可以在
pentium或者更新的CPU上使用mem=nopentium關閉4M的頁表,這要在核心配置時申明。
  10、panic=N
  預設情況,核心崩潰--kernel panic
後會宕機而不會重啟,你可以設定宕機多少秒之後重啟機器;也可以在/proc/sys/kernel/panic檔案裡設定。
  11、reboot=[warm|cold][,[bios|hard]]
  該選項僅當定義了CONFIG_BUGi386時才能用。2.0.22的核心重啟預設為cool
reboot,warm reboot 更快,使用"reboot=bios"可以繼承bios的設定。
  12、nosmp 和 maxcpus=N
  僅當定義了
__SMP__,該選項才可用。可以用來禁用多CPU或者指明最多支援的CPU個數。
  核心開發和調試的啟動時參數
  這些參數主要用在核心的開發和調試上,如果你不進行類似的工作,你可以簡單的跳過本小節。
  1、debug
  Linux的記錄層級比較多(詳細資料可以參看Linux/kernel.h),一般地,日誌的守護進程klogd只把比DEBUG層級高的日誌寫進磁碟;如果使用該選項,klogd也把核心的DEBUG資訊寫進日誌。
 2、profile=N
  在做核心開發的時候,如果想清楚的知道核心在什麼地方耗用了多少CPU的刻度,可以使用核心的分析函數設定變數prof_shift為非0值,有兩種方式可以實現:一種是在編譯時間指定,另一種就是通過"profile="來指定;
他給出了一個相當於最小單位--即刻度;系統在執行核心代碼的時候,profile[address
>;>; prof_shift]的值就會累加,你也可以從/proc/profile得到關於它的一些資訊。
  3、swap=N1,N2,N3,N4,N5,N6,N7,N8
  設定核心交換演算法的八個參
  數:max_page_age, page_advance, page_decline,page_initial_age,
  age_cluster_fract, age_cluster_min, pageout_weight,bufferout_weight。
  4、buff=N1,N2,N3,N4,N5,N6
  設定核心緩衝記憶體管理的六個參數:max_buff_age, buff_advance,
buff_decline,buff_initial_age, bufferout_weight, buffermem_grace。
  使用 RAMDISK的參數
  (僅當核心配置並編譯了CONFIG_BLK_DEV_RAM)。一般的來說,使用ramdisk並不是一件好事,系統自己會更加有效使用可用的記憶體;但是,在啟動或者製作啟動盤時,使用ramdisk可以很方便的裝載磁碟片等裝置上的映象(尤其是安裝程式、啟動過程中),因為在正真使用物理磁碟之前,必須要載入一些必要的模組,比如檔案系統模組,scsi驅動等(可以參見我的initrd-x.x.x.img檔案分析-製作安裝程式不支援的根檔案系統)。
早期的ramdisk(比如1.3.48的核心)是靜態分配的,必須以ramdisk=N來指定ramdisk的大小;現在ramdisk可以動態增加。一共有四個參數,兩個布爾型,兩個整形。
  1、load_ramdisk=N
  如果N=1,就載入ramdisk;如果N=0,就不載入ramdisk;預設值為0。
  2、prompt_ramdisk=N
  N=1,提示插入磁碟片;N=0,不提示插入磁碟片;預設為1。
  3、ramdisk_size=N或者ramdisk=N
  設定ramdisk的最大值為N KB,預設為4096KB。
  4、ramdisk_start=N
  設定ramdisk的開始塊號為N,當ramdisk有核心的映象檔案是需要這個參數。
  5、noinitrd
  (僅當核心配置了選項CONFIG_BLK_DEV_RAM和CONFIG_BLK_DEV_INITRD)現在的核心都可以支援initrd了,引導進程首先裝載核心和一個初始化的ramdisk,然後核心將initrd轉換成普通的ramdisk,也就是讀寫入模式的根檔案系統裝置。然後Linuxrc執行,然後裝載真正的根檔案系統,之後ramdisk被卸載,最後執行啟動序列,比如/sbin/init。
  選項noinitrd告訴核心不執行上面的步驟,即使核心編譯了initrd,而是把initrd的資料寫到
/dev/initrd,只是這是一個一次性的裝置。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.