2021-05-12 14:32:11
Linux入門教學:Linux開機啟動過程淺析
Linux開機啟動過程淺析
Introduction
開機啟動過程分為以下6個步驟,分別是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition
BIOS
按下電源開關那一刻,開始載入BIOS,並且執行MBR(Master Boot Record)
BIOS表示基本輸入輸入系統(Basic Input/Output System),完成一些系統的完整性檢查、搜尋、
載入並且執行載入程式(boot loader), 它在軟碟,CD-ROM或者硬碟上尋找載入程式。你可以在
系統啟動時按下鍵盤(通常是F12或者F2,但是因系統而異)來修改啟動順序
一旦載入程式被檢測到並且載入到記憶體,BIOS會將控制權移交給它
MBR
MBR表示主開機記錄(Master Boot Record)
用於載入並執行GRUB
GRUB
GRUB是多重引導管理器(GRand Unified Bootloader)
執行 /etc/grub.conf, 載入核心映象
vim /etc/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_ddz-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_ddz/lv_root crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_ddz/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.el6.x86_64.img
Kernel
執行核心首個進程 /sbin/init, 進程號為1, 是接下來所有其它進程的父進程
initrd表示Initial RAM Disk
initrd被核心用作臨時的根目錄,直到核心啟動完成並且真正的根目錄掛載成功。
它也包括一些編譯好的必要的驅動程式,這些程式有助於它存取硬碟和其他硬體
Init
執行 /etc/inittab, 來確定啟動級別
vim /etc/intttab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode (終端模式)
# 4 - unused
# 5 - X11(圖形化使用者介面)
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:執行 /etc/rc.d/rc.sysinit, 來啟動系統進程,比如說NetWork
RunLevel
執行啟動級別相對應的一系列系統服務
對應啟動級別的目錄如下
ll /etc/rc.d/
drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc0.d
drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc1.d
drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc2.d
drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc3.d
drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc4.d
drwxr-xr-x. 2 root root 4096 3月 10 17:18 rc5.d
drwxr-xr-x. 2 root root 4096 11月 29 09:49 rc6.d
RunDefinition
最後執行 /etc/rc.d/rc.local, 來執行自定義的服務
vim /etc/rc.d/rc.local
1 #!/bin/sh
2 #
3 # This script will be executed *after* all the other init scripts.
4 # You can put your own initialization stuff in here if you don't
5 # want to do the full Sys V style init stuff.
6
7 touch /var/lock/subsys/local
8 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
9 echo never > /sys/kernel/mm/transparent_hugepage/enabled
10 fi
11 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
12 echo never > /sys/kernel/mm/transparent_hugepage/defrag
13 fi
14
15 /bin/bash /usr/local/apps/kylin/bin/kylin.sh start
其中第15行為自定義啟動指令碼
Final
進入登入介面
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-03/151323.htm
相關文章