1. 程式人生 > >Centos 系統引導與相關服務命令

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

oca back 關機 lag eve mage 功能 ges 等待

內核組成部分:

核心文件:/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

設置主機名,掛栽卷,等操作

啟動時運行一次

6

/etc/inittab

設置運行級別


6

/etc/init/control-alt-delete.conf

設置是否按ctrl+alt+delete重啟

建議註釋

7

/usr/lib/systemd/system/ctrl-alt-del.target

設置是否按ctrl+alt+delete重啟

建議註釋


/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在指定運行級別腳本後運行

? 可以根據情況,進行自定義修改


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