Linux內核
內核概述
如圖,最上面是用戶空間(User Space),是用戶程序執行的地方;用戶空間之下是內核空間(Kernel Space),內核位于此?;诖?,GUN C Library(glibc)提供了連接內核的系統調用接口,還提供了在用戶空間應用程序和內核之間進行轉換的機制,因為內核空間和用戶空間的應用程序使用的是不同的保護地址空間。用戶空間的進程使用的是自己的虛擬地址空間
,而內核則占用單獨的地址空間。
內核的核心功能:
-
系統調用接口(System call interface)
-
程序管理(Process control)
-
內存管理(Memory management)
-
文件系統管理(Filesystem management)
-
設備的驅動(Device drivers)
Linux內核的特點
-
支持模塊化
-
支持模塊的動態裝載和卸載
linux內核的設計原則
單內核體系設計、但充分借鑒了微內核設計體系的優點,為內核引入模塊化機制。
內核的組成部分
核心文件:
/boot/vmlinuz-VERSION-release ramdisk: CentOS 5:/boot/initrd-VERSION-release.img CentOS 6:/boot/initramfs-VERSION-release.img
模塊文件:/lib/modules/VERSION-release/
CentOS 系統啟動流程
POST(Power On Self Test):
檢測系統外圍關鍵設備(如:CPU、內存、顯卡、I/O、鍵盤鼠標等)是否正常。
加載BIOS(Basic Input and Output System):
根據在BIOS中設置的系統啟動順序來搜索用于啟動系統的驅動器(硬盤、光盤、U盤等)。在平時的啟動過程中,大多為硬盤啟動,基于此,BIOS會讀取硬盤的第0磁道的第1扇區(MBR)的內容來引導啟動。
BOOT Sequence:
按次序查找各引導設備,第一個有引導程序的設備即為本次啟動用到設備
MBR(Master Boot Record):
三部分組成,分別是主引導程序(Bootloader)、硬盤分區表DPT(Disk Partition Table)和magic number。
Bootloader:提供一個菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核。
在Linux中常用的主引導程序有LILO(LInux LOader)和GRUB(GRand Uniform Bootloader),此處以GRUB引導為例。
啟動引導程序GRUB:
stage1:stage1的代碼直接存在于MBR,是后續引導的入口,無識別文件系統的能力。
stage1.5: MBR之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統,具有識別文件系統的能力。
stage2:加載磁盤分區(/boot/grub/)
啟動內核:
當stage2被載入內存執行時,首先會解析grub的配置文件/boot/grub/grub.conf,然后加載內核鏡像到內存中,并將控制權轉交給內核。而內核會立即作自身初始化。
-
探測可識別的所有硬件設備
-
加載硬件驅動程序(可能會借助于ramdisk加載驅動)
-
以只讀方式掛載rootfs
-
運行用戶空間的第一個應用程序:/sbin/init
運行init程序
-
CentOS 5:SysV
-
CentOS 6:Upstart
-
CentOS 7:Systemd
設置默認運行級別
-
CentOS 5:/etc/inittab
-
CentOS 6:/etc/inittab,/etc/init/*.conf
-
CentOS 7:default.target–>/usr/lib/systemd/system/*.target
運行系統初始腳本,完成系統初始化
/etc/rc.d/rc.sysinit
啟動內核模塊
/etc/modules.conf
/etc/modules.d/*
關閉對應級別下應關閉的服務,啟動需要啟動的服務
/etc/rc.d/rc#.d/*
執行自定義引導程序
/etc/rc.d/rc.local
設置登陸終端
/sbin/mingetty
原創文章,作者:Jeason,如若轉載,請注明出處:http://www.www58058.com/30369