天天看點

linux系統啟動流程詳解

Linux系統啟動流程

POST(加電自檢)——>BIOS(啟動次序)——>MBR(bootloader)——>kernel(硬體層)——>initrd——>init(使用者層)

核心設計風格

                單核心:Linux

                微核心:Windows(線程)

核心:動态加載核心子產品

核心:/lib/modules/“核心版本号命名的目錄”

核心的命名

例如vmlinuz-2.6.32

                /lib/modules/2.6.32

在核心與應用程式之間會有一個提供程式的驅動

一個應用程式的運作需要依賴很多的庫檔案

ldd:顯示共享庫依賴關系

ldd /path/to/二進制檔案

chroot:chroot/path/to/temproot

ramdisk——将記憶體模拟成磁盤來使用

運作級别——啟動的服務不同

                0:關機

                1:單使用者模式,直接以管理者登入,不需要密碼

                2:多使用者模式,不啟用NFS(網絡檔案系統)

                3:正常多使用者模式,文本模式

                4:預留模式

                5:多使用者模式,圖形模式

                6:重新開機

在/etc/inittab中定義了啟動的運作級别

詳解啟動過程

bootloader

不想讓别人随便通路grub可以給它加密碼,還可以将密碼進行加密

檢視運作級别

                runlevel

                who –r

檢視核心相關資訊

                uname–r

模拟練習,安裝grub,先将bootloader破壞掉

破壞bootloader(即安裝盤的錢446扇區)

安裝grub第一步

#grub

                grub>(要指定核心所在的磁盤,判斷那個磁盤是安裝了核心)

安裝grub的第二種方法

#grub-install --root-directory=/path/to/boot‘s_parent_dir   /path/to/device(這裡添加的是核心分區所挂載到了哪個檔案系統下,例如使用mount檢視/dev/sda挂載到了/boot下,于是在=後添加/boot/)

若是grub檔案不存在了,進行主機啟動的拯救

                此時不可以使用root進行判斷哪個磁盤是含有核心檔案的,要使用find指令查找核心檔案

grub配置檔案丢失

grub>find

grub>root(hd#,N)

grub>kernel /path/to/kernel_file

grub>initrd /path/to/initrd_file

grub>boot

kernel初始化過程

裝置探測

驅動初始化(可能從initrd檔案中裝載驅動子產品)

以隻讀方式挂載根檔案系統

裝載第一個程序init

init——>(/etc/inittab)

init下的字段

                id:runlevel:action:process

action

                initdefault:設定預設運作級别

                sysinit:系統初始化

                wait:等待級别切換至此級别時執行

                respawn:一旦程式終止會重新啟動

将/etc/rc.d/rc.sysinit腳本讀懂

                激活udev和selinux

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

                設定時鐘

                裝載鍵盤映射

                啟用交換分區

                設定主機名

                根檔案系統檢測,并以讀寫方式重新挂載

                激活raid和LVM裝置

                啟用磁盤配額

                根據/etc/fstab檢查并挂載其他檔案系統

                清理過期的鎖和PID檔案

chkconfig

                chkconfig:runlevel  ss  kk當chconfig指令來為此腳本在rc.#d目錄建立連接配接時runlevels建立預設為s開頭的的連接配接,除此之外的級别預設建立為k開頭的連接配接s後面的啟動優先級為ss表示的數字,k後面為關閉優先級順序kk所表示的數字

description:用于說明此腳本的簡單功能

chkconfig

–list:檢視所有獨立服務的啟動設定

--add:建立連接配接檔案

--del:删除連接配接檔案

--level runlevels 服務名稱(on|off)

樣例腳本

/etc/rc.d/rc.local:系統最後啟動的一個服務,一個應該執行的腳本

/etc/inittab:

                設定預設運作級别

                運作系統初始化腳本

                運作指定運作級别對應的目錄下的腳本

                設定Ctrl+Alt+Del組合鍵的操作

                定義UPS電源在電源故障/恢複時執行的操作

                啟動虛拟終端

                啟動圖形終端

守護程序的類型

                獨立守護程序

繼續閱讀