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
下一篇 2016-09-13

相關推薦

  • 馬哥教育網絡班19期第七周課程練習

    第七周作業 1.創建一個10G分區,并格式化為ext4文件系統:   (1)要求甘block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;   (2)掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@nginx ~]# fdisk /dev/sdd D…

    Linux干貨 2016-06-23
  • configure –help 參數詳解

    configure –help 參數詳解及apache2.2靜態編譯和動態編譯參考

    Linux干貨 2016-05-25
  • gawk基礎

     一、gawk 是什么 在了解gawk之前,先了解一下文本三工具      文本過濾工具:grep|egrep|fgrep   其中fgrep不支持正則表達式 1.行編輯器:sed      sed 有兩種空間   模式空間    保持空間 2. 文…

    Linux干貨 2016-06-24
  • Linux用戶和組的主要配置文件及其相關命令

    Linux用戶和組的主要配置文件: /etc/passwd:用戶及其屬性信息 /etc/shadow用戶密碼及其相關屬性 /etc/group組及其屬性信息 etc/gshadow組密碼及其相關屬性 /etc/passwd 1.用戶名: 2.密碼位:x pwconv (默認) 將密碼映射到了/etc/shadow pwunconv 將密碼保存到/etc/pa…

    2017-07-22
  • awk的進階

    前言 awk的中有很多的控制語句,awk也支持if語句,while語句,for語句等等編程邏輯充的控制語句及數組、函數。 awk的進階無非就是多練。 1.控制語句 (1)if-else語句 語句格式: if(condition) {statments}    if  (條件) 條件為真 執行{statments} 只有一個語句可…

    Linux干貨 2016-06-26
  • pxe和dhcp服務——引導安裝操作系統

    BootStraping:系統提供(OS Provision) pxe –> preboot excution environment, Intel cobbler –> Cobbler is a network install server.  Cobbler supports PXE, ISO virtual…

    Linux干貨 2016-11-05
欧美性久久久久