20160907 centos啟動流程

1、centos5,6啟動流程

centos系統啟動流程
linux系統的組成部分:內核+根文件系統
內核:進程管理,內存管理,網絡協議棧,文件系統,驅動程序,安全功能
運行的系統環境可分為兩層:內核空間,用戶空間
 用戶空間:應用程序(進程或線程)
 內核空間:內核代碼(系統調用)
 
 內核設計流派:
    單內核設計:把所有功能集成與同一個程序。  linux
    微內核設計:每種功能使用一個單獨的子系統實現。window,solaris
 
 linux內核特點:
 (1)支持模塊化:支持模塊運行時動態裝載或卸載。 .ko(kernel object,/lib/mudules/)
 
 (2)組成部分:
       核心文件:/boot/vmlinuz-version-release ,內核安裝多個,會有多個核心文件。
       ramdisk:輔助的偽根系統CentOS 5: /boot/initrd-VERSION-release.img,CentOS6,7: /boot/initramfs-VERSION-release.img
     (內核加載完成后,需要加載跟,必須加載/lib/modules/下驅動,所以要將偽根(initramfs-2.6.32-642.el6.x86_64.img)編譯進內核。initrd變成initramfs,就是避免雙緩存,從而提升速度的。centos6可以通過:mkinitrd initramfs-`uname -r`.img `uname -r`創建)
     
       模塊文件:/lib/modules/version-release  ,模塊如,文件系統,網絡等等
             
 centos系統(mbr類的)的啟動流程:
     (1)   POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。
       ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自        檢程序和系統啟動自舉程序等。
       RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定
       
     (2)  bootloader: 引導加載器,引導程序,按次序查找引導設備,第一個有引導程序的設備為本次啟動設備bootloader.
      widows:ntloader
      linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
      LILO: linux loader (手機上跑的)
      GRUB: GRandUnified Bootloader :(1)GRUB 0.X :GRUB Legacy  (2) GRUB 1.X  :GRUB2
     
      MBR: 512bytes,446bytes:bootloader,64bytes:fat(各分區信息),2:bytes:55aa有效信息。
      dd if=/dev/sda of=/root/mbr bs=1 count=512;     hexdump  -C -v  /dev/sda可以查看前512字節
 
      GRUB:
                 bootloader:1st stage    
                 partitionfilesystem dirver ,1.5 stage,為bootloader后,/dev/sda 2-30個扇區(sector)
                 partitions :  /boot/grub   2nd  stage   ,  grub.conf —>root=uuid為根的分區

    (3)kernel加載內核
         自身初始化:(1)探測可識別到的所有硬件設備  
         (2)加載硬件驅動程序:(有可能會借助于randisk加載驅動
         內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
         ramdisk–> ramfs提高速度  
         CentOS 5: initrd, 工具程序:mkinitrd
         CentOS 6: initramfs,工具程序:mkinitrd, dracut       initramfs-2.6.32-642.el6.x86_64.img
         )
         (3)  以只讀方式掛載根文件系統;
         (4)  運行用戶控件的第一個應用程序:/sbin/init
         
         init程序的類型:
         centos 5: sysV init    ,配置文件: /etc/inittab
         centos 6 :   upstart       , 配置文件  :  /etc/inittab(為了兼容5遺留的)   ,  更主要的是/etc/init/*.conf
         centos 7 :   systemd    ,配置文件: /etc/systemd/system/
 
 
系統初始化流程(內核級別):post–>BootSequence(bios)–>Bootloader(mbr)–>kernel(借助ramdisk加載根文件系統)–>rootfs(readonly)–>/sbin/initblob.png

blob.png

/sbin/init   centos
運行級別  (  /etc/inittab  )  :為系統運行或維護等目的而設定;0-6:   7個級別            
0:關機         1:單用戶模式(root自動登錄), single, 維護模式  (開機–>esc–>a–>1–>進去系統–>修改密碼)
2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式        3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別    5:多用戶模式,完全功能模式;圖形界面    6:重啟
默認級別:3, 5
切換級別:init#。     關機:init 0      字符操作界面:init 3       進入圖形界面:init 5          重啟系統:init 6
查看級別:runlevel; who -r

centos5,6啟動(已redhat5.8為例)

配置文件:/etc/inittab   
每行定義一種action以及與之對應的process

blob.png

action:walt:等待切換至此任務所在的戒備時只需一次
respawn:次任務終止時,就自動沖洗啟動之
initdefault:設定默認運行級別,此時,process省略,如上圖
sysinit:系統初始方式,此處一般為只讀/etc/rc.d/rc.sysinit腳本
             
例如:
    id:3:initdefault:  
    si  : sysinit :/etc/rc.d/rc.sysinit
    lo:3:wait:/etc/rc.d/rc 3        
      意味著去啟動或關閉/etc/rc.d/rc3.d/目錄下的服務
      K* : 要停止的服務; K##*,優先級,數字越小,越是優先關閉;依賴的服務先關閉,然后關閉被依賴的
      S*:要啟動的服務,數字越小,越是優先啟動,被依賴的服務先啟動,而依賴的服務后啟動。
      rc腳本:接受一個運行級別數字為參數      
      腳本框架:
      for srv in /etc/rc.d/rc$.d;do                           for srv in /etc/rc.d/rc#.d;do
           $srv stop                                              $srv start
      done                                                    done
               
   /etc/init.d/*(/etc/rc.d/init.d/*)目錄為服務腳本 執行方式:
                   #/etc/rc.d/init.d/srv_scripts    {start|stop|restart|status}
                   # service   srv_scripts     {start|stop|restart|status}
     
    /etc/rc.d/initd/目錄手動添加程序服務后,可用chkconfig創建運行級別  
    /etc/rc.d/initd/目錄腳本格式

blob.png

    chkconfig命令  :管控/etc/init.d/每個服務腳本在各級別下的啟動或關閉狀態;
    chkconifg 服務 –add:服務受chkconfig控制
    chkconfig 服務 –del  :  服務不受chkconfig控制
    chkconfig –list :查看各運行級別下服務啟動情況
    chkconfig –list  特定服務 :查看特定服務各運行級別下服務啟動情況
    修改指定的連接類型
    chkconfig [–level levels]  name <on| off| reset>    (–level levels):為指定的運行級別,如果不指,則默認為2,3,4,5

blob.png

   rc.local:  開機就執行的腳本,可以將開機需要執行的命令放入/etc/rc.d/rc.local文件,這個文件在
   rc2.d,rc3.d,rc4.d,rc5.d目錄中,有對應的軟連接,而且數字是最后的  

blob.png

注意:正常級別下,最后啟動的一個服務S99local沒有連接至/etc/init.d下的摸個腳本,而是連接至/etc/rc.d/rc.local的腳本,
  不變或不需要寫為服務腳本的程序期望能開機自動運行時,直接放在與此腳本文件中即可。
 
 
  tty1:2345 :respawn:/usr/sbin/mingetty tty6  啟動虛擬終端的
  (1)mingetty會調用login程序
  (2)打開虛擬終端的程序除了mingetty之外,還有諸如getty等;
 
  系統初始化腳本:/etc/rc.d/rc.sysinit
    (1)設置主機名
    (2)設置歡迎信息
    (3)激活udev和selinux
    (4)掛載/etc/fstab文件中定義的所有文件系統。
    (5)檢查根文件系統,并以讀寫方式重新掛載根文件系統
    (6)設置系統時鐘
    (7)根據/etc/sysctl.conf文件的設置,來設定內核參數。
    (8)激活lvm及軟raid設備
    (9)激活swap設備
    (10)加載額外設備的驅動程序
    (11)清理操作
 
 總結(用戶控件的啟動流程) :/sbin/init(/etc/inittab)  
   設置默認運行級別–>運行系統初始化腳本,完成系統初始–>關閉對應級別下面要停止的服務,啟動對應級別下需要開的服務–>設置登錄終端–>啟動圖形終端

blob.png

centos6啟動流程
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控制主機。  

centos6啟動
init程序:upstart,單依然為/sbin/init,其配置文件/etc/init/*.conf,/etc/inittab(僅用于定義默認運行級別)
/etc/init/rc.conf    init-system-dbus.conf
注意:*.conf為upstart風格的配置文件

centos7啟動    
init程序:systemd,配置文件/usr/lib/systemd/system/*, /etc/systemd/system/*
systemctl {start|stop|status|restart}  服務[.service]      [.service]可省
完全兼容sysV腳本機制;因此service命令依然可用

centos5,6破解口令

(1)開機按e,進入grub界面

blob.png

(2)在quiet后寫1,按回車鍵,進入single模式

blob.png

(3)進入系統后修改root密碼,在reboot即完成密碼修改。

blob.png

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

[root@localhost ~]# chmod u+x cpmessage.sh

[root@localhost ~]# crontab -l

* * * * 0,2,4 /root/cpmessage.sh

[root@localhost ~]# cat /root/cpmessage.sh 

#!/bin/bash

#auther:xiong

cp /var/log/messages /logs/message-`date +%Y%m%d`

blob.png

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

[root@localhost ~]# crontab -l

* */2 * * * /root/cpmeminfo.sh

[root@localhost ~]# cat cpmeminfo.sh 

#!/bin/bash

#auther:xiong

cat /proc/meminfo | grep -E "S|M" >> /tmp/meminfo.txt

[root@localhost ~]# 

blob.png

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

(0)
maoxiongmaoxiong
上一篇 2016-09-13 15:19
下一篇 2016-09-13 15:32

相關推薦

  • CentOS6.9系統上編譯安裝httpd.2.2.32

    本文所做的所有操作是在一部新安裝的CentOS6.9系統上。 1.環境與配置 環境說明:VMware上安裝的CentOS6.9系統,兩張系統盤做成的yum源 配置:編譯生成的所有的文件都存放在/usr/local/httpd22/這個目錄下 2.安裝GCC編譯器 [root@localhost ~]# yum grouplist | grep “Develo…

    2017-04-20
  • 行編輯器sed

    行編輯器sed   Sed,grep,awk命令被稱為文本編輯三劍客,目前學習了grep命令,sed命令 自我覺得sed命令更強大,排名第一,grep暫居第二,awk沒學不太清楚。   這次的博客寫一下剛學習的sed命令,grep命令是全局搜索剪切,sed命令則是逐行進行處理,它一次處理一行內容。Sed命令有兩個空間,…

    2017-08-26
  • OpenSSL

    加密和解密技術 本章內容: 安全機制 對稱加密 不對稱加密 散列算法 PKI和CA 相關知識: 1)傳輸層協議:        TCP(面向連接),UDP(面向無連接),SCTP(流控協議) 2)port(端口):傳輸層協議都會提供端口,        端口(port)是標記進程…

    Linux干貨 2016-09-29
  • bash編程函數select語句的使用

    £select             select循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3提示符,等待用戶的輸入,用戶輸入菜單列表中的某個數字,執行相應的命令,用戶輸入被保存在變量REPLY中。 select是個…

    Linux干貨 2016-08-24
  • shell練習

    1 、編寫腳本/root/bin/systeminfo.sh, 顯示當前主機系統信息, 包括主機名,IPv4 地址,操作系統版本,內核版本,CPU 型 號,內存大小,硬盤大小。 運行后結果是: 2 、編寫腳本/root/bin/backup.sh ,可實現每日將/etc/ 目錄備 份到/root/etcYYYY-mm-dd中 運行結果是: 3 、編寫腳本/r…

    Linux干貨 2016-08-15
  • vim編輯器-練習題

    1 、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符 #cp /etc/profile /tmp #vim /tmp/profile :%s/^[[:space:]]\+// 2 、復制/etc/rc.d/init.d/functions 文件至/tmp 目錄,用查找替換命令為/tmp/func…

    Linux干貨 2016-08-15
欧美性久久久久