Linux啟動流程CentOS6和7的區別


Linux啟動流程    I

1 CentOS6啟動流程    1

1.1 BIOS    1

1.2 MBR    1

1.3 GRUB    1

1.4 kernel(加載內核)    1

1.5 init進程    1

2 CentOS7啟動流程Systemd概述    1

2.1 centos7    1

2.2 systemd    1

 

  1. CentOS6啟動流程

https://linux.cn/article-8807-1.html

  1. BIOS

 

    開機自檢,硬件自檢

  1. 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

  1. 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來引導

  1. kernel(加載內核)

    讀取grub.conf文件以確定內核的參數,准備啟動內核

  1.     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文件

    這里面可以自定義開機啟動的命令。

  1. CentOS7啟動流程Systemd概述

  2.     centos7

    1. 首先BIOS開機自檢
    2. 然后進入啟動菜單
    3. 然后內核進行初始化
    4. 最后啟動初始化進程

       

  3. 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

服務不能被設定開機啟動,但可以由其他服務啟動該服務

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM