CentOS 5和6的啟動流程

Linux: kernel+rootfs 

kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能

rootfs:

glibc

庫:函數集合, function, 調用接口

過程調用:procedure

函數調用:function

程序 

內核設計流派:

單內核設計:Linux

把所有功能集成于同一個程序;

微內核設計:Windows, Solaris

每種功能使用一個單獨子系統實現; 

Linux內核特點:

支持模塊化:.ko

支持模塊的動態裝載和卸載; 

組成部分:

核心文件:/boot/vmlinuz-VERSION-release

例一:內核的核心文件

[root@localhost lib]# ls /boot/
vmlinuz-3.10.0-514.el7.x86_64

ramdisk

CentOS 5: /boot/initrd-VERSION-release.img

CentOS 6: /boot/initramfs-VERSION-release.img

模塊文件:/lib/modules/VERSION-release

例一:查看模塊文件

[root@localhost lib]# ls /lib/modules/3.10.0-514.el7.x86_64/
build              modules.block        modules.devname      modules.softdep      vdso
extra              modules.builtin      modules.drm          modules.symbols      weak-updates
kernel             modules.builtin.bin  modules.modesetting  modules.symbols.bin
modules.alias      modules.dep          modules.networking   source
modules.alias.bin  modules.dep.bin      modules.order        updates 

CentOS 系統啟動流程: 

POST:加電自檢;

ROMCMOS

BIOSBasic Input and Output System

ROM+RAM

BOOT Sequence:

按次序查找各引導設備,第一個有引導程序的設備即為本次啟動用到設備;

bootloader: 引導加載器,程序

windows: ntloader

Linux

LILOLInux LOader

GRUB: GRand Uniform Bootloader

GRUB 0.X: GRUB Legacy

GRUB 1.x: GRUB2 

功能:提供一個菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核; 

MBR:

446: bootloader

64: fat

2: 55AA 

GRUB:

bootloader: 1st stage

disk: 2nd stage 

kernel

自身初始化:

探測可識別到的所有硬件設備;

加載硬件驅動程序;(有可能會借助于ramdisk加載驅動)

以只讀方式掛載根文件系統;

運行用戶空間的第一個應用程序:/sbin/init 

init程序的類型:

SysV: init, CentOS 5

配置文件:/etc/inittab 

Upstart: init, CentOS 6

配置文件:/etc/inittab, /etc/init/*.conf 

Systemdsystemd, CentOS 7

配置文件:/usr/lib/systemd/system, /etc/systemd/system

例一:centos7 init內核配置文件

[root@localhost ~]# ls /etc/systemd/system
basic.target.wants                                       display-manager.service
bluetooth.target.wants                                   getty.target.wants

例二:centos7 init內核配置文件

[root@localhost ~]# ls /usr/lib/systemd/system
abrt-ccpp.service                        paths.target
abrtd.service                            plymouth-halt.service 

ramdisk 

內核中的特性之一:使用緩沖和緩存來回事對磁盤上的文件訪問; 

ramdisk –> ramfs 

CentOS 5: initrd,  工具程序:mkinitrd

CentOS 6: initramfs, 工具程序:mkinitrd, dracut 

系統初始化:

POST –> BootSequence (BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只讀) –> init 

/sbin/init 

CentOS 5: 

運行級別:為了系統的運行或維護等應用目的而設定; 

0-67個級別

0:關機

1:單用戶模式(root, 無須登錄), single, 維護模式;

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

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

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

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

6:重啟 

默認級別:

3, 5 

切換級別:

init #

查看級別:

runlevel

who -r 

配置文件:/etc/inittab

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

id:runlevel:action:process

action:

wait: 切換至此級別運行一次;

respawn:此process終止,就重新啟動之;

initdefault:設定默認運行級別;process省略;

sysinit:設定系統初始化方式,此處一般為指定/etc/rc.d/rc.sysinit;

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 

說明:rc 0 –> 意味著讀取/etc/rc.d/rc0.d/

K*: K##*##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務;

S*: S##*##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務;

for srv in /etc/rc.d/rc0.d/K*; do

$srv stop

done 

for srv in /etc/rc.d/rc0.d/S*; do

$srv start

done 

chkconfig命令

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

chkconfig [–list] [name]

例一:查看所有服務 

[root@localhost ~]# chkconfig --list 

例二:更改服務權限

[root@localhost ~]# chkconfig --level 3 network off

添加:

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

chkconfig –add name 

#!/bin/bash

#

# chkconfig: LLLL nn nn 

刪除:

chkconfig –del name 

修改指定的鏈接類型

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

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

注意:正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本;因此,不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中; 

tty1:2345:respawn:/usr/sbin/mingetty tty1

tty2:2345:respawn:/usr/sbin/mingetty tty2

tty6:2345:respawn:/usr/sbin/mingetty tty6

 mingetty會調用login程序 

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

(1) 設置主機名;

(2) 設置歡迎信息;

(3) 激活udevselinux;

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

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

(6) 設置系統時鐘;

(7) 激活swap設備;

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

(9) 激活lvmsoftware raid設備;

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

(11) 清理操作;

 總結:/sbin/init –> (/etc/inittab) –> 設置默認運行級別 –> 運行系統初始腳本、完成系統初始化 –> 關閉對應下需要關閉的服務,啟動需要啟動服務 –> 設置登錄終端 

CentOS 6: 

init程序為: upstart, 其配置文件:

/etc/inittab, /etc/init/*.conf 

注意:/etc/init/*.conf文件語法 遵循 upstart配置文件語法格式;

回顧:

CentOS 6啟動流程:

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

 

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

(0)
kangkang
上一篇 2016-08-23
下一篇 2016-08-23

相關推薦

  • 馬哥教育網絡班21期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 [ro…

    Linux干貨 2016-07-29
  • iptables實戰筆記一

    iptables實戰 1.開啟防火墻 systemctl start firewalld 2.清空所有的默認規則,我們自己定義自己的規則 iptables -F 查看此時的iptables iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FOR…

    Linux干貨 2017-06-13
  • 宣言

    我是一個新手  但是我想認真努力學好linux     有朝一日能成為別人眼中的大牛再回頭看看現在 不會后悔  付出必然會有回報  雖千萬人吾往矣!

    Linux干貨 2016-10-24
  • tomcat配置詳解

    主程序: ·tomcat ·tomcat-admin-webapps ·tomcat-webapps ·tomcat-docs-webapp ·java-1.8.0-openjdk 配置文件: 配置文件目錄:/etc/tomcat 主配置文件:server.xml webapps存放位置:/var/lib/tomcat/webapps/ webapps的根目…

    2017-08-08
  • 關于大型網站技術演進的思考(十四)–網站靜態化處理—前后端分離—上(6)

    原文出處: 夏天的森林   前文講到了CSI技術,這就說明網站靜態化技術的講述已經推進到了瀏覽器端了即真正到了web前端的范疇了,而時下web前端技術的前沿之一就是前后端 分離技術了,那么在這里網站靜態化技術和前后端分離技術產生了交集,所以今天我將討論下前后端分離技術,前后端分離技術討論完后,下一篇文章我將會以網站 靜態化技術的…

    Linux干貨 2015-03-03
  • 腳本進階筆記整理

    一、邏輯運算 變量:   本地變量、環境變量、局部變量、位置參數變量、特殊變量   變量賦值:name=value,export name=value,declare -x name=value   變量引用:$name,${name}   注意:有些時候{}不能省略,例如 &n…

    Linux干貨 2017-03-26
欧美性久久久久