【AWSL】之Linux引导过程及服务控制(MBR、GRUB、runlevel、systemcl、init、ntsysv、chkconfig)
序言
這里我主要介紹的是Linux引導過程及服務控制
Linux
- 序言
- 一.Linux操作系統引導過程
- 1.引導過程總覽
- 2.系統初始化進程
- 二.排除故障
- 1.MBR
- ①.修復MBR扇區故障
- ②.排除MBR扇區啟動類故障
- 2.GRUB
- ①.修復GRUB引導故障
- ②.排除GRUB引導故障
- 三.遺忘root用戶密碼
- 1.解決root密碼問題
- 四.系統服務控制
- 五.Linux系統的運行級別
- 1.查看運行級別
- ①runlevel
- ②systemcl
- 2.臨時切換運行級別
- ①init
- ②systemcl
- 3.設置永久運行級別
- 六.優化啟動過程
- 1.ntsysv工具
- 2.systemctl工具
- 3.chkconfig工具
- 總結
一.Linux操作系統引導過程
1.引導過程總覽
開機自檢(BIOS) ?MBR引導 ?GRUB菜單 ?加載內核(kernel)?init進程初始化
1.開機自檢
服務器主機開機以后,將根據主板BIoS中的設置對CPU (Central Processing Unit,中央處理器)、內存、顯卡、鍵盤等設備進行初步檢測,檢測成功后根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬盤。
總結:檢測出第一個能夠引導系統的設備 比如硬盤或光驅
2.MBR引導
當從本機硬盤中啟動系統時,首先根據硬盤第一個扇區中MBR (Master Boot Record,主引導記錄)的設置,將系統控制權傳遞給包含操作系統引導文件的分區;或者直接根據MBR記錄中的引導信息調用啟動菜單(如GRUB)。
總結;運行放在MBR扇區里的啟動GRUB引導程序
3.GRUB菜單
對于Linux操作系統來說, GRUB (GRand Unified Bootloader,統一啟動加載器)是使用最為廣泛的多系統引導器程序。系統控制權傳遞給GRUB以后,將會顯示啟動菜單給用戶選擇,并根據所選項(或采用默認值)加載Linux內核文件,然后將系統控制權轉交給內核。需要注意的是, Centos 7采用的是GRUB2啟動引導器。
總結: GRUB引導程序通過讀取GRUB配置文件/boot/grub2/grub.cfg,獲取內核和鏡像文件系統的設置和路徑位置
4.加載Linux內核
Linux內核是一個預先編譯好的特殊二進制文件,介于各種硬件資源與系統程序之間,負責資源分配與調度。內核接過系統控制權以后,將完全掌控整個Linux操作系統的運行過程。在centos系統中,默認的內核文件位于"/boot/vmlinuz-3.10.0-514.e17.x86_64"。
總結:把內核和鏡像文件系統加載到內存中
5.init進程初始化
為了完成進一步的系統引導過程, Linux內核首先將系統中的"/sbin/init"程序加載到內存中運行(運行中的程序稱為進程) , init進程負責完成一系列的系統初始化過程,最后等待用戶進行登錄
總結:加載硬件驅動程序,內核把init進程加載到內存中運行
2.系統初始化進程
■init進程
●由Linux內核加載運行/sbin/init程序
●init進程是系統中第一個進程
●init進程的PID (進程標記)號永遠為1
■Systemd
●Systemd是Linux操作系統的一種init軟件
●CentOS7中采用全新的Systemd啟動方式,取代傳統的SysVinit
●CentOS7中運行的第一個init進程是/lib/systemd/systemd
■運行級別所對應的Systemd目標
| 0 | target | 關機狀態,使用該級別時將會關閉主機 |
| 1 | rescue.target | 單用戶模式,不需要密碼驗證即可登錄系統,多用于系統維護 |
| 2 | mult-user.target | 用戶定義/域特定運行級別。默認等同于3 |
| 3 | mult-user.target | 字符界面的完整多用戶模式,大多數服務器主機運行在此級別 |
| 4 | mult-user.target | 用戶定義/域特定運行級別。默認等同于3 |
| 5 | graphical.target | 圖形界面的多用戶模式,提供了圖形桌面操作環境 |
| 6 | reboot.target | 重新啟動,使用該級別時將會重啟主機 |
二.排除故障
1.MBR
①.修復MBR扇區故障
■故障原因
病毒、木馬等造成的破壞
不正確的分區操作、磁盤讀寫誤操作
■故障現象
找不到引導程序,啟動中斷
無法加載操作系統,開機后黑屏
■解決思路
應提前作好備份文件
以安裝光盤引導進入急救模式
從備份文件中恢復
②.排除MBR扇區啟動類故障
需要格式化磁盤mkfs
###修復MBR扇區故障
MBR位于第一塊硬盤( /dev/sda)的第一個物理扇區處,總共512字節
1.備份MBR扇區數據到其它磁盤( /dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup #掛載到/backup目錄
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1 #sda備份到backup/mbr.bak下
2.模擬破壞MBR引導扇區
dd if=/dev/zero of=/dev/sda bs=512 count=1
3.引導界而進入急救模式,從備份文件中恢復MBR扇區數據
先加載好光盤鏡像,重啟操作系統
當出現安裝向導界面時,選擇"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命令退出臨時Shel1環境,系統將會自動重啟
2.GRUB
①.修復GRUB引導故障
■故障原因
MBR中的GRUB引導程序遭到破壞
grub.conf文件 、引導配置有誤
■故障現象
系統引導停滯,顯示"grub>"提示符
■解決思路
方法1.進入急救模式,重寫或者從備份中恢復grub.conf
方法2.向MBR扇區中重建grub程序
②.排除GRUB引導故障
方法1:進入急救模式,恢復GRUB引導程序
MBR位于第一塊硬盤( /dev/sda)的第一個物理扇區處,總共512字節,前446字節是主引導記錄,分區表保存在MBR扇區中的第447-510字節中。
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
#模擬對MRB中的GRUB引導程序的破壞,但并不破壞分區表
dd if=/dev/zero of=/dev/sda bs=446 count=1
#引導界而進入急救模式,從備份文件中恢復GRUB引導程序
N
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
方法二:引導界面進入急救模式,重建GRUB菜單配置文件
rm -rf /boot/grub2/grub.cfg
init6 重啟
#進入急救模式,加載光盤鏡像,切換到系統根環境(重啟時按ESC或F2)
選擇3.CD-ROM Drive或Boot下CD-ROM Drive調到第一位,F10保存并退出
當出現安裝向導界面時,選擇"Troubleshooting“選項,
再選擇”Rescue a Centos Linux system"選項,進入急救模式
選擇"1"選擇Continue并按Enter鍵繼續
再次按Enter鍵后將進入帶"sh-4.2#"提示符的Bash Shell環境
sh-4.2# chroot /mnt/sysimage
#重新將GRUB引導程序安裝到第一塊硬盤(/dev/sda)的MRB扇區,如果有多個分區可省略
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
重啟
#進入急救模式,加載光盤鏡像,切換到系統根環境(重啟時按ESC)
選擇3.Hard.Drive
三.遺忘root用戶密碼
■故障原因
遺忘root用戶的密碼
■故障現象
無法進行需要root權限的管理操作
若沒有其他可帳號,將無法登錄系統
■解決思路
方法1.進入急救模式,重設密碼
方法二.進入單用戶模式修改root密碼
1.解決root密碼問題
方法一:進入急救模式,加載系統鏡像,c切換到系統根環境
sh-4.2# chroot /mnt/sysimage
#重設root用戶密碼
bash-4.2# passwd root
方法二:進入單用戶模式修改root密碼為例。
1.重啟開機(或輸入reboot)按esc,第一行按e在啟動GRUB菜單中選擇編輯選項,按鍵 “e” 進入編輯;
2.編輯修改:大約在第16行找到 “ro” 將 “ro” 修改為 " rw init=/sysroot/bin/bash ";
3.按Ctrl+X重啟,輸入命令進入系統
sh-4.2#chroot /sysroot
4.字符集修改
###修改前可修改字符集:
sh-4.2#LANG=en_US.UFT-8
###重置root密碼
sh-4.2# passwd root
#退出chroot環境,并重啟
bash-4.2# exit
sh-4.2# init 6
四.系統服務控制
■系統服務控制
systemctl 控制類型 服務名稱
注:netstat -antulp #查端口下服務
■控制類型
start:啟動
stop:停止
restart:重新啟動
reload:重新加載
status:查看服務狀態
五.Linux系統的運行級別
1.查看運行級別
①runlevel
runlevel命令 #runlevel只能查看切換運行級別與當前運行級別
例:[root@zzc home]#runlevel
N 5
[root@zzc home]# init 3
[root@zzc home]# runlevel
5 3
[root@zzc home]# init 5
[root@zzc home]# runlevel
3 5
②systemcl
systemctl工具 #systemctl時能查看默認的運行級別
[root@zzc home]# systemctl get-default
graphical.target #圖形模式
[root@zzc home]# systemctl isolate multi-user.target #切換到字符界面
[root@zzc homej# systemctl get-default
graphical. target #還是顯示圖形模式,因為使用的是軟鏈接,如要強制修改,參考下面👇
設置運行級別
命令格式:
systemctl [command] [unit.target]
command參數:
get-default :取得當前的target
set-default :設置指定的target為默認的運行級別
isolate :切換到指定的運行級別
unit.target :上面列出的運行級別
例:
systemctl get-default 獲得當前的運行級別
systemctl set-default multi-user.target 設置默認的運行級別為mulit-user
systemctl isolate multi-user.target 在不重啟的情況下,切換到運行級別mulit-user下
systemctl isolate graphical.target 在不重啟的情況下,切換到圖形界面下
init 0 systemctl isolate poweroff.target systemctl poweroff poweroff
init 1 systemctl isolate rescue.target
init 3 systemctl isolate multi-user.target
init 5 systemctl isolate graphical.target 圖形
init 6 systemctl isolate reboot.target systemctl reboot reboot
2.臨時切換運行級別
①init
init命令 #init的命令參數是運行級別所對應的數字
②systemcl
systemct工具 #systemctl的命令參數是具體的target
3.設置永久運行級別
強制修改軟鏈接,詳見目錄五 1 ② 代碼塊
六.優化啟動過程
1.ntsysv工具
ntsysv - -level 級別列表
提供一個交互式、可視化窗口
可以在字符終端運行
便于集中管理多個服務
2.systemctl工具
不提供交互式、可視化窗口
管理單個服務效率更高
注:
systemctl poweoff #關閉當前系統
systemctl reboot #重啟
systemctl list-units --type=service #查看所有服務狀態
systemctl list-unit-files |grep enabled #查看所有開機自啟動的服務器
systemctl is-enable #服務名稱 #查看特定服務開機自啟動
systemctl enable/disable #服務名稱 #設置特定服務的啟動狀態
systemctl get -default #查看系統默認的運行級別
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或systemctl set -default multi-user.target #設置永久運行級別
hostnamectl set-hostname newname #永久修改主機名
hostnamectl status #查看主機名的狀態
localectl set-locale LANG=zh_ CN.utf8 #設置系統語言為中文
localectl [status ] #查看當前系統使用的語言
3.chkconfig工具
格式: chkconfig --list [服務名稱]
chkconfig --add 服務名稱
chkconfig --level 級別列表服務名on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
總結
總結
以上是生活随笔為你收集整理的【AWSL】之Linux引导过程及服务控制(MBR、GRUB、runlevel、systemcl、init、ntsysv、chkconfig)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AWSL】之LVM与磁盘配额(PV、V
- 下一篇: 【AWSL】之Linux文件系统与日志分