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 14:54
下一篇 2016-08-23 19:18

相關推薦

  • Linux風水學

    Linux風水學童 有的沒的說一說 說一個,到一個。想起哪個說哪個,說起哪個都不錯。 對于接觸過一點點Linux的風水學童的我來說,還在苦背天地玄黃,宇宙洪荒。雖然不懂是干什么的,但是心里總有個聲音告訴我,這些鬼畫符肯定有用??傆幸惶煳夷艹蔀橐粋€合格的Linux風水師,去某個員外家里施展堪輿之術被奉為上賓。 Linux流派大概   相對于目前的流派…

    2017-07-18
  • iptables實現地址轉換

    NAT:(工作在網絡和傳輸層) 過載技術 Basic NAT:靜態NAT     一個內部主機,分配一個外網地址 NAPT:動態NAT,網絡地址端口轉換;net會話表     源地址轉換:SNAT 用于內網主機訪問互聯網    &…

    Linux干貨 2016-10-31
  • 數據的游戲:冰與火

    我對數據挖掘和機器學習是新手,從去年7月份在Amazon才開始接觸,而且還是因為工作需要被動接觸的,以前都沒有接觸過,做的是需求預測機器學習相關的。后來,到了淘寶后,自己憑興趣主動地做了幾個月的和用戶地址相關數據挖掘上的工作,有一些淺薄的心得。下面這篇文章主要是我做為一個新人僅從事數據方面技術不到10個月的一些心得,也許對你有用,也許很傻,不管怎么樣,歡迎指…

    Linux干貨 2016-08-15
  • 磁盤管理,軟raid,腳本基礎

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs -t ext4 -L MYDATA -m 2 /dev/sdb tune2fs -o acl /dev/sdb (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行…

    Linux干貨 2017-10-25
  • 永遠不要讓自己停下

    曾幾何時,我還是剛出象牙塔的小男孩。想想現在,經過4年的洗禮,我不再是小男孩了。可是,我卻發現自己變得越來越懶,守著那丁點的知識。 我早已坐吃山空而不自知,早已落后于時代的趨勢而不自知。時代需要一個勤奮而專注的我,需要一個不懈怠的我。 如果,我不繼續前進,等待我的只有墮落。逆水行舟不進則退,不逼自己一把,永遠不知道自己的潛力有多大。 我希望說,再見,懈怠而懶…

    Linux干貨 2016-10-07
  • 排錯

    把/etc/inittab  模式改為6模式 怎么修復 1 先把 vim /etc/inittab 打開 2 把/etc/inittab 模式改為6 3 reboot 4 在倒計時完之前按任意鍵 5按A進入 6 在quiet  命令后面寫入 3  模式 重啟 7把 vim /etc/inittab 打開 8 把/etc…

    Linux干貨 2017-05-15
欧美性久久久久