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文件格式
? 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:
常用系統加載時的配置文件
/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 系統引導與相關服務命令