Linux系統啟動基本流程

Linux開機流程

如下圖

開機啟動

  1. 00×01、BISO自檢

    硬件檢查,檢查硬件完整性,之后從開機BIOS開機硬件列表選擇BOOT設備

    2. 00×02、MBR引導

    從bootloader446字節(只會讀取一個硬盤的MBR),讀取引導程序,讀取分區表4*16字節,從MBR后一部

分扇讀取數據,進入GRUBstage1.5,在這部分扇區尋找 文件系統驅動識別/boot分區

   3. 00×03、GRUB

    進入GRUBstage2階段,讀取GRUB配置文件grub.conf,確定root文件系統對應的磁盤分區,讀取/initrd

(ramfs).-version.img內核鏡像文件位置,加載內核模塊

    4. 00×4、加載kernal

    加載kernal,探測硬件設備,確定硬件設備類型,從initrd/ramfs中加載對應的驅動,以只讀readonly的方式 

掛載rootfs,啟動第一個用戶空間進程/sbin/init(cet6為upstart名字依舊叫init)

    5. 00×5、執行/sbin/init(用戶空間第一個進程

    A、  讀取/etc/inittab

    inittab中定義了系統啟動級別:0關機1單用戶2無NFS的多用戶文本界面3多用戶文本界面4未啟用5圖形界面

    6. 重啟

 id:3:initdefault: 

  • 每一行定義一種action以及與之對應的process

id:runlevel:action:process
action:
wait: 切換至此級別運行一次
respawn:此process終止,就重新啟動之
initdefault:設定默認運行級別; process省略
sysinit:設定系統初始化方式,此處一般為指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1...
l6:6:wait:/etc/rc.d/rc 6 

    B、/etc/rc.d/sysinit 系統初始化腳本
    (1) 設置主機名
    (2) 設置歡迎信息
    (3) 激活udevselinux
    (4)
掛載/etc/fstab文件中定義的文件系統
    (5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統
    (6) 設置系統時鐘
    (7) 激活swap設備
    (8) 根據/etc/sysctl.conf文件設置內核參數
    (9) 激活lvmsoftware raid設備
    (10) 加載額外設備的驅動程序

    (11) 清理操作

    C、根據啟動級別啟動/etc/rc.d/rc{0..6}.d/*服務腳本下指定的腳本

    rc N –> 意味著讀取/etc/rc.d/rcN.d/
    K*: K##*
##運行次序;數字越小,越先運行;數字
    越小的服務,通常為依賴到別的服務
    S*: S##*##運行次序;數字越小,越先運行;數字
    越小的服務,通常為被依賴到的服務
   

 for srv in /etc/rc.d/rcN.d/K*; do
            $srv stop
    done
    for srv in /etc/rc.d/rcN.d/S*; do
        $srv start
    done 

    D、getty(mingetty) /bin/login shell

    當我們看到mingetty的登錄界面時,我們就可以輸入用戶名和密碼來登錄系統了。

    Linux的賬號驗證程序是login,login會接收mingetty傳來的用戶名作為用戶名參數。然后
login會對用戶名進行分析:如果用戶名不是root,且存在/etc/nologin文件,login將輸出
nologin文件的內容,然后退出。這通常用來系統維護時防止非root用戶登錄。只有/etc/securetty中登記了的終端才允許root用戶登錄,如果不存在這個文件,則root可以
在任何終端上登錄。

    /etc/usertty文件用于對用戶作出附加訪問限制,如果不存在這個文件,
則沒有其他限制。
在分析完用戶名后,login將搜索/etc/passwd以及/etc/shadow來驗證密碼以及設置賬戶
的其它信息,比如:主目錄是什么、使用何種shell。如果沒有指定主目錄,將默認為根目
錄;如果沒有指定shell,將默認為/bin/bash。

     login程序成功后,會向對應的終端在輸出最近一次登錄的信息(在/var/log/lastlog中有
記錄),并檢查用戶是否有新郵件(在/usr/spool/mail/的對應用戶名目錄下)。然后開始設置
各種環境變量:對于bash來說,系統首先尋找/etc/profile腳本文件,并執行它;然后如果用
戶的主目錄中存在.bash_profile文件,就執行它,在這些文件中又可能調用了其它配置文
件,所有的配置文件執行后后,各種環境變量也設好了,這時會出現大家熟悉的命令行提示
符,到此整個啟動過程就結束了。


原創文章,作者:Az2h1丶,如若轉載,請注明出處:http://www.www58058.com/79551

(0)
Az2h1丶Az2h1丶
上一篇 2017-07-09
下一篇 2017-07-09

相關推薦

  • keepalived實現lvs高可用并負載均衡lamp

    一、安裝lamp     1、安裝httpd(172.16.23.211) [root@cs1 ~]# yum install -y httpd     2、安裝php(172.16.23.211) [root@cs1 …

    Linux干貨 2016-05-14
  • linux網絡配置

    一、 網絡基本配置:  真不敢想象沒有網絡的一天應該怎樣度過,但是有了網絡就行了?原來剛有了網絡時由于沒有統一的標準,各大硬件廠商各自為政,都在搞網絡,但是都只是同一廠商的設備可以進行通訊,就和不同的國家的人交流使用了不同的語言一樣,難以將所有的網絡連接起來,之后Internet有了統一的標準,大家都遵循它的標準,后來計算機才能進行網絡通訊,同樣將…

    Linux干貨 2016-09-13
  • N25- linux主機名

    N 由于我是零基礎學習linux,學完1-2課時,用心消化中,   先分享我的一個小經驗,我用xshell登錄系統后一般會打開日志記錄功能(文件—-日志——啟動),日志功能啟動后,會以txt的形式記錄下你與系統所有的交互(只會記錄系統打印到幕的內容和你輸入的命令,并不會記錄你與你與運行程序交互時輸入的內容)日志功…

    Linux干貨 2016-12-03
  • 磁盤配額

    配置配額系統     綜述        ?在內核中執行        ?以文件系統為單位啟用        ?對不同組或者用戶的策略不同 …

    Linux干貨 2016-09-02
  • Flex Ant自動構建

    1.  Flex SDK Ant        Flex開發者會遇到很多,比如自動構建,在一個有著N多模塊,N處源碼,構建過程復雜的Flex項目開發中,依賴人力手工構建項目非常不現實(機械重復且枯燥無味的過程,相信哪位開發人員都會避之唯恐不及,而且對于人力是非常大的浪費),而通過使用Ant,我們可以將這些工作…

    Linux干貨 2016-03-22
  • 馬哥教育網絡班20期+第2周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。   答:文件操作     ls 列出目錄下的文件名      ls -l /     touch 文件不存在時生成該文件      touch a.txt   &…

    Linux干貨 2016-06-23
欧美性久久久久