核心組成部分:
核心檔案:/boot/vmlinuz-VERSION-release
ramdisk:輔助的僞根系統
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
initramfs-2.6.32-696.el6.x86_64.img
initramfs-3.10.0-693.el7.x86_64.img
子產品檔案:/lib/modules/VERSION-release
啟動流程
1.加載BIOS的硬體資訊,擷取第一個啟動裝置
2.讀取第一個啟動裝置MBR的引導加載程式(grub)的啟動資訊
3.加載核心作業系統的核心資訊,核心開始解壓縮,并嘗試驅動所有的硬體裝置
4.核心執行init程式,并擷取預設的運作資訊
5.init程式執行/etc/rc.d/rc.sysinit檔案
6.啟動核心的外挂子產品
7.init執行運作的各個批處理檔案(scripts)
8.init執行/etc/rc.d/rc.local
9.執行/bin/login程式,等待使用者登入
10.登入之後開始以Shell控制主機
Grub
grub的代碼分三個階段被加載.
grub stage 1
存在啟動硬碟的0柱面,0磁道,第一個扇區中,即MBR中,MBR的前446個位元組為以引導代碼,
也就是grub stage 1,所謂的stage1 ,作用隻有一個,就是找到grubstage1.5,然後将其加載的
到記憶體。
grub stage 1.5
它的作用就是用來識别常見的不同類型的檔案系統,進而找到"/boot目錄所在的分區"對應的檔案
系統的驅動,驅動多大、存在于哪些扇區中,這些都是在安裝作業系統的時候根據使用者的設定自
動生成的,我們有了"/boot目錄所在分區"的檔案系統驅動,那麼/boot/grub/stage2這樣的比較
大的檔案可以直接操作了。
grub stage 2
grub真正的核心程式,能讓使用者以菜單方式将作業系統加載、新增參數、修改選項,這些全都是
stage2的功用, 前面的grub stage 1和grub stage 1.5所做的事情就是為了運作grub stage 2
然後由stage 2借助grub.conf再去引導系統啟動。
Grub.conf檔案格式
default=0
timeout=1
其中default=0表示有多個grub引導菜單時,選擇哪一個作為預設啟動引導菜單,
也就是說,當有多個title時,預設選擇哪個title中的配置作為預設引導配置,
default=0表示預設使用第一個title菜單中的配置。
其中timeout=1表示如果5秒以内,使用者沒有選擇任何一個title,
則使用default中指定的title菜單中
的配置進行引導。
root (hd0,0)
root (hd0,0)表示kernel檔案和initrd檔案所在分區,而不是指"根分區"。
一般指的是/boot
(hd0,0)表示第一塊硬碟的第一個分區,也就是我們正在使用的/dev/sda1
splashimage=(hd0,0)/grub/splash.xpm.gz
引導時的背景圖檔,此項不建議設定,
因為如果此項配置的背景圖檔并不存在,
那麼在引導時會出現
錯誤
password
啟動菜單編輯認證
hiddenmenu
在系統啟動時,隐藏所有title菜單,并不讓使用者直接看到啟動菜單,如果使用者不做任何幹預,則默
認啟動default所指定的title
title
系統引導菜單顯示的内容,
可以了解為一個grub引導的配置清單,可以存在多個title,
也就是說可以用不同的配置去引導系統,title下面配置項都屬于目前title
kernel
/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=建議寫UUID
告訴grub核心檔案在哪,這裡的root指的是真正的/分區
這裡可以接上啟動時的核心參數
initrd
/initramfs-2.6.32-696.el6.x86_64.img
告訴grub initramfs檔案在哪,這個檔案裡面是包含了1.5階段核心所需要尋找的驅動
kernel:
自身初始化:
探測可識别到的所有硬體裝置
加載硬體驅動程式(借助于ramdisk加載驅動)
以隻讀方式挂載根檔案系統
運作使用者空間的第一個應用程式:/sbin/init
init程式的類型:
SysV: init, CentOS 5之前
配置檔案:/etc/inittab
Upstart: init,CentOS 6
配置檔案:/etc/inittab, /etc/init/*.conf
Systemd:systemd, CentOS 7
配置檔案:/usr/lib/systemd/system
/etc/systemd/system
運作級别
/sbin/init CentOS6之前
行級别:為系統運作或維護等目的而設定;0-6:7個級别
0:關機
1:單使用者模式(root自動登入), single, 維護模式
2: 多使用者模式,啟動網絡功能,但不會啟動NFS;維護模式
3:多使用者模式,正常模式;文本界面
4:預留級别;可同3級别
5:多使用者模式,正常模式;圖形界面
6:重新開機
切換級别:init 數字
檢視級别:runlevel ; who -r
修改運作級别:
/etc/inittab的這一行,id:3:initdefault:
centos 7 檢視與設定運作級别
# systemctl get-default
systemctl set-default 這裡寫下面2條中的一條
runlevel 3級别:multi-user.target
runlevel 5級别:graphical.target
在引導菜單中中切換運作模式
開機按ESC鍵引導至此畫面,按a
修改為0-6之間的數字,回車即可。
修改此檔案中/etc/inittab的這一行才能儲存下來
id:3:initdefault:
常用系統加載時的配置檔案
版本
配置檔案
作用
運作時間
6
/etc/rc.d/rc.sysinit
設定主機名,挂栽卷,等操作
啟動時運作一次
/etc/inittab
設定運作級别
/etc/init/control-alt-delete.conf
設定是否按ctrl+alt+delete重新開機
建議注釋
7
/usr/lib/systemd/system/ctrl-alt-del.target
/etc/rc.d/rc.sysinit: 系統初始化腳本
(1) 設定主機名
(2) 設定歡迎資訊
(3) 激活udev和selinux
(4) 挂載/etc/fstab檔案中定義的檔案系統
(5) 檢測根檔案系統,并以讀寫方式重新挂載根檔案系統
(6) 設定系統時鐘
(7) 激活swap裝置
(8) 根據/etc/sysctl.conf檔案設定核心參數
(9) 激活lvm及software raid裝置
(10) 加載額外裝置的驅動程式
(11) 清理操作
chkconfig指令
檢視服務在所有級别的啟動或關閉設定情形:
chkconfig [--list] [name]
添加:
SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name
#!/bin/bash
#LLLL 表示初始在哪個級别下啟動,- 表示都不啟動
# chkconfig: LLLL nn mm
删除:
chkconfig --del name
修改指定的連結類型
chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要設定的級别;省略時表示2345
ntsysv指令
服務腳本中,以下這一行是必須的。
# chkconfig: 2345 10 90
2345 > 指定運作級别
190 > 指定關閉順序
rc N --> 意味着讀取/etc/rc.d/rcN.d/
K*: K##*:##運作次序;數字越小,越先運作;數字越小的服務,通常為依賴到别的服務
S*: S##*:##運作次序;數字越小,越先運作;數字越小的服務,通常為被依賴到的服務
xinetd管理的服務
service 指令:手動管理服務
service 服務 start|stop|restart
service --status-all
瞬态(Transient)服務被xinetd程序所管理進入的請求首先被xinetd代理
配置檔案:/etc/xinetd.conf、 /etc/xinetd.d/<service>
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
與libwrap.so檔案連結
用chkconfig控制的服務:
# chkconfig tftp on
注意:正常級别下,最後啟動一個服務S99local沒有連結至/etc/rc.d/init.d一個服務腳本,而是指向了
/etc/rc.d/rc.local腳本
不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運作的指令,可直接放置于
/etc/rc.d/rc.local檔案中
• /etc/rc.d/rc.local在指定運作級别腳本後運作
• 可以根據情況,進行自定義修改
本文轉自 ljpwinxp 51CTO部落格,原文連結:http://blog.51cto.com/191226139/2058878