首頁 Linux教程linux啟動過程

linux任務計劃

linux內核管理

運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

CentOS 6 的啟動管理

Linux 組成

  • kernel 實現進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能等功能
  • rootfs 包括程序和 glibc 庫

    ? 程序:二進制執行文件

    ? 庫:函數集合, function, 調用接口(頭文件負責描述)

內核設計流派

  • 宏內核(monolithic kernel):又稱單內核和強內核,Unix,Linux
    把所有系統服務都放到內核里,所有功能集成于同一個程序,分層實現不同功能,系統龐大復雜, Linux其實在單內核內核實現了模塊化,也就相當于吸收了微內核的優點
  • 微內核(micro kernel):Windows,Solaris,HarmonyOS
    簡化內核功能,在內核之外的用戶態盡可能多地實現系統服務,同時加入相互之間的安全保護,每種功能使用一個單獨子系統實現,將內核功能移到用戶空間,性能差

1.3 CentOS 6啟動流程

CentOS 6 啟動流程

linux啟動過程插圖

  1. 加載BIOS的硬件信息,獲取第一個啟動設備
  2. 讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
  3. 加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備
  4. 核心執行init程序,并獲取默認的運行信息
  5. init程序執行/etc/rc.d/rc.sysinit文件,重新掛載根文件系統
  6. 啟動核心的外掛模塊
  7. init執行運行的各個批處理文件(scripts)
  8. init執行/etc/rc.d/rc.local
  9. 執行/bin/login程序,等待用戶登錄
  10. 登錄之后開始以Shell控制主機
硬件啟動POST

POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤等硬件情況的檢測

主板的ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等

主板的RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定,按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

bootloader
grub 功能和組成

bootloader: 引導加載器,引導程序

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

Linux的bootloader

  • LILO:LInux LOader
  • GRUB: GRand Unified Bootloader, CentOS 6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB 2.02

GRUB 啟動階段

  • primary boot loader :

    1st stage:MBR的前446個字節)

    1.5 stage: mbr 之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統

  • secondary boot loader :2nd stage,分區文件/boot/grub/
CentOS 6 grub 安裝

安裝grub:

(1) grub-install 安裝grub stage1和stage1_5到/dev/DISK磁盤上,并復制GRUB相關文件到 DIR/boot目錄下

