天天看點

Centos 系統引導與相關服務指令

核心組成部分:

核心檔案:/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

繼續閱讀