linux啟動流程

linux組成

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

rootfs:程序和glibc
庫:函數集合, function, 調用接口(頭文件負責描述)
過程調用:procedure,無返回值
函數調用:function
程序:二進制執行文件

內核設計流派:
單內核(monolithic kernel):Linux
把所有功能集成于同一個程序
微內核(micro kernel):Windows, Solaris

Linux內核特點:
支持模塊化:.ko(內核對象)
如:文件系統,硬件驅動,網絡協議等
支持內核模塊的動態裝載和卸載
每種功能使用一個單獨子系統實現

組成部分:
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:輔助的偽根系統
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
模塊文件:/lib/modules/VERSION-release

CentOS6啟動流程

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控制主機

1. POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。
ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。
RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定
按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

bootloader: 引導加載器,引導程序
windows: ntloader,僅是啟動OS
Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
LILO:LInux LOader
GRUB: GRand Unified Bootloader
GRUB 0.X: GRUB Legacy, GRUB2

2.MBR

第一階段

一部分grub文件存放在MBR的前446字節中,用來驅動——bootloader
這一部分的grub驅動無法驅動/boot,因為它的文件類型是ext4,其驅動模塊 etx4.ko的大小為633k

第一點五階段

在MBR中的512字節后續空間中,存在一個1.5階段,來解決ext4.ko的驅動問題,也就說,先通過grub來解決掛載/boot的問題,然后進入下一階段來解決掛載根的問題

第二階段

在第1.5階段加載內核后,進入該階段來掛載根。
? ? ? ? ?ramdisk:
內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問,并加載相應的硬件驅動
ramdisk –> ramfs 提高速度
CentOS 5: initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:mkinitrd, dracut
系統初始化:
POST –> BootSequence (BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只讀) –> init(systemd)
系統啟動流程
? ? ? ? ?1.?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
? ? ? ? ? 2.啟動流程
/sbin/init CentOS6之前 ?
運行級別:為系統運行或維護等目的而設定;0-6:7個級別
0:關機
1:單用戶模式(root自動登錄), single, 維護模式
2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別
5:多用戶模式,正常模式;圖形界面 ——默認開機會進入該模式下,但也可以手動修改
例如將5改成3,那么開機就會自動進入3模式,也就是字符界面模式

6:重啟 ——如果將默認模式改為6,那么開機機會重啟,始終無法進入界面。
修復方案時:在重啟機器時,按a鍵進入修改模式,然后輸入1進入單用戶模式,打開配置文件——/etc/inittab,將默認模式改回5或3模式,然后init3或5重新進入界面
切換級別:init # ——在圖形界面中輸入init 3就會進入字符界面

查看級別:runlevel ; who -r
? ? ? ?3.init初始化
init讀取其初始化文件:/etc/inittab
初始運行級別(RUN LEVEL)
系統初始化腳本
對應運行級別的腳本目錄
捕獲某個關鍵字順序
定義UPS電源終端/恢復腳本
在虛擬控制臺生成getty
在運行級別5初始化X
? ? ? ? ? ? 4. ?CentOS 5的inittab文件
?配置文件:/etc/inittab
每一行定義一種action以及與之對應的process id:runlevel:action:process
id:runlevel:action:process
action:
wait: 切換至此級別運行一次
respawn:此process終止,就重新啟動之
initdefault:設定默認運行級別;process省略
sysinit:設定系統初始化方式,此處一般為指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
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
? ? ? ? ? ? ? ? ?5. ?CentOS 6 /etc/inittab和相關文件
/etc/inittab
設置系統默認的運行級別
id:3:initdefault:
示例:
破解CentOS5和6的root口令
/etc/init/control-alt-delete.conf
/etc/init/tty.conf
/etc/init/start-ttys.conf
/etc/init/rc.conf
/etc/init/prefdm.conf
或者重啟機器,在開機界面進入單用戶模式,就可以直接進入界面,相當于破解了root密碼,登陸后可以通過passwd直接修改新的密碼,破解了原來的root密碼,這種方法無法通過遠程來實現
? ? ? ? ? ? 6. ?啟動流程順序
/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) 清理操作
? ? ?說明:rc N –> 意味著讀取/etc/rc.d/rcN.d/
K*: K##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務
S*: S##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務
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

? ? ? ?7. ?chkconfig命令

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

添加:
SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig –add name
#!/bin/bash
#LLLL 表示初始在哪個級別下啟動,-表示都不啟動
# chkconfig: LLLL nn nn
刪除:
chkconfig –del name
修改指定的鏈接類型
chkconfig [–level levels] name <on|off|reset>
–level LLLL: 指定要設置的級別;省略時表示2345
ntsysv命令
? ? ? ?8.xinetd服務
service 命令:手動管理服務
service 服務 start|stop|restart
service –status-all
瞬態(Transient)服務被xinetd進程所管理
進入的請求首先被xinetd代理
配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>
與libwrap.so文件鏈接
用chkconfig控制的服務:
chkconfig tftp on
注意:正常級別下,最后啟動一個服務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在指定運行級別腳本后運行
可以根據情況,進行自定義修改

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90694

(0)
曲吉福曲吉福
上一篇 2018-01-01
下一篇 2018-01-01

相關推薦

  • redis主從復制(3)— 復制超時

    1、repl-timeout前兩篇[1]關于redis主從復制的文章解釋了一些因為slave replication buffer或者replication backlog參數的錯誤配置(或者默認參數值)導致主從復制中斷的現象。redis里面的repl-timeout參數值也太小也將會導致復制不成功。top redis headaches for devop…

    Linux干貨 2016-04-05
  • 利用varnish構建httpd緩存服務器

    varnish如何存儲緩存對象:     file: 單個文件;不支持持久機制;     malloc: 緩存在內存中;     persistent:基于文件的持久存儲;(此方式不建議使用) vcl:配置緩存系統的緩存機制;【線程中緩存功…

    Linux干貨 2016-06-20
  • Linux文件系統的創建、檢測、修復、分區等工具的使用

    一、文件系統管理 什么是文件系統?     我的理解是文件系統是對磁盤上的數據和文件結構的管理規范。     如果文件系統沒有繼承性,那么以前文件系統的數據就無法傳到新的文件系統中。     Linux的文件系統有這么幾種:ext2, ex…

    系統運維 2016-03-03
  • 蕭田國給你五個2017GOPS北京站的參會理由!

    2017年7月28日,GOPS全球運維大會即將開幕,發起人蕭田國將在主會場發表題為《運維如何延續自己的職業生涯》演講,參加第七屆北京站您會有哪些收益? 收益一: 【長達半天時間的培訓式演講】讓您系統性掌握頂級互聯網自動化運維體系 收益二: 【騰訊智能運維】傳奇背后的細節,聽了才知道 收益三: 與Facebook、Twitter、BATJ等運維大咖【面對面深度…

    Linux干貨 2017-07-24
  • Linux磁盤分區創建及bash 簡單應用

    1、創建一個10G分區,并格式為ext4文件系統; (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl; (2)掛載至/data/mydata目錄,要求掛載是禁止程序自動運行,并且更新文件的訪問時間戳; [root@danry ~]# fdisk /dev/sdb Welcome to fdisk (util…

    2017-09-11
  • Linux文件查找命令find和壓縮解壓縮

    概述     Linux系統上一切皆文件,那么隨著時間的推移和管理的服務器增加,在眾多的文件中,如何找到我們需要的文件,這就需要用到文件查找命令了。本章就分享下關于文件查找命令的一些內容和壓縮解壓縮的相關內容。     具體分為一下幾個部分:    …

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