引導過程和服務控制
目錄
一、Linux作業系統引導過程
1.1、引導過程總覽
1.2、系統初始化程序
1.3、Systemd單元類型
1.4、運作級别所對應的Systemd目标
二、故障處理小實驗
2.1、修複MBR扇區故障
2.2、修複GRUB引導故障
2.3、遺忘root 使用者密碼
三、Linux系統服務控制
3.1、系統服務控制
四、Linux系統運作級别切換
4.1、檢視運作級别
4.2、臨時切換運作級别
4.3、檢視系統預設級别
4.4、設定臨時運作級别
4.5、設定永久運作級别
五、優化開機自動加載服務
5.1、優化啟動過程
5.2、系統服務的啟動和控制
5.3、指令補充
1、引導過程總覽
開機自檢(BIOS)->MBR引導 ->GRUB菜單 ->加載核心(kernel) ->init程序初始化
1)開機自檢(BIOS)
伺服器主機開機以後,将根據主機闆BIOS中的設定對CPU、記憶體、顯示卡、鍵盤等裝置進行初步檢測,檢測成功後根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬碟
總結:檢測出第一個能夠引導系統的裝置,比如硬碟或者光驅
2)MBR引導
當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中MBR(主引導記錄)的設定,将系統控制權傳遞給包含作業系統引導檔案的分區,或者直接根據MBR記錄中的引導資訊調用啟動菜單(如GRUB)
總結:運作放在MBR扇區裡的啟動GRUB引導程式
3)GRUB菜單
對于Linux作業系統來說,GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程式。系統控制權傳遞給GRUB以後,将會顯示啟動菜單給使用者選擇,并根據所選項(或采用預設值)加載Linux核心檔案,然後将系統控制權移交給核心。
CentOS 7采用的是GRUB2啟動引導器。
總結:GRUB引導程式通過讀取GRUB配置檔案/boot/grub2/grub.cfg,來擷取核心和鏡像檔案系統的設定和路徑位置
4)加載核心(kernel)
Linux核心是一個預先編譯号的特殊二進制檔案,介于各種硬體資源與系統程式之間,負責資源配置設定與排程。核心接過系統控制權以後,将完全掌控整個Linux作業系統的運作過程
CentOS 7系統中,預設的核心檔案位于“/boot/vmlinuz-3.10.0-514.e17.x86_64”
總結:把核心和鏡像檔案系統加載到記憶體中
5)init程序初始化
為了完成進一步的系統引導過程,Linux核心首先将系統中的額“/sbin/init”程式加載到核心中運作(運作中的程式稱為程序),init內建負責完成整個系統的初始化,最後等待使用者進行登入
總結:加載硬體驅動程式,核心把init程序加載到記憶體中運作
2、系統初始化程序
1)init程序
①、由Linux核心加載運作/sin/init程式
②、init程序是系統中第一個程序,是所有程序的父程式
③、init程序的PID(程序标記)号永遠為1
2)systemd
①、systemd是Linux作業系統的一種init軟體
②、CentOS 7中采用全新的Systemd啟動方式,取代傳統的SysVinit
③、CentOS 7中運作的第一個init程序是/lib/systemd/systemd
注:傳統SysVinit依賴于串行執行Shell腳本啟動服務,導緻效率低下,系統啟動速度較慢,systemd能夠将更多的服務程序并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少程序,進而提高系統啟動速度。
3、Systemd單元類型
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNxkjYhFGM4U2YiVjZjJjMllDM4ITO2IWZwQzN2MDZ28CX4IzLcZDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.png)
4、運作級别所對應的Systemd目标
1、修複MBR扇區故障
1)故障原因
①、病毒、木馬等造成的破壞
②、不正确的分區操作、磁盤讀寫誤操作
2)故障現象
①、找不到引導程式,啟動中斷
②、無法加載作業系統,開機後黑屏
3)解決思路
①、應提前做好備份
②、以安裝CD光牒引導進入急救模式
③、從備份檔案中恢複
4)故障模拟及處理過程
MBR位于第一塊硬碟(/dev/sda)的第一個實體扇區處,總共512位元組
①、備份MBR扇區資料到其他磁盤(/dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/edv/sda of=/backup/mbr.bak bs=512 conut=1
②、模拟破壞MR引導扇區
dd if=/dev/zero of=/dev/sda bs=512 count=1
③、應道界面進入急救模式,從備份檔案中國灰階MBR扇區資料
先加載好CD光牒鏡像,重新開機作業系統
當出現安裝向導界面時,選擇“Troubleshooting”選項
再選擇“Rescue a CentOS Linux system”選項,進入急救模式
選擇“1”選擇Continue并按Enter鍵繼續
在此按Enter鍵後将進入帶“sh-4.2#”提示符的Bash Shell環境
sh-4.2# mkdir /backupdir
sh-4.2# mount/dev/sdb1 /backupdir 挂載帶有備份檔案的分區
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda 恢複備份資料
sh-4.2# exit 執行exit指令退出臨時Shell環境,系統将會自動重新開機
2、修複GRUB引導故障
①、MBR中的GRUB引導程式遭到破壞
②、grub.conf檔案丢失、引導配置有誤
系統引導停滞,顯示“grub>”提示符
①、嘗試手動輸入引導指令
②、進入急救模式,重寫或者從備份中恢複grub.conf
③、向MBR扇區中重建grub程式
/boot/grub/目錄下的包是用于啟動菜單的背景圖檔及樣式
/boot/grub2/grub.cfg #GRUB配置檔案
方法一:手動輸入引導指令(笨拙繁瑣,不建議使用)
grub> insmod xfs 加載指定的子產品到核心
grub> linux16 /vmlinuz-3.10.0-693.e17.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quite LANG=zh_CN.UTF-8 核心的名字及位置等資訊
grub> initrd16 /initramfs-3.10.0..693.e17.x86_64.img 鏡像系統檔案
grub> boot 引導boot
方法二:進入急救模式,恢複GRUB引導程式
MBR位于第一塊硬碟(/dev/sda)的第一個實體扇區處,總共512位元組,前446位元組是主引導記錄,分區儲存在MBR扇區中的第447-510位元組中
①、備份資料到其他磁盤中
mkdir /bak
monut /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
②、模拟對MBR中的GRUB引導程式的破壞,但并不破壞分區表
dd if=/dev/zero of=/dev/sda bs=446 count=1
③ 引導界面進入急救模式,從備份檔案中恢複GRUB引導程式
sh-4.2# mkdir /backupdir
sh-4.2# mount/dev/sdb1 /backupdir #挂載帶有備份檔案的分區
sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda #恢複備份資料
sh-4.2# exit #執行exit指令退出臨時Shell環境,系統将會自動重新開機
方法三:引導界面進入急救模式,重建GRUB菜單配置檔案
rm -rf /boot/grub2/grub.cfg
①、進入急救模式,加載CD光牒鏡像,切換到系統根環境
sh-4.2# chroot /mnt/sysimage
②、重新将GRUB引導程式安裝到第一塊硬碟(/sev/sda)的MBR扇區,如果有多個分區可省略
bash-4.2# grub2-install /dev/sda
③、重新建構GRUB菜單的配置檔案
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
④、退出chroot環境,并重新開機
bash-4.2# exit
sh-4.2# reboot
3、遺忘root 使用者密碼
①、遺忘root使用者的密碼
①、無法進行需要root權限的管理操作
②、若沒有其他可用賬号,将無法登陸系統
①、進入急救模式,重設密碼
①、進入急救模式,加載系統鏡像,切換到系統根環境
sh-4.2# chroot /mnt/sysimage
②、重設root使用者密碼
bash-4.2# passwd root
1、系統服務控制
1)格式:systemctl 控制類型 服務名稱
2)控制類型
①、start---啟動
②、stop---停止
③、restart---重新啟動
④、reload---重新加載
⑤、status---檢視服務狀态
1、檢視運作級别
1)runlevel指令:runlevel隻能檢視切換運作級别與目前運作級别
2)systemctl工具
systemctl 時能檢視預設的運作級别
2、臨時切換運作級别
1)init指令
init指令參數是運作級别所對應的的數字
systemctl的指令參數是具體的target
3)init與systemctl對應表
3、檢視系統預設級别
systemctl get-default
4、設定臨時運作級别
1)格式:chkconfig --list [服務名稱]
chkconfig --add 服務名稱
chkconfig --level 級别清單 服務名 on/off
2)例:chkconfig --add httpd
chkconfig --level 35 httpd on
5、設定永久運作級别
1) ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2) systemctl set-default multi-user.target
1、優化啟動過程
1)ntsysv工具
①、提供一個交換式、可視化視窗
②、可以在字元終端運作
③、便于集中管理多個服務
④、用于控制服務是否開機自啟動
2)systemctl/chkconfig工具
①、不提供互動式、可視化視窗
②、管理單個服務效率更高
2、系統服務的啟動和控制
1)ntsysv系統服務管理工具
①、輸入ntsysv指令進入設定界面
②、按空格鍵标志服務選項(*為自啟項)
③、按↑、↓鍵切換服務選項
④、按tab切換光标
2)檢視系統服務的啟動狀态
①、sysemctl is-enabled 服務名稱
3)設定系統服務的啟動狀态
①、systemctl enable 服務名稱 # 開啟開機自啟動
②、syatemctl disable 服務名稱 # 關閉開機自啟動
3、指令補充
1)永久修改主機名
hostnamectl set-hostname 新主機名
2)檢視主機名的狀态
hostnamectl status
3)設定系統語言為中文
localect set-locale LANG=zh_CN.utf8
4)檢視目前系統使用的語言