CentOS 6 系統啟動流程

一、CentOS 6 啟動流程

1.加載BIOS的硬件信息,獲取第一個啟動設備。

2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息

3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。

4.核型執行init程序并獲取運行信息。

5.Init執行/etc/rc.d/rc.sysinit文件。

6.啟動核心的外掛模塊(/etc/modprobe.conf)。

7.Init執行運行的各個批處理文件(scripts).

8.Init執行/etc/rc.d/rc.local.

9.執行/bin/login程序,等待用戶登錄。

10.登錄之后開始以Shell控制主機。

CentOS 6啟動流程總結:

POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別–> 系統初始化腳本rc.sysinit–> 關閉或啟動對應級別的服務–> 啟動終端

第一個進程init及配置文件/etc/inittab

run level:執行等級

  0:關機

  1:單用戶模式(root自動登錄), single, 維護模式

  2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式

  3:多用戶模式,正常模式;文本界面

  4:預留級別;可同3級別

  5:多用戶模式,正常模式;圖形界面

  6:重啟

init初始化:

 init讀取其初始化文件:/etc/inittab

 初始運行級別(RUN LEVEL)

 系統初始化腳本

 對應運行級別的腳本目錄

 捕獲某個關鍵字順序

 定義UPS電源終端/恢復腳本

 在虛擬控制臺生成getty

 在運行級別5初始化X


/etc/inittab 內容與語法:

[root@CentOS 6 ~]# cat /etc/inittab
# 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)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:     默認啟動級別

CentOS 6 /etc/inittab和相關文件

/etc/inittab:設置系統默認的運行級別

 id:3:initdefault:

 /etc/init/control-alt-delete.conf

 /etc/init/tty.conf

 /etc/init/start-ttys.conf

 /etc/init/rc.conf

 /etc/init/prefdm.conf

CentOS 5 的inittab文件:

每一行定義一種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/rc0

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

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

/etc/rc.d/rc.sysinit: 系統初始化腳本

  (1) 設置主機名

  (2) 設置歡迎信息

  (3) 激活udev和selinux

  (4) 掛載/etc/fstab文件中定義的文件系統

  (5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統

  (6) 設置系統時鐘

  (7) 激活swap設備

  (8) 根據/etc/sysctl.conf文件設置內核參數

  (9) 激活lvm及software raid設備

  (10) 加載額外設備的驅動程序

 (11) 清理操作

注意:

正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向 了/etc/rc.d/rc.local腳本

不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local在指定運行級別腳本后運行

啟動流程中會用到的主要配置文件:

1,關于模塊:/etc/modprobe.conf

2,關于服務的相關配置文件:/etc/sysconfig/*

       authconfig:設置用戶的身份認證的機制

       clock:設置主機的時區。在clock文件內設置選項“ZONE”所參考的時區位于 /usr/share/zoneinfo 目                      錄下的相對路徑中

        i18n:設置語序

        keyboard&mouse:設置鍵盤與鼠標

        network:是否要啟動網絡

        network-scripts:設置網卡

Run level 的切換:

與run level有關的啟動是在/etc/rc.d/rc.sysinit執行完畢后。run level的不同僅是/etc/rc[0-6].d里面啟動服務不同而已。

1,要每次啟動都執行某個默認的 run level ,則需修改/etc/inittab 內的設置選項,即是 "id:5:initdefault: 里面的數字

2,如果僅是暫時更改系統的 run level 時,則使用 inint[0-6] 來進行 run level 的更改,但下次重啟時,依舊會是以 /etc/ininttab 的設置為準

當執行 init3 時,系統會:

1),先比較/etc/rc3.d 及 /etc/rc5.d 內的K與S開頭的文件

2),在新的 run level 即是 /etc/rc3.d 內有多的K開頭的文件,則給予關閉

3),在新的 run level 即是 /etc/rc3.d 內有多的S開頭的文件,則給予開啟

[root@CentOS 7 ~]# runlevel       查詢當前系統的運行級別
N  5        由于之前沒切換過 runlevel,因此前一個runlevel 不存在(N) 
[root@CentOS 7 ~]# init 3     切換運行級別
5  3        前一個是 runlevel 5, 目前是 runlevel 3


二、在CentOS 5 6 上破解root的口令

只要能夠進入并且掛載 /,然后重新設置下root的密碼,就可以救回來。這是因為在啟動流程中,若強制內核進入runleverl 1,默認是不需要密碼即可取得一個root的shell來救援

操作流程:

1,重新啟動系統

2,啟動進入grub菜單后,在你要進入的菜單上面按‘e’鍵進入詳細設置;將光標移動kernel上方并按‘a’鍵進入編輯界面;然后出現如下界面來處理:

wKioL1fRaSKzUx5lAAAGc_n8xiE406.png

  按鍵的描述:

wKiom1fRaE3TUaJAAAAKdGIuWIg753.png

  重點是那個特殊字體(在rhgb后面加上1, s, S, single都可以)按下[enter]就能夠啟動進入單用戶   維護模式了。

wKiom1fRaTihviBXAAASZQ6ndr8183.png

3,進入單用戶維護模式后,系統會以root的權限直接給你一個shell,此時你就能夠執行“passwd”這個命令來重設root的密碼。然后直接執行“init 5”就可以切換成為X窗口或“init 3”進入純字符界面或者直接“reboot”.

wKiom1fRaXLxXjxfAAAUydZiHhs360.png

4,又恢復到熟悉的界面:

wKioL1fSOjzxTXgYAAAFvyhByj4590.png


三、在Centos 5 6 編寫服務腳本:

要實現開機啟動后自動運行腳本,則需要用到chkconfig命令

查看服務在所有級別的啟動或關閉設定情形:

chkconfig[–list] [name]

SysV的服務腳本放置于/etc/rc.d/init.d(/etc/init.d)

添加:chkconfig–add name

格式:

   #!/bin/bash

   #LLLL 表示初始在哪個級別下啟動,-表示都不啟動

   # chkconfig: LLLL nnnn

刪除:chkconfig–del name

修改指定的鏈接類型:

chkconfig[–level levels] name <on|off|reset>

–level LLLL: 指定要設置的級別;省略時表示2345

示例:

[root@CentOS 6 init.d]# cat testservice
#!/bin/bash
# chkconfig:35 88 22   必須給出,指定在哪個級別下運行該服務
# description: test service    描述
prog=$(basename $0)
lockfile=/var/lock/subsys/$prog
start() {
  if [ -f $lockfile ];then
     echo "$prog is running yet."
  else
     touch $lockfile
     [ $? -eq 0 ] && echo "start $prog finished"
  fi
}
stop() {
  if [ -f $lockfile ];then
     rm -f $lockfile
     [ $? -eq 0 ] && echo "stop $prog finished"
  else
     echo "$prog is not running"
  fi
}
restart() {
   if [ -f $lockfile ];then
      rm -f $lockfile
      touch $lockfile
      echo "start $prog finished"
   fi
}
status() {
   if [ -f $lockfile ];then
      echo "$prog is running"
   else
      echo "$prog is stopped"
   fi
}
usage() {
   echo "usage:$prog {start|stop|restart|status}"
}
case $1 in
start)
   start;;
stop)
   stop;;
restart)
   stop
   start;;
status)
   status;;
*)
   usage
   exit 1;;
esac
[root@CentOS 6 init.d]# chmod u+x testservice
[root@CentOS 6 init.d]# chkconfig --add testservice
[root@CentOS 6 init.d]# chkconfig --list testservice
testservice  0:off1:off2:off3:on4:off5:on6:off
[root@CentOS 6 init.d]#ll /etc/rc.d/rc*.d/*test*
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc0.d/K22testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc1.d/K22testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc2.d/K22testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc3.d/S88testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc4.d/K22testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc5.d/S88testservice -> ../init.d/testservice
lrwxrwxrwx 1 root root 21 Sep 18 17:42 /etc/rc.d/rc6.d/K22testservice -> ../init.d/testservice
[root@CentOS 6 ~]#service testservice start
start testservice finished
[root@CentOS 6 ~]#service testservice stop
stop testservice finished
[root@CentOS 6 ~]#service testservice status
testservice is stopped
[root@CentOS 6 ~]#service testservice s
usage:testservice {start|stop|restart|status}


總結:

wKiom1fVFW2zMFtaAADjN2Tg7hc561.png

作業:

1、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”

* * * * 2,4,7 cp -f /var/log/messages /logs/mesages-`date +\%Y\%m\%d

2、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中

* 2 * * * /bin/egrep '^[S|M]' /proc/meminfo >> /tmp/meminfo.txt

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

(0)
pingskypingsky
上一篇 2016-09-12 05:47
下一篇 2016-09-12 08:03

相關推薦

  • 22期網絡班+第一周作業+深圳+王金寶

    1、描述計算機的組成及其功能? 答: 顯示器和主機,顯示器就不說了 主機里又有,主板,又叫主機板(mainboard)、系統板(systembourd)和母板(motherboard);它安裝在機箱內,是微機最基本的也是最重要的部件之一。主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統,一般有BIOS芯片、I/O控制芯片、鍵盤和面板控制開關 接口、指…

    Linux干貨 2016-08-13
  • zabbix

    一、zabbix簡介 Zabbix是一個基于WEB界面的分布式開源監控系統,主要有2部分構成,Zabbix server于Zabbix agent,同時也支持Zabbix proxy。 現在,我們已經將Zabbix大量的應用到了線上環境。在日常的監控中,深切的體驗到了Zabbix的高效快捷和優秀的擴展能力。 Zabbix的底層采集程序是用C語言編寫的Serv…

    Linux干貨 2016-01-05
  • 管道、重定向和用戶管理練習

    前面一章學習了硬鏈接和軟鏈接,回顧上一章節內容:    硬鏈接:在inode表中記錄一個條目,所有的元數據和原始文件元數據相同。        ·相當于兩個名字。        ·刪除原始文件,另一個條目也能夠…

    Linux干貨 2016-08-04
  • keepalived高可用雙主lvs-dr模型集群

    環境 centos6.8 在keepalived服務器上安裝keepalived RS服務器上安裝nginx ,安裝過程省略 為了便于實驗,四臺機器將關閉iptables和selinux 配置如下: K1: #修改keepalived配置文件 vim /etc/keepalived/keepalived.conf ! Configuration File f…

    2017-05-13
  • Nagios

    一、Nagios簡介   Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復后發出正常的郵件或短信通知。 Nagios原名為NetSaint,由Ethan Galstad開發并維護至今…

    2017-12-20
  • 磁盤和文件系統創建

    磁盤結構:主要是由盤體、控制電路、接口部件等組成。盤體里面封裝了多個盤片的腔體;控制電路包含硬盤BIOS、主控芯片和硬件緩存等單元;接口部件包含電源、數據接口主從跳線等。讀取硬盤數據時,主軸電機帶動盤片旋轉,副軸電機帶動磁頭臂將磁頭放到相應的數據存放的柱面和磁道上,再由磁頭讀出相應扇區中的數據。(圖1-1) 磁道(track):每個盤面被劃分成了多個同心圓環…

    Linux干貨 2016-02-14
欧美性久久久久