目 錄
CentOS6啟動流程
https://linux.cn/article-8807-1.html
BIOS
開機自檢,硬件自檢
MBR
MBR磁盤分區是一種使用最為廣泛的分區結構,它也被稱為DOS分區結構,但它並不僅僅應用於 Windows系統平台,也應用於Linux,基於X86的UNIX等系統平台。它位於磁盤的0號扇區(一扇 區等於512字節),是一個重要的扇區(簡稱MBR扇區)。
1、MBR只支持2TB的硬盤
1、只支持4個主分區
MBR:(master boot loade)主引導記錄 446B
DPT:(disk partition table)磁盤分區表 64B
Magic:魔術字55AA 2B
磁盤扇區:0-0-1扇區 引導扇區
磁盤有三個邏輯概念:磁道,柱面,扇區,512B
GRUB
1、grub第1.5和2階段,信息默認存放在扇區中,如果使用grub-install生成的2階段的文件是存放在/boot分區中的。
2、為了加載內核系統,不得不加載/boot分區,而加載/boot分區,需要有/boot分區的驅動,/boot分區驅動是放在/boot分區中 的,啊,我們好像進入了死循環了,Linux是怎么解決的呢?就是靠放在1.5階段中的數據,是放在第一個扇區后的后續扇 區 中,具體占用多少字節,不太清楚,只知道1.5階段和2階段總共27個扇區。
3、stage1.5:
mbr之后的扇區,識別stage2所在的分區上的文件系統
4、stage2:
開機啟動的時候看到的Grub選項、信息,還有修改GRUB背景等功能都是stage2提供的,stage2會去讀入 /boot/grub/grub.conf 或者menu.lst等配置文件
操作系統引導菜單
windows:msconfig
linux:GRUB
注意:windows和linux雙系統的時候,默認GRUB來引導
kernel(加載內核)
讀取grub.conf文件以確定內核的參數,准備啟動內核
init進程
1、讀取/etc/inittab文件
inittab文件里面定義了系統默認運行級別,這一步做了一些工作如下:
a)初始運行級別(RUN LEVEL)
b)系統初始化腳本
c)對應運行級別的腳本目錄
d)定義UPS電源終端/恢復腳本
e)在虛擬控制台生成getty,以生成終端
f)在運行級別5初始化X
2、執行/etc/rc.d/rc.sysinit程序
系統初始化一些腳本,主要完成以下工作
a)設置主機名
b)設置歡迎信息
c)激活udev和selinux可以在grub.conf中,kernel行添加selinux=0以關閉selinux
d)掛載/etc/fstab文件中定義的文件系統
e)檢測根文件系統,並以讀寫方式重新掛載根文件系統
f)設置系統時鍾
g)激活swap設備
h)根據/etc/sysctl.conf文件設置內核參數
i)激活lvm及software raid設備
j)加載額外設備的驅動程序
k)清理操作
3、/etc/rc#.d/文件(各種服務)
里面定義的是各種服務的啟動腳本,可以ls查看,S開頭代表開機啟動的服務,K開頭的是關機要執行的任務。#代表數字, 一個數字代表一個運行級別,共7個運行級別,這里就不多說了
4、/etc/rc.d/rc.local文件
這里面可以自定義開機啟動的命令。
CentOS7啟動流程Systemd概述
centos7
- 首先BIOS開機自檢
- 然后進入啟動菜單
- 然后內核進行初始化
-
最后啟動初始化進程
systemd
初始化進程作為Linux系統的第一個進程,它需要完成Linux系統中相關的初始化工作,為用戶提供合適的工作環境。RHEL/CentOS 7系統已經替換掉了熟悉的初始化進程服務System V init正式采用全新的systemd初始化進程服務。如果您之前學習的是RHEL/CentOS 6系統,可能會不習慣。systemd初始化進程服務采用了並發啟動機制,開機速度得到了不小的提升。
CentOS6系統, 管理員可以使用如下指令來管理服務器的啟動與停止
//關機相關命令
shutdown -h now //立即關機,常用
init 0 //切換系統關機級別,容易理解
//重啟相關命令
reboot //重啟命令,常用
init 6 //切換系統重啟級別,容易理解
CentOS7系統, 管理員可以使用systemctl命令來管理服務器啟動與停止
//關機相關命令
systemctl poweroff //立即關機,常用
//重啟相關命令
systemctl reboot //重啟命令,常用
Systemd目標名稱
無論如何, RHEL/CentOS 7已經沒有了"運行級別"這個概念,Linux系統在啟動時要進行大量的初始化工作,比如掛載文件系統和交換分區、啟動各類進程服務等,這些都可以看作是一個一個的單元Unit, systemd用目標target代替了System V init中運行級別的概念,這兩者的區別如下所示
System V init運行級別 |
systemd目標名稱 |
作用 |
0 |
runlevel0.target, poweroff.target |
關機 |
1 |
runlevel1.target, rescue.target |
單用戶模式 |
2 |
runlevel2.target, multi-user.target |
|
3 |
runlevel3.target, multi-user.target |
多用戶的文本界面 |
4 |
runlevel4.target, multi-user.target |
|
5 |
runlevel5.target, graphical.target |
多用戶的圖形界面 |
6 |
runlevel6.target, reboot.target |
重啟 |
emergency |
emergency.target |
救援(急救)模式 |
RHEL/CentOS6系統運行級別管理
//查看運行級別
[root@student ~]# runlevel
N 3 //如果N是其他數字,代表上一次運行級別
//切換運行級別
[root@student ~]# init 3
//永久修改配置文件
[root@student ~]# /etc/inittab
RHEL/CentOS7系統目標管理
//查看系統默認啟動運行級別
[root@student ~]# systemctl get-default
//查看系統有哪些target
[root@oldboy ~]# ls /lib/systemd/system/*.target
/lib/systemd/system/basic.target /lib/systemd/system/poweroff.target
……
//修改默認啟動運行級別(永久生效)
[root@student ~]# systemctl set-default TARGET.target
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
systemd服務管理
由於之前長期使用RHEL/CentOS 6系統, 已經習慣使用service chkconfig等命令來管理系統服務,但在RHEL/CentOS 7系統中是使用systemctl命令來管理服務的。
如下是RHEL/CentOS 6系統中System V init命令與RHEL/CentOS 7系統中systemctl命令的對比,后續課程中會經常用到它們。
systemctl管理服務的啟動、重啟、停止、重載、查看狀態等常用命令
System V init(6系統) |
systemctl命令(7系統) |
作用 |
service NAME start |
systemctl start NAME.service |
啟動服務 |
service NAME stop |
systemctl stop NAME.service |
停止服務 |
service NAME restart |
systemctl restart NAME.service |
重啟服務 |
service NAME reload |
systemctl reload NAME.service |
重新加載配置(不終止服務) |
service NAME status |
systemctl status NAME.servre 查 |
看服務運行狀態 |
systemctl is-active sshd.service |
查看服務是否在運行中 |
|
systemctl mask NAME.servre |
禁止服務運行 |
|
systemctl unmask NAME.servre |
取消禁止服務運行 |
systemctl設置服務開機啟動、不啟動、查看各級別下服務啟動狀態等常用命令
System V init(6系統) |
systemctl命令(7系統) |
作用 |
chkconfig NAME on |
systemctl enable NAME.service |
開機自動啟動 |
chkconfig NAME off |
systemctl disable NAME.service |
開機不自動啟動 |
chkconfig –list |
systemctl list-unit-files |
查看各個級別下服務的啟動與禁用 |
chkconfig –list NAME |
systemctl is-enabled NAME.service |
查看特定服務是否為開機自啟動 |
chkconfig–add NAME |
systemctl daemon-reload |
創建新服務文件或者變更設置 |
systemctl服務狀態說明
服務狀態 |
狀態說明 |
loaded |
服務單元的配置文件已經被處理 |
active(running) |
服務的一個或多個進程在運行中 |
active(exited) |
一次性運行的服務成功被執行並退出(服務運行后完成任務,相關進程會自動退出) |
active(waiting) |
服務已經運行但在等待某個事件 |
inactive |
服務沒有在運行 |
enabled |
服務設定為開機運行 |
disabled |
服務設定為開機不運行 |
static |
服務不能被設定開機啟動,但可以由其他服務啟動該服務 |
