Linux系統啟動等知識解析

來源:互聯網
上載者:User
Linux系統啟動等知識解析時間:2012-07-09 來源:位元網 作者:

PC從硬碟啟動Linux系統包括兩個階段:

1. BIOS對硬體自檢並找到MBR中的bootstrap【這個步驟有固化在主板中的BIOS程式完成】

2. 控制權交給bootstrap後,硬碟中MBR長度固定為512 byte,MBR本身分為兩個部分:前446byte為bootstrap程式,其餘為分區表。Bootstrap程式的目的是找到開機參數,擷取磁碟中的核心Image,將其載入到記憶體中,並傳入開機參數,最後將CPU的控制權交給核心。

常見的兩種BootLoader:LILO、GRUB

啟動中使用的兩個檔案:vmlinux和initrd

Vmlinux

Wikipedia的解釋

On Linux systems, vmlinux is a statically linked executable file that contains the Linux kernel in one of the object file formats supported by Linux, which includes ELF, COFF and a.out. The vmlinux file might be required for kernel debugging, symbol table
generation or other operations, but must be made bootable before being used as an operating system kernel by adding a multiboot header, bootsector and setup routines.

Vmlinux是編譯產生的可執行檔,其格式是Linux所支援的,比如:ELF、COFF、a.out,通常用於核心調試、符號表產生。如果是要放到核心中作為可執行檔,需要添加boot相關部分才能作為可開機檔案。

Initrd:

同其他Unix系統一樣,Linux作業系統首先要將核心引匯入記憶體。核心駐留於作業系統與應用程式的整個活動周期,其中應用程式(軟體)在"使用者空間"內運行,位於核心控制之下。

為了使載入記憶體最小化,一些核心 Linux 程式轉化成模組形式,可以動態載入系統中。

initrd 系統中的檔案在開機階段可以被核心存取,裡面的內容會被掛載成一個 loop 型態的檔案,早期是將 initrd 放在小的軟碟片內。initrd 通常被壓縮成 gzip 類型,在開機的時候由 bootloader(LILO, GRUB) 來告知核心 initrd 的位置。

Vmlinux和image之間的區別

Vmlinux是一個elf格式的檔案,image是vmlinux經過objcopy操作後只保留了data段和text段內容的檔案,通常會將image進行壓縮後儲存,如zimage.Uimage是在zimage的基礎上加上可uboot提供的長為0x40的頭部,和uboot搭配使用。

聯繫我們

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