MBR的Linux分区机制启动过程,linux系统启动流程(MBR)
總:POST---> Boot Squence ---> Bootloader ---> kernel ---> init
---> 完成啟動
系統:CentOS6
1、按下電源,cpu找到CMOS中的BIOS并運行起來,這個小程序會完成硬件自檢。
BIOS:Basic Input and Output System
2、bios會根據設置的boot squence來找設備上的MBR,找到以后控制權移交給MBR中的bootloader(1 stage).
MBR存在磁盤上的0號扇區。
有3部分組成:
446:bootloader
64: 分區表 16個字節表示一個分區
2: 55AA
3、bootloader加載MBR之后的一部分扇區中的基本文件系統驅動(1.5 stage),如之后的27個扇區。然后再加載引導分區中的第2階段。linux上面的bootloader程序是GRUB.
GRUB有3個階段組成。
bootloader:1st stage
Partition:filesystem driver, 1.5 stage
Partition:/boot/grub, 2nd
stage
因為1.5階段的文件系統驅動只能驅動基本文件系統,所以第2階段所在的分區不能使用lvm或軟raid之類的上層文件系統。
4、加載第2階段以后,會提供一個選擇啟動系統的窗口。內容就是/boot/grub/grub.conf文件中的各條目。
如果所選條目就是本機的linux系統的話:
在點擊進入系統之后。GRUB會加載grub.conf文件中指定的內核和要傳遞給內核的參數。參數中有真實根的地址。有時候還要加載與內核同版本的initrd。 initrd是一個模擬根的文件,由GRUB把它與內核一起加載到內存。此文件展開以后就是一個虛擬的根。內核工作于此根中并開始以只讀方掛載真實的根。所需驅動和程序在此根中加載。掛載完成以后開始把一些必要文件,如設備文件復制到真實的根。然后執行根切換。如果沒有initrd文件,內核會直接掛載真實的根,如果內核里面沒有根分區的驅動,則系統啟動失敗。
而如果所選條目是指向其它分區的另一個系統,則GRUB的控制權移交給那個分區首部的引導程序來管理(各個分區首部保留有引導空間(linux上面好像是1024Byte),也正是這樣才有了雙系統或多系統)。
kernel:自身初始化:
探測可識別到的所有硬件設備;
加載硬件驅動程序;(有可能會借助于ramdisk加載驅動)
以只讀方式掛載根文件系統;
運行用戶空間的第一個應用程序:/sbin/init
initrd文件有兩種:ramdisk
ramfs
Linux內核的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問;
在使用ramdisk的時候,在內存中模擬成磁盤,但因為磁盤都要有緩沖(buffer)和緩存(cache),這樣的結果就是還要在內存中使用緩沖和緩存。多此一舉,所以就有了ramfs。
在使用ramfs的時候,直接在內存中模擬成文件系統,不需要在內存中使用緩沖和緩存。
可以生成initrd的工具。可以手動用以下工具生成。
CentOS 5: initrd(ramdisk)
工具程序:mkinitrd
CentOS 6,7:
initramfs(ramfs)
工具程序:dracut, mkinitrd(腳本)
5、根切換完成以后,內核開始執行第一個用戶空間應用程序(如果之前的切換根不算的話)/sbin/init。之后內核退居幕后,前面由init程序來負責。init負責啟動初始化已定義的各種服務程序和環境。
init就是用戶空間的所有程序的祖先。
init是完成系統用戶空間初始化的項目總稱,它在不同的系統版本上有不同的實現:
init程序的類型:
CentOS 5-:SysV init
配置文件:/etc/inittab
CentOS 6:Upstart
配置文件:/etc/inittab
/etc/init/*.conf
CentOS 7:Systemd
配置文件:/usr/lib/systemd/system/,
/etc/systemd/system/
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MBR的Linux分区机制启动过程,linux系统启动流程(MBR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux udp端口大数据包,Linu
- 下一篇: linux watch 文件大小,Lin