淺談linux啟動流程

來源:互聯網
上載者:User

標籤:啟動 linux 流程

第一階段:POWER-ON

       使用者按下電源開關的那一瞬間,叫Power On階段 。在這個階段,BIOS檢查電腦上一些硬體的狀態及儲存在CMOS中的設定。CMOS是南橋裡面的一個特殊區塊,用來讓BIOS儲存使用者佈建(進BIOS中看到的選項)。北橋,南橋是主板上的晶片集,AMD的cpu不使用此種架構,北橋控制CPU和記憶體,南橋負責PCI,USB,VGA等外圍裝置。


第二階段:BIOS加電自檢

       Power On階段一開始,會進入BIOS的啟用流程,BIOS是進本輸入/輸出系統的縮寫,是在電腦沒有訪問磁碟前決定機器準系統的軟體,包含了修飾鍵盤,顯示屏,磁碟機的代碼。接著BIOS會在Flash Memory中執行,然後將自己和之前使用者儲存在CMOS中的資料解壓到記憶體中。BIOS作用主要是:1>自檢和初始化,檢測主板硬體並通知開始執行。2>設定中斷。3>載入作業系統,由BIOS轉交給開機磁區,再有開機磁區跳到各分區啟用相應作業系統。


第三階段:讀取MBR

       MBR(Master Boot Record,主引導記錄),在硬碟的第一個扇區,上一階段BIOS將MBR載入到記憶體中執行。MBR共512Byte,分成三個部分BootLoader,Partition table和Magic Number。BootLoader是MBR用來儲存開機管理程式的地方(grub,lilo等)。BootLoader執行載入扇區和志向kernel的功能。Magic Number永遠填入"55AA",讓BootLoader中的開機管理程式確認這個地方就是MBR。


第四階段:載入BootLoader

     當BIOS找到硬碟上的MBR後,控制權就交由BootLoader。GRUB是一個強悍的開機管理程式,支援多重開機管理。/boot/gurb目錄可看到幾個系統檔案,主要是stage1,stage1_5,stage2這三種類型。stage1負責BIOS交給BootLoader時,載入開機管理程式,linux中是GRUB。stage1.5識別不同類型的檔案系統,比如載入e2fs_stage1_5以後,就可以識別ext2格式。當stage1.5載入後,就賦予GRUB訪問檔案系統目錄的權力,也就是說在開始找不到stage2,可以從檔案系統中找到stage2的位置。stage2是GRUB最核心程式,作業系統的載入,新增參數,修改選項都由stage2負責。因此stage2不會太小,不可能放進MBR,只能放到檔案系統中。而stage1.5提供識別不同檔案系統的能力,真是巧妙的設計。當stage2執行時,會從現有檔案系統中載入設定檔案,/boot/grub/grub.conf設定檔。如下:

# grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE: You have a /boot partition. This means that# all kernel and initrd paths are relative to /boot/, eg.# root (hd0,0)     #核心檔案所在的裝置,對grub而言,所有硬碟一律為hd#,#表示第幾個磁碟,後面那個表示對應磁碟分割# kernel /vmlinuz-version ro root=/dev/sda2# initrd /initrd-[generic-]version.img#boot=/dev/sdadefault=0    #設定預設啟動的title編號,從0開始。timeout=5   #等待使用者選擇的逾時時常,單位是秒。splashimage=(hd0,0)/grub/splash.xpm.gz  #啟動背景圖片hiddenmenu     #隱藏菜單title Red Hat Enterprise Linux 6 (2.6.32-504.el6.i686)  #核心標題,或作業系統名稱,可自由修改root (hd0,0)  #核心檔案所在的裝置kernel /vmlinuz-2.6.32-504.el6.i686 ro root=UUID=77085801-d743-4704-b454-46954507f798 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quietinitrd /initramfs-2.6.32-504.el6.i686.img  #initial ramdisk啟用系統所需要載入的檔案系統


第五階段:核心初始化


       根據/boot/grub/grub.conf設定檔中,根據核心路徑,將核心解壓至記憶體,至此,核心獲得系統控制權,BootLoader退出。核心接管以後,會執行以下幾個過程:

        1>裝置探測

        2>驅動初始化

        3>以唯讀方式掛載根檔案系統(為了安全起見)

        4>裝在第一個進程init(PID:1)


第六階段:執行第一個進程/sbin/init

       /sbin/init 最主要的功能就是準備軟體執行的環境,包括系統的主機名稱、網路設定、語言、檔案系統格式及其他服務的啟動。所有動作都依據/etc/inittab來規劃。RHEL6版本這個檔案和RHEL5區別很大,只能設定運行層級,其他相關配置設定檔中說明很清楚,理解RHEL5的inittab檔案對理解RHEL6的啟動機制有很大協助。


RHEL5的inittab檔案

## inittab This file describes how the INIT process should set up# the system in a certain run-level.## Author: Miquel van Smoorenburg, <[email protected]># Modified for RHS Linux by Marc Ewing and Donnie Barnes## Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)# #id:runlevels:action:process #id:標識符;runlevel:在哪個層級執行;action:在什麼情況下執行;process:要啟動並執行程式id:3:initdefault:  #預設運行層級3# System initialization.si::sysinit:/etc/rc.d/rc.sysinit #表示所有層級,系統初始化執行/etc/rc.d/rc.sysinitl0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 #運行指定層級對應目錄下的指令碼l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6# Trap CTRL-ALT-DELETEca::ctrlaltdel:/sbin/shutdown -t3 -r now  #Ctrl+alt+del按鍵組合的功能# When our UPS tells us power has failed, assume we have a few minutes# of power left. Schedule a shutdown for 2 minutes from now.# This does, of course, assume you have powerd installed and your# UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" #定義ups電源故障時的操作# Run gettys in standard runlevels1:2345:respawn:/sbin/mingetty tty1   #啟動虛擬終端2:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5x:5:respawn:/etc/X11/prefdm -nodaemon #啟動圖形終端


/etc/rc.d/rc.sysinit是系統初始化指令碼,完成以下任務:

1>啟用udev和selinux

2>根據/etc/sysctl.conf檔案,設定核心參數

3>設定時鐘

4>裝載鍵盤對應

5>啟動交換分區

6>設定主機名稱

7>根檔案系統檢測,並以讀寫方式重新掛載

8>啟用RAID和LVM裝置

9>啟動磁碟配額

10>根據/etc/fstab,檢查並掛載其他檔案系統

11>清除到期的鎖和PID檔案


l3:3:wait:/etc/rc.d/rc 3 #進入層級3,執行/etc/rc.d/rc,/etc/rc.d/rc3.d檔案夾中,K開頭的服務將被關閉,S開頭的將被開啟,資料越小越優先被選定,最後執行rc.local,rc.local可以放入使用者想要開機執行的的任務。


RHEL6的inittab檔案

# inittab is only used by upstart for the default runlevel.## ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.## System initialization is started by /etc/init/rcS.conf## Individual runlevels are started by /etc/init/rc.conf## Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf## Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,# with configuration in /etc/sysconfig/init.## For information on how to write upstart event handlers, or how# upstart works, see init(5), init(8), and initctl(8).## Default runlevel. The runlevels used are:# 0 - halt (Do NOT set initdefault to this) #關機# 1 - Single user mode #單使用者# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) #多使用者,沒有NFS# 3 - Full multiuser mode #多使用者,命令列# 4 - unused #保留層級# 5 - X11 #圖形# 6 - reboot (Do NOT set initdefault to this) #重啟# id:3:initdefault:

RHEL6的inittab檔案只設定了預設運行層級。


第七階段:登入


     啟動虛擬終端以後便進入使用者登入介面了,可以使用使用者名稱和密碼登入。


本文出自 “linux” 部落格,請務必保留此出處http://yaoyaoquqi.blog.51cto.com/8124243/1619596

淺談linux啟動流程

聯繫我們

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