linux的啟動流程詳解

來源:互聯網
上載者:User

 

1、系統載入bios,並透過bios載入coms,由coms內的設定取得主機的各硬體資訊,然後bios進行自檢

2、bios通過硬體的INT 13中端功能來讀取MBR,由MBR載入bootloader。

  1.bootloader可以安裝在檔案系統的根分區和磁碟的MBR上面,在多重系統啟動的環境中,例如windows

    和linux共存,這個時候要先裝windows再裝linux,因為windows預設會將bootloader同時裝在MBR和系統的根分區上面,而裝linux的時候我們可以選擇安裝bootloader到MBR也可以選擇不安裝,多重啟動環境中MBR常被不同系統的bootloader所覆蓋

  2.bootloader的主要功能:

    1.提供選項:用於多重開機

    2.載入系統核心

    3.轉交其他的bootloader

  3.預設情況下windows的bootloader不具有轉交的功能,因此我們先裝windows再裝linux,讓linux的bootloader覆蓋掉windows安裝在MBR上面的bootloader,這樣啟動時我們既可以使用bootloader啟動linux也可以轉交給windows的bootloader用來啟動windows了。

   

3、bootloader載入核心,核心被解壓縮在記憶體當中,並藉由核心的功能來驅動各硬體裝置。

   kernel的主要工作:1.硬體探測2.驅動程式初始化3.以唯讀方式載入根檔案系統4.啟動init進程

   kernel啟動時候的所有資訊在/var/log/demesg

   boot所在的位置不能是lvm,也不能是raid(軟),最多是raid1,MBR的前446位元組沒有多餘的地方載入其他的驅動程式,否則核心就無法被載入。

  1.核心被放置在/boot目錄內,有些裝置的驅動核心以模組化的方式來載入,而這些模組放置在/lib/modules目錄中,所以在裝系統時/lib和/一定要在同一個分區,因為核心是通過掛載根來讀模數塊載入的,開機過程中根目錄是以唯讀方式來掛載的。

   2.核心裡面只有基本裝置的驅動程式,其他的則被做成模組放在/lib/modules裡面以實現動態載入,如果/目錄在特殊的裝置上面,例如SATA硬碟,LVM或者RAID上面,核心裡面沒有內建這些裝置的驅動,這時候核心就需要藉助initrd來實現根的掛載了。

   3.initrd稱為虛擬檔案系統,裡面內建各種驅動程式,它存在得意義就是為了提供驅動,好讓核心能順利的掛載/目錄,initrd的版本一定是和核心版本一致的。initrd不是總會被使用到的,例如/檔案系統在IDE介面的硬碟上時,核心自己就直接掛載了。

    

4、啟動init進程,init讀取/etc/inittab設定檔,並且根據設定檔的內容來完成一系列的任務。

  inittab檔案的主要內容

  id:3:initdefault:   讀取系統啟動的層級

  si::sysinit:/etc/rc.d/rc.sysinit  執行系統的初始化指令碼

  1,啟用udev和selinux

   2,通過讀取/etc/sysct1.conf來設定核心參數

   3,設定系統始終

   4,載入鍵映射

   5,啟用交換分區

   6,設定主機名稱

   7,檢查根檔案系統,無錯後重新以讀寫方式掛載根檔案系統

   8,啟用RAID和LVM裝置

   9,啟動磁碟配額

   10,掛載其他檔案系統

   11,清理過時的檔案鎖和PID檔案

   根據響應的啟動層級來執行相應啟動層級的指令碼,主要是在哪些啟動層級要啟動哪些系統服務,/etc/rc.d/rc{0,1,2,3,4,5,6}中以K開頭的都是關閉,數字越小越早關閉,以S開頭的都是開啟的,數字越小啟動越早,這些檔案中的都是連結檔案,連結至/etc/init.d/目錄下,來說明哪些程式是開機啟動的

  l0:0:wait:/etc/rc.d/rc 0

   l1:1:wait:/etc/rc.d/rc 1

   l2:2:wait:/etc/rc.d/rc 2

   l3:3:wait:/etc/rc.d/rc 3

   l4:4:wait:/etc/rc.d/rc 4

   l5:5:wait:/etc/rc.d/rc 5

   l6:6:wait:/etc/rc.d/rc 6

   設定好ctrl+alt+del這組功能鍵

   ca::ctrlaltdel:/sbin/shutdown -t3 -r now

   設定了兩個電源選項

   pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

   pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

   為使用者開啟六個虛擬終端,mingetty 會開啟一個虛擬終端並且調用login列印一個登入提示

   1:2345:respawn:/sbin/mingetty tty1

   2:2345:respawn:/sbin/mingetty tty2

   3:2345:respawn:/sbin/mingetty tty3

   4:2345:respawn:/sbin/mingetty tty4

   5:2345:respawn:/sbin/mingetty tty5

   6:2345:respawn:/sbin/mingetty tty6

   如果啟動層級是第五層級則啟動圖形化案頭

   x:5:respawn:/etc/X11/prefdm -nodaemon

  

5、執行/etc/rc.d/rc.local,這裡面主要是使用者自訂開機啟動程式的置放位置。

   開機過程中用到的設定檔

   /etc/modprobe.conf

   /etc/sysconfig/*

   這裡面主要的設定檔有:

   authconfig:提供身份認證機制,是否使用/etc/passwd,/etc/shadow來提供身份認證,

   /etc/shadow採用何種密碼編譯演算法(預設MD5),是否還有其他的身份認證方式NIS,LDAP等

   clock:設定系統的時區

   i18n:設定使用的語系

   network:設定網路資訊

   關於bootloader

   由於MBR只有512位元組,分區表佔去64個位元組,還有兩個位元組的校正位,只剩下446個位元組,這446個位元組能夠存放下bootloader嗎?其實bootloader

   載入需要兩個階段

   第一階段:載入bootloader的最小主程式

   第二階段:載入bootloader的設定檔

   [root@server30 ~]# ls -l /boot/grub/

   total 234

   -rw-r--r-- 1 root root     63 Aug  6 17:04 device.map grub的裝置對應檔案

   -rw-r--r-- 1 root root   7584 Aug  6 17:04 e2fs_stage1_5 ext2/ext3檔案系統支援

   -rw-r--r-- 1 root root   7456 Aug  6 17:04 fat_stage1_5  fat支援

   -rw-r--r-- 1 root root   6720 Aug  6 17:04 ffs_stage1_5  ffs支援

   -rw------- 1 root root    812 Aug  6 09:07 grub.conf   grub設定檔

   -rw-r--r-- 1 root root   6720 Aug  6 17:04 iso9660_stage1_5  光碟片支援

   -rw-r--r-- 1 root root   8192 Aug  6 17:04 jfs_stage1_5  jfs支援

   lrwxrwxrwx 1 root root     11 Aug  6 17:04 menu.lst -> ./grub.conf

   -rw-r--r-- 1 root root   6880 Aug  6 17:04 minix_stage1_5  mini檔案系統支援

   -rw-r--r-- 1 root root   9248 Aug  6 17:04 reiserfs_stage1_5 reiserfs檔案系統支援

   -rw-r--r-- 1 root root  32428 Jan  5  2007 splash.xpm.gz  開機圖片

   -rw-r--r-- 1 root root    512 Aug  6 17:04 stage1  第一階段說明 

   -rw-r--r-- 1 root root 104988 Aug  6 17:04 stage2  第二階段說明

   -rw-r--r-- 1 root root   7072 Aug  6 17:04 ufs2_stage1_5 ufs檔案系統支援

   -rw-r--r-- 1 root root   6272 Aug  6 17:04 vstafs_stage1_5 vstafs支援

   -rw-r--r-- 1 root root   8904 Aug  6 17:04 xfs_stage1_5  xfs支援

  

   關於GRUB,grub.conf

   default=0  開機使用哪個title,預設第一個

   timeout=5  5s延遲後不選擇title的話預設使用第一個title進系統

   splashimage=(hd0,0)/grub/splash.xpm.gz  開機圖片,(640*480 14bit色,要儲存為xpm並且用gzip壓縮一下)

   hiddenmenu 隱藏titile

   title Red Hat Enterprise Linux Server (2.6.18-164.el5) title名稱

   root (hd0,0) 這裡是第一塊磁碟的第一個分區,grub認為所有的磁碟都是hd裝置,並且磁碟號和分區號都從0開始

   kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet 核心名稱以及置放位置,root指定根目錄,rhgb顯示為彩色

   quiet,對kernel偵測到的資訊不顯示輸出

   initrd /initrd-2.6.18-164.el5.img  initrd的名稱以及置放位置

  

  

   grub加密grub-md5-crypt

   在hiddenmenu下面寫入

   password --md5 密文

  

   誤操作grub損壞

   1,進入grub命令模式root(hd0,0);setup (hd0);quite

   2,grub-install --root-directory=/(此處的目錄為boot的父目錄)/dev/sda

         

   dd if=/dev/sda of=/backup/mbr bs=512 count=1 備份MRB

   dd if=/dev/zero of=/dev/sda bs=512 count=1 銷毀MBR,會刪除磁碟上面的所有分區資訊以及bootloader

本文出自 “成長全記錄” 部落格

聯繫我們

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