Linux的引導過程剖析

來源:互聯網
上載者:User

大家在安裝完Linux後,有沒有留心過Linux的引導過程呢?本文就嘗試以通俗的語言來描述這一過程和相關的各種情況,瞭解了Linux的引導過程後,您在面對Linux引導過 程的出現的各種問題時就能做到心中有數了。

  Linux的一個迷人的特性就是使用者可以自行定製整個系統,你可是運行一個只有1M的“迷你”Linux,也可以運行一個幾G的強大Linux。而無論你運行怎樣的Linux,你都是先從引導程式開始啟動並執行。對於普通使用者,大多都是在個人電腦上運行Linux的。個人電腦,又叫PC機,是我們常見的使用Intel或AMD的晶片的電腦。當我們接通PC機的電源之後,CPU會執行第一條指令,第一條指令通常是使CPU能跳躍到BIOS的入口地址上,然後BIOS就開始進行開機自我測試 (POST),包括對記憶體等硬體進行檢測,如果存在其它裝置的也內建有BIOS(比如SCSI或RAID設定等),也會執行它們。完成自檢後的BIOS會根據設定好的啟動裝置和啟動順序來啟動真正的作業系統,如Linux(本文以Linux為例)。

  對於PC機,有以下幾種裝置可以作為啟動裝置來使用:

  1) 硬碟
  這是最常用的啟動裝置,硬碟有IDE介面和SCSI介面的兩種,由於IDE硬碟價格比SCSI硬碟要便宜的多,所以,大多數PC機都使用的是IDE硬碟。一台PC機中可能有多個硬碟,使用者可以在PC機的CMOS設定哪塊硬碟首先啟動。

2) 磁碟片
  磁碟片是PC機必備的裝置之一。常用作安裝系統或作為系統應急盤使用。也出現了很多一張磁碟片上的Linux系統。

  3) 光碟片磁碟機
  光碟片磁碟機也是PC機必備的裝置之一,包括CDROM、DVDROM、以及各種燒錄機等。現在多數使用者都是通過光碟機來安裝Linux的。

  4) USB盤
  隨USB盤的出現,許多主板也都開始支援從USB裝置上來啟動系統了。USB盤的容量遠大於磁碟片,目前有取代磁碟片的趨勢。

  5) 網卡的Boot ROM
  有一些網卡帶有Boot ROM晶片,可將引導資訊寫入Boot ROM,許多主板都支援Boot ROM啟動。常用於無盤工作盤環境中。

  無論系統選擇了哪一種啟動裝置,它都將會去將該裝置起始地址的內容讀入記憶體,如果你的啟動裝置是IDE硬碟,系統就會去去讀取硬碟的第一個扇區(這個扇區通常被稱做主開機磁區,又稱MBR),並將這個扇區的內容讀入記憶體,然後運行它。到這一步的時候是引導Linux作業系統的關鍵了,這一步將嘗試去啟動Linux的引導程式,如果找不到引導程式,將無法引導Linux。許多人在無法啟動Linux的時候,其實大多都是引導程式損壞或是配置不當所造成的。

  那麼什麼是引導程式呢?其實你每天開啟電腦,所接觸到的第一個程式就是引導程式。它的責任是載入作業系統核心軟體並把控制權轉交給它。對於Linux來說引導程式就是負責在啟動電腦時裝入Linux的Kernel,並將電腦的控制權交給Kernel,然後Kernel再進一步初始化剩餘的作業系統,直到Linux顯示使用者登入畫面。由此可見引導程式對於一個作業系統來是非常重要的。Linux的引導程式有很多種,最為常見是lilo和grub。

  1) lilo
  lilo是用於Linux的靈活多用的引導程式。它並不依賴於某一特定檔案系統,能夠從磁碟片和硬碟引導Linux核心映像,當然它也能夠引導其它作業系統。在grub出現之前,lilo可謂Linux引導程式的最佳選擇。而目前仍然也很多人在使用它。

  2) grub
  grub是比lilo新的一個功能強大的引導程式。專門處理Linux與其他動作系統共存的問題。它可以引導的作業系統有Linux、OS/2、Windows系列、BeOS、Solaris、FreeBSD、NetBSD等。它的優勢在於支援大硬碟、支援開機畫面(能支援到1024x768的畫面)、支援菜單式選擇,並且分區位置改變後不必重新設定,使用非常方便。較新發行的各版本Linux大多採用grub作為預設的引導程式。

  3) 其它引導程式
  如果你沒有安裝lilo或grub,或者你的lilo或grub損壞了(比如不小心覆蓋了MBR),那麼你將無法直接引導Linux。還好,這時候你還可以通過其它方式來引導,比如:Linux的引導盤,或者是利用loadin、syslinux等程式來從ms-dos中載入Linux。

如果引導程式成功後,Linux核心就接管了系統,開始了Linux的啟動過程(關於Linux的啟動過程將另文介紹)。但如果引導過程的發生錯誤又將如何處理呢?

  1.首先分析螢幕顯示的錯誤資訊

  引導程式本身所顯示的錯誤資訊都是有含義的,需要認真閱讀。比如:

  lilo的錯誤資訊 

  當lilo啟動完成時,會在螢幕上顯示字串"lilo",其實這其中的每個字母背後都對應著特定的操作。如果lilo在某個部分出了錯,我們就可以根據螢幕上當前出現的字母推斷出故障原因。比如:當螢幕上什麼都沒出現,就可能表示lilo還未被安裝或者lilo所在的分區未被設為active狀態。而螢幕顯示”li“,則表示lilo引導程式的第一部分能夠將lilo引導裝入程式的第二部分裝入,但卻不能執行。這可能是因為硬碟參數設定不當或者是因為在移動/boot/boot.b時沒有運行map安裝程式。而螢幕顯示"lil",則可能是介質故障或硬碟參數設定不當,無法從map檔案中裝載描述符表......,詳細的錯誤資訊解釋也可以從相關網站上找到。

  grub的錯誤資訊:

  和lilo相比grub的資訊要好理解一些,因為它是直接用英語來表達的,而不是用符號。比如:"Hard Disk Error"、"Read
Error"、"Selected disk doesn't exist"、"Disk geometry error"、"Device
string unrecognizable"、"Attempt to access block outside
partition"、"Partition table invalid or corrupt"等。詳細的錯誤資訊解釋也可以從相關網站上找到。

  2.通過光碟片或磁碟片引導進入系統,修複原引導程式

  通過分析螢幕顯示的錯誤資訊後,應該能大致找到原引導程式的出錯原因。這時候可以通過光碟片或磁碟片引導進入系統。許多Linux的發行光碟片就是可以啟動的,比如:slackware就是很好的引導光碟片。進入系統後,可以重裝引導程式或者重新設定引導程式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.