馬哥linux筆記 CentOS系統啟動流程

2021-09-26 12:04:13 字數 4174 閱讀 5300

linux系統的組成部分:核心+根檔案系統、網路協議棧,檔案系統、驅動程式、安全功能

核心:程序管理、記憶體管理,

ipc:inte process communication:

訊息度列、semerphor、shm、socket;

執行中的系統環境可分為兩層:核心空間、使用者空間

使用者空間:應用程式(程序或執行緒)

核心空間:核心**(系統呼叫)

核心設計流派

單核心設計:把所有功能整合於同乙個程式;

微核心設計:每種功能通過乙個單獨的子系統實現;

centos系統的啟動流程(pc架構):
1、post:自動檢查各種硬體裝置是否完善

通過晶元rom:cmos

bios:basic input and output system

2、boot sequence(bios硬體上):按次序查詢各個引導裝置,第乙個有引導程式的裝置即為很次啟動要用到的裝置

bootloader:引導載入器,是乙個安裝在硬碟上或者光碟上甚至優盤上的乙個引導程式

windows的引導載入器:ntloader;

linux:

lilo:linux loader(早期)(手機上用的很多)

grub:grand uniform bootloader

版本:grub 0.x:又叫做grub legacy

grub 1.x:又叫做:grub2

功能:提供乙個介面,允許使用者選擇要啟動的系統或不同的核心版本;把選定的核心裝載到記憶體中的特定空間,解壓,展開,然後把系統控制權移交給核心

mbr:master boot record

共512位元組:

446bytes:bootloader

64bytes:fat

2bytes:

grub:

bootloader:第一階段

partition:檔案系統驅動,filesysterm driver,第一點五階段

partition:/boot/grub,第二階段

載入核心kernel:

自身初始化:

探測可識別到的所有硬體裝置;

載入硬體驅動程式(有可能會借助於randisk載入驅動);

以唯讀方式掛載根檔案系統(唯讀方式防止核心存在問題將檔案系統破壞);

執行使用者空間第乙個應用程式/sbin/init

init程式的型別

centos 5:sysv init

配置檔案:/etc/inittab/

centos 6:upstart

配置檔案:/etc/inittab,/etc/init/*.conf

centos 7:systemd

配置檔案:/usr/liib//systemd/system/,etc/systemd/system/

ramdisk:幫助核心掛載檔案系統(把記憶體當作硬碟)

linux核心的特性之一:使用緩衝和快取來加速對磁碟上檔案的訪問;

為了防止在記憶體上進行二次快取

ramdisk-->ramfs

centos 5:initrd

工具程式:mkinitrd

centos 6,7:initramfs

工具程式:dracut,mkinitrd

系統初始化流程(核心級別):
post-->bootsequence(bios)-->booloader(mbr)-->kerenl(ramdisk)-->rootfs(readonly)-->/sbin/init()
centos 5(啟動流程):sysv init

執行級別:系統的執行或維護等目的而設定的一種機制;

0-6:七個級別

0:關機(shutdown)

1:單使用者模式(single user),root使用者,無需認證;維護模式;

2:多使用者模式(multi user);會啟動網路功能,但不會啟動nfs;仍然是維護模式

3:多使用者模式(multi user)完全功能模式;文字介面

4:預留級別:目前無特別使用目的,但習慣以同**別功能使用

5:多使用者模式(mulit user)完全功能模式,圖形介面;

6: 重啟模式(reboot);

預設級別:3,5

級別切換:init 級別號

級別檢視:

who -r

runlevel

關機:init 0

配置檔案(centos 5):etc/inittab

每行定義一種操作(action)以及與之對應的process

每行的格式如下:

id:runlevels:action:process

eg:

id:3:initdefault:

預設級別為3

si::sysinit:/etc/rc.d/rc.sysinit

所有級別都會執行這個指令碼

l0:0:wait:/etc/rc.d/rc 0

意味著去啟動或關閉/etc/rc.d/rc3.d/目錄下的服務指令碼所控**務;

k*:要停止的服務:k##*,數字越小越優先關閉,依賴別的服務的服務先關閉

s*:要啟動的服務;s##*,數字越小越先啟動,被依賴的服務先啟動

rc指令碼:接受乙個執行級別數字為引數;

指令碼框架:

for srv in /etc/rc.d/rc#.d/k*;

&srv stop

/etc/init.d/*(/etc/rc.d/init.d/*)指令碼執行方式

#/etc/init.d/srv_script

#/service srv_script

chkconfig命令:
檢視:chkconfig --list 【name】

新增:chkconfig --add name

#!/bin/bash

##chkconfig:lll nn nn

#description:

刪除:chkconfig --del name

chkconfig 【--level levels】 name < on|off|reset

--level levels:指定要控制的級別 預設為2345

注意:正常級別下,最後啟動的乙個服務s99local沒有鏈結至etc/init.d下的某指令碼,而是連線到了/etc/rc.d/rc.local(etc/rc.local)指令碼;因此不便或者不需要謝為服務指令碼的程式期望能開機自行執行時,直接放至此指令碼檔案中即可,

系統初始化指令碼:/etcrc.d/rc.sysinit

(1)設定主機名

(2)設定歡迎資訊

(3)啟用udev和selinux

(4)掛載/etc/fstab檔案中定義的所有檔案系統

(5)檢測根檔案按系統,並且以讀寫方式重新掛載根檔案系統;

(6)設定系統時鐘

(7)根據/etc/sysctl.conf檔案來設定核心引數

(8)啟用lvm及軟raid裝置

(9)啟用swap裝置;

(10)載入額外裝置的驅動程式;

(11)清理操作;

總結(使用者空間的啟動流程):/sbin/init(/etc/inittab)
設定預設執行級別-->執行系統初始化指令碼,完成系統初始化-->關閉對應級別下需要停止的服務,啟用對應級別下需要開啟的服務-->設定登入終端
centos 6:
init程式為:upstart 但依然為/sbin/init,其配置檔案都在/etc/init/*.conf,為了相容centos5依然會讀取/etc/inittab,但/etc/inittab/僅用於預設執行級別

注意:*.conf為upstart風格的配置檔案;

rcs.conf:系統初始化指令碼

rc.conf:啟動或關閉服務

start-ttys.conf:啟動哪兒些終端

centos 7:與之前版本的服務風格改變很大
init程式:systemd,配置檔案:/etc/user/lib/systemd/system/,/etcsystemd/system/*

完全相容sysv指令碼機制;因此service命令依然可用

#systemctl name[.service]

馬哥Linux學習筆記

作業系統 執行的活動的程式的副本,叫做程序。程序是實現資源分派的單位。作業系統完成程序管理 優先順序識別等。作業系統提供安全功能,保證程序之間不互相干擾。os作用 cpu時間分配 記憶體管理 程序管理 安全功能 驅動硬體 核心自帶或第三方安裝 任何硬體都需要驅動,只不過很多硬體驅動是作業系統內建。作...

馬哥mysql 馬哥學習筆記五 MYSQL初步

1.mysql u username p h mysql server linux socket windows memory 2.互動式模式中的命令類別 客戶端命令 伺服器端命令 必須使用語句結束符,預設為封號 3.關聯式資料庫物件 表索引 檢視約束 儲存過程 儲存函式 觸發器游標 使用者許可權 ...

馬哥Linux學習筆記14 4while迴圈

ifcase 迴圈執行 將某段 重複執行多次 重複執行多少次?迴圈次數事先已知,迴圈次數事先未知,必須有進入條件和退出條件 for,while,until 函式 資料化程式設計及 重用 function for迴圈語法 while迴圈 while condition do 迴圈體done condi...