目錄
- 一、引導程序
- 1.引導程序總覽
- 2.systemd行程
- 3.target單元
- 二、服務配置
- 1.修復MBR扇區故障
- 修復MBR扇區故障
- 修復GRUB 引導故障
- GRUB組態檔
- 2.忘記root密碼
- 3.系統服務控制
- 4.linux系統運行級別
- 5.優化啟動程序
- ntsysv工具
- chkconfig工具
- 5.優化啟動程序
- ntsysv工具
- chkconfig工具
一、引導程序
1.引導程序總覽
| 開機自檢(BIOS) |
|---|
| MBR引導 |
| GRUB選單 |
| 加載內核(Kernel)與記憶體檔案系統 |
| 加載硬體驅動與初始化行程 |
1.開機自檢
服務器主機開機以后,將根據主板 BIOS 中的設定對設備進行初步檢測,檢測成功后根據預設的啟動順序移交系統控制權,大多時候會移
交給本機硬碟,
2.MBR引導
當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中 MBR的設定,將系統控制權傳遞給包含作業系統引導檔案的磁區;或者直接根據 MBR 記錄中的引導資訊呼叫啟動選單(如 GRUB),
3.GRUB選單
對于 Linux 作業系統來說,GRUB是使用最為廣泛的多系統引導器程式,系統控制權傳遞給 GRUB 以后,將會顯示啟動選單給 用戶選擇,并根據所選項(或采用默認值)加載 Linux 內核檔案,然后將系統控制權轉交給 內核,需要注意的是,CentOS 7 采用的是 GRUB2 啟動引導器,
4.加載內核(Kernel)與記憶體檔案系統
Linux 內核是一個預先編譯好的特殊二進制檔案,介于各種硬體資源與系統程式之間, 負責資源分配與調度,內核接過系統控制權以后,將完全掌控整個 Linux 作業系統的運行過 程,在 CentOS 系統中,默認的內核檔案位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”,
5.加載硬體驅動與初始化行程
為了完成進一步的系統引導程序,Linux內核首先將系統中的“/sbin/init”程式加載到內 存中運行(運行中的程式稱為行程),init 行程負責完成一系列的系統初始化程序,最后等待用戶進行登錄,
傳統SysVinit依賴于串行執行Shell 腳本啟動服務,導致效率低下,系統啟動速度較慢
systemd能夠將更多的服務行程并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少行程,從而提高系統啟動速度,
/lib/systemd/systemd
/sbin/init
2.systemd行程
在CentOS7中,使用systemd行程代替init,成為系統最先啟動的行程,PID恒為1,
傳統SysVinit依賴于串行執行Shell 腳本啟動服務,導致效率低下,系統啟動速度較慢,systemd能夠將更多的服務行程并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少行程,從而提高系統啟動速度,
/lib/systemd/systemd
/sbin/init
systemd單元(unit)
單元是不同型別的systemd物件
使用systemctl管理
查看系統中有效的unit,使用命令
systemctl -t help
常見的單元型別
service :擴展名為.service,代表系統服務
socket :擴展名為.socket,表述行程間通信(IPC)
target :擴展名為.target,代替舊版本中的運行級別
path :擴展名為.path,用于在特定的檔案系統發生變化前延遲服務的啟動
查看服務狀態命令
systemctl status name.type
選項--type=type 查看指定型別單元
-l 查看全部資訊

查看服務啟動啟用狀態
systemctl {is-active| is-failed } service
啟動與停止服務
systemctl {start | stop | restart| reload} service
啟用與停用服務
systemctl {enable | disable} service
屏蔽與取消屏蔽服務
systemctl {mask | unmask} service
服務組態檔
/usr/lib/systemd/system/*NAME*.service
三部分組成
[Unit] #定義systemd單元的元資料
[Service] #服務的配置 ,只有systemd單元是服務型別時才有這一段資訊
[Install] #定義是否是開機啟動
服務組態檔示例
[Unit]
Description=OpenSSH server daemon #描述資訊
After=network.target sshd- keygen.service #在此單元啟動之前啟動的單元
Wants= sshd-keygen.service #與此單元配合使用的單元, 如果沒有運行此單元也不會啟動失敗
[Service]
EnvironmentFile=/etc/sysconfig/sshd #此服務單元的服務組態檔
ExecStart=/usr/sbin/sshd -D $OPTIONS #啟動服務單元的命令
ExecReload= /bin/kill -HUP $MAINPID #重啟服務單元的命令
KillMode=process #終止該服務單元行程模式
Restart=on-failure #定義什么情況下systemd會自動啟動此服務單元
[Install]
WantedBy= multi-user.target #當前單元激活時軟鏈接會放在/etc/systemd/system/目錄下面的multi-user.target.wants目錄中
3.target單元
常見target[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dEGpamJ0-1631276670684)(C:\Users\夜白\Desktop\0910\引導程序總覽.assets\QQ截圖20210910111455.png)]
| 運行級別 | 目標 | 用途 |
|---|---|---|
| 0 | target | 關機狀態使用關閉主機 |
| 1 | rescue.target | 急救模式,僅初始化基本系統,需要root賬戶登錄 |
| 2、3、4 | multi-user.target | 字符界面的完整用戶模式, |
| 5 | graphical.target | 帶圖形及字符終端的多用戶模式 |
| 6 | reboot.target | 重新啟動 |
查看target單元型別
systemctl list-unit-files --type target
查看當前系統默認啟動target
systemctl get- default
設定默認啟動target
systemctl set default TARGET
修改系統主機名
Hostnamectl set-主機名www.kgc.cn
查看主機名狀態
hostnamectl status
讀取日志資訊日志
journalctl
查看當前時間設定
timedatectl
查看登錄系統用戶資訊
loginctl
查看系統啟動耗時
systemd-analyze
二、服務配置
1.修復MBR扇區故障
備份MBR扇區資料
dd if=/dev/sda of=/backup/sda mbr.bak bs=512 count=1
模擬MBR扇區故障
dd itu/dev/zero of/dev/sda bs=512 count=l
光碟引導,進入急救模式,按提示操作
從備份檔案中恢復MBR扇區
dd ifz/tempdir/sda.mbr.bak of=/dev/sda bs=512 count=l
故障原因
病毒木馬的破壞
MBR中的GRUB引導程式遭到破壞
grub.conf檔案丟失、引導配置有誤
故障現象
系統引導停滯,顯示’grub>" 提示符
解決思路
1.將selinux 關閉
grub2-setpassword 設定grub密碼
排除啟動類故障
修復MBR扇區故障
MBR位于第一 塊硬碟( /dev/sda) 的第一一個物理扇區處,總共512位元組
1.備份MBR扇區資料到其它磁盤( /dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
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命令退出臨時Shell環境,系統將會自動重啟
修復GRUB 引導故障
/boot/grub/目錄下的包是用于啟動選單的背景圖片及樣式
/boot/grub2/grub.cfg
GRUB組態檔
方法一:手動輸入引導命令
grub> insmod xfs #加載指定的模塊到內核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet
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
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 #進入急救模式,加載光碟鏡像,切換到系統根環境
sh-4.2# chroot /mnt/sysimage #重新將GRUB引導程式安裝到第一塊硬碟(/dev/sda)的MRB扇區,如果有多個磁區可省略
bash-4.2# grub2-install /dev/sda #重新構建GRUB選單的組態檔
bash-4.2# grub2-mkconfig -0 /boot/grub2/grub.cfg #退出chroot環境,并重啟
bash-4.2# exit
sh-4.2# reboot
2.忘記root密碼
方法一:進入急救模式,加載系統鏡像,c切換到系統根環境
sh-4.2# chroot /mnt/sysimage //重設root用戶密碼
bash-4.2# passwd root
方法二:進入單用戶模式修改root密碼為例,
1.重啟開機按esc,第一行按e在啟動GRUB選單中選擇編輯選項,按鍵 "e" 進入編輯;
2.編輯修改:大約在linux16開頭行 最后 加入 rd.break console=tty0
3.按Ctrl+X 繼續運行系統
switch_root# mount -o remount,rw /sysroot/ 重新掛載#ro 狀態變為 rw
sh-4.2#chroot /sysroot
sh-4.2# passwd root
sh-4.2#touch /.autorelabel //重新打標記
//退出chroot環境,并重啟
bash-4.2# exit
sh-4.2# init 6
3.系統服務控制
常用方式
service 服務名稱 控制型別
/etc/rc.d/init.d 服務名稱 控制型別
控制型別
start :啟動
stop:停止
restart:重新啟動
reload :重新加載
status :查看服務狀態
示例: postfix服務
reload與restart的區別
4.linux系統運行級別
查運行級別:使用runlevel命令
命令格式:
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
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1Ny1oSc1-1631276670685)(C:\Users\夜白\Desktop\0910\引導程序總覽.assets\QQ截圖20210909202150.png)]
查看系統默認的運行級別
systemctl get -default
設定永久運行級別
1n -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 ]
如,執行以下操作即可配置 apache 服務開機自動啟動或關閉,并查看開機啟動狀態,
當 apache 服務設定為開機自動啟動時,在/etc/systemd/system/multi-user.target.wants/目錄下面會出現一個檔案名為 httpd.service 的軟連接檔案,
當apache服務設定為開機自動關 閉時,在/etc/systemd/system/multi-user.target.wants/目錄下面的 httpd.service 軟連接檔案 就會被洗掉,
[root@localhost ~]# systemctl enable httpd.service //apache 服務設定為開機啟動
Createdsymlinkfrom /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd.service enabled
[root@localhost ~]# systemctl disable httpd.service //apache 服務設定為開機關閉
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd.service disabled
在當前系統下執行“systemctl list-units --type=service”命令可以查看當前系統中所有已 激活的系統服務,
命令如下:
[root@localhost ~]# systemctl list-units --type=service //查看所有已經激活的系統服務
UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.serviceloaded active running ABRT Xorg log watcherdisabled
查看所有開機自啟動的服務器
systemctl list-unit-files |grep enabled
5.優化啟動程序
ntsysv工具
提供一個互動式,可視化視窗
可以在字符終端運行
便于集中管理多個服務
語法
ntsysv
ntsysv --level級別串列
chkconfig工具
不提供互動式、可視化視窗
管理單個服務效率更高
常見的系統服務介紹
系統服務選擇開啟還是關閉,應根據主機的實際功能需求來定,
格式: chkconfig --list [服務名稱]
chkconfig --add 服務名稱
chkconfig --level 級別串列服務名on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
systemctl list-unit-files |grep enabled
5.優化啟動程序
ntsysv工具
提供一個互動式,可視化視窗
可以在字符終端運行
便于集中管理多個服務
語法
ntsysv
ntsysv --level級別串列
chkconfig工具
不提供互動式、可視化視窗
管理單個服務效率更高
常見的系統服務介紹
系統服務選擇開啟還是關閉,應根據主機的實際功能需求來定,
格式: chkconfig --list [服務名稱]
chkconfig --add 服務名稱
chkconfig --level 級別串列服務名on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299444.html
標籤:其他
上一篇:專案部署時沒有出現頁面的問題
下一篇:Docker Compose安裝