grub-install --root-directory=DIR /dev/DISK
(2) grub
grub> root (hd#,#)
grub> setup (hd#)
grub legacy 管理

配置文件:/boot/grub/grub.conf ramfs 提高速度
CentOS 5 /boot/initrd-VERSION-release.img
CentOS 6 以后版本 /boot/initramfs-VERSION-release.img

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

    ramdisk文件的制作:

  • mkinitrd命令
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
  • dracut命令
dracut /boot/initramfs-$(uname -r).img $(uname -r) 
init初始化

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

init程序的類型:

SysV: init, CentOS 5之前
配置文件:/etc/inittab
Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf
Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system
/etc/systemd/system

運行級別

運行級別:為系統運行或維護等目的而設定;0-6:7個級別,一般使用3, 5做為默認級別

0:關機
1:單用戶模式(root自動登錄), single, 維護模式
2:多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別
5:多用戶模式,正常模式;圖形界面
6:重啟

切換級別:

init #

查看級別:

runlevel 
who -r

定義運行級別

/etc/inittab

CentOS 5 的inittab文件還定義以下內容

初始運行級別(RUN LEVEL)
系統初始化腳本
對應運行級別的腳本目錄
捕獲某個關鍵字順序
定義UPS電源終端/恢復腳本
在虛擬控制臺生成getty
在運行級別5初始化X

CentOS 5 的inittab文件每一行格式:

id:runlevel:action:process

id:是惟一標識該項的字符序列
runlevels: 定義了操作所使用的運行級別
action: 指定了要執行的特定操作
         wait: 切換至此級別運行一次
         respawn:此process終止,就重新啟動之
         initdefault:設定默認運行級別;process省略
         sysinit:設定系統初始化方式
process:定義了要執行的進程

范例:CentOS 5 的inittab文件

id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down”
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled”
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

CentOS 6 /etc/inittab和相關文件

CentOS 6 init程序為 upstart, 其配置文件/etc/inittab, /etc/init/*.conf,配置文件的語法 遵循 upstart配置文件語法格式,和CentOS5不同

/etc/inittab 設置系統默認的運行級別
/etc/init/control-alt-delete.conf
/etc/init/tty.conf
/etc/init/start-ttys.conf
/etc/init/rc.conf
/etc/init/prefdm.conf
初始化腳本 sysinit

/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)清理操作
服務管理

service 命令:手動管理服務

service 服務 start|stop|restart
service --status-all

/etc/rc.d/rc 控制服務腳本的開機自動運行

for srv in /etc/rc.d/rcN.d/K*; do
    $srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
    $srv start
done

說明:rc N –> 意味著讀取/etc/rc.d/rcN.d/
K: K##:##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務
S: S##:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務

配置服務開機啟動

  • chkconfig命令
  • ntsysv命令

chkconfig 命令管理服務

#查看服務在所有級別的啟動或關閉設定情形:
chkconfig [--list] [name]

#添加服務
SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)
#!/bin/bash
chkconfig: LLLL nn nn  #LLLL 表示初始在哪個級別下啟動,-表示都不啟動
description : 描述信息

chkconfig --add name

#刪除服務
chkconfig --del name

#修改指定的運行級別
chkconfig [--level levels] name <on|off|reset>
說明:--level LLLL: 指定要設置的級別;省略時表示2345

范例:

[root@centos6 ~]#vim /etc/init.d/testsrv 
[root@centos6 ~]#cat  /etc/init.d/testsrv 
#!/bin/bash
#chkconfig: - 96 3
#description: test serivce script

. /etc/init.d/functions
start(){
        touch /var/lock/subsys/testsrv
    action "Starting testsrv"
    sleep 3
}
stop() {
       rm -f /var/lock/subsys/testsrv
       action "Shutting down testsrv"
}
restart(){
    stop
    start
}
status(){
    if [ -e /var/lock/subsys/testsrv ] ;then
        echo  "testsrv is running..."
    else 
            echo "testsrv is stopped"
        fi
} 

case $1 in 
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
status)
    status
    ;;
*)
    echo "Usage: /etc/init.d/testsrv {start|stop|restart|status}"
    ;;
esac
[root@centos6 ~]#chmod +x  /etc/init.d/testsrv 
[root@centos6 ~]#chkconfig --add testsrv
[root@centos6 ~]#chkconfig --list testsrv
testsrv         0:off   1:off   2:off   3:off   4:off   5:off   6:off
非獨立服務

服務分為獨立服務和非獨立服務

瞬態(Transient)服務被超級守護進程 xinetd 進程所管理,也稱為非獨立服務

進入的請求首先被xinetd代理

配置文件:

/etc/xinetd.conf
/etc/xinetd.d/<service>

用chkconfig控制非獨立服務開機啟動
示例:chkconfig tftp on

開機啟動文件 rc.local

/etc/rc.d/rc.local

注意:正常級別下,最后啟動一個服務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在指定運行級別腳本后運行

CentOS 啟動過程總結

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

參看:http://s4.51cto.com/wyfs02/M02/87/20/wKiom1fVBELjXsvaAAUkuL83t2Q304.jpg

linux啟動過程插圖1

本文鏈接:http://www.thecarconnectin.com/33942.html

linux任務計劃

linux內核管理

網友評論comments

發表回復

您的電子郵箱地址不會被公開。

暫無評論

Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
掃二維碼
掃二維碼
返回頂部
国产曰批视频免费观看完|久久久一本精品99久久精品66直播|色天使色偷偷AV一区二区三区|国产色秀视频在线播放|亚洲欧洲免费三级网站