Linux服務器啟動和修復方式
一、通電
啟動
啟動所有硬件并進入系統做準備
修復
檢查所有電源設備,確定供電設備正常,所有線纜是否插緊,檢查線纜是否有損壞
二、BIOS環(huán)境檢查
檢查硬件是否正常、檢查硬件是否插緊
以上問題是硬件問題不是我們要關注的,找修電腦的修,我們要關注的是第三步即以下部分
三、磁盤引導
了解mbr
mbr主要作用是使得磁頭去讀取啟動分區(qū)(/boot分區(qū))

在linux下找到/boot分區(qū),如果此階段出現問題,那么系統會處于黑屏并閃爍光標
模擬問題
模擬命令

[root@Server ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 # 此命令表示用無限零字節(jié)覆蓋/dev/sda上最前面的446個字節(jié)(最前的446個字節(jié)就是mbr主引導記錄,其負責找到/boot) # /dev/sda 是系統boot分區(qū)所在的磁盤 1+0 records in 1+0 records out 446 bytes copied, 0.000200806 s, 2.2 MB/s [root@Server ~]# reboot
問題現象
要把 光盤給取消勾選“啟動時連接” 和 關掉(BIOS)或移除(取消啟動時連接還不管用)網卡(不然它會上網去恢復,看不到現象),問題提示此如下:

解決問題
mbr是在安裝系統時安裝來的,那么我們再從光盤中安裝就好了
1.重光盤啟動
在光盤選項中勾選“啟動時連接”,開機后選擇“Troubleshooting”

2.進入系統挽救模式
這個挽救模式是由光盤提供的

3.得到shell后操作
開始執(zhí)行修復命令,修復原理是把mbr重新安裝到啟動設備
chroot /mnt/sysroot # 不同系統被掛載的地方可能不一致 grub2-install 啟動設備(/dev/sda) # 根據*所在分區(qū)不同而確定啟動分區(qū)所在的設備 fdisk -l exit exit

執(zhí)行命令使它正常掛載

grub2-install往哪里安裝,往有*的設備上安裝


4.成功回到引導界面

四、文件引導階段
在文件系統引導階段,系統會讀取自動引導文件(/boot/grub2/grub.cfg),在此文件中指定系統啟動過程中會讀取什么文件,加載什么文件。
模擬問題
/boot/grub2/grub.cfg文件丟失
當/boot/grub2/grub.cfg文件丟失,那么將無法完成自動啟動
模擬命令
事前準備,確定根分區(qū)和boot分區(qū)所在系統位置
[root@Server ~]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 4096 0 4096 0% /dev tmpfs 1857340 0 1857340 0% /dev/shm tmpfs 742940 10584 732356 2% /run /dev/sda3 99634176 2930108 96704068 3% / # 根分區(qū)(hd0,3)hard-->硬盤設備 /dev/sda1 983040 264680 718360 27% /boot # boot分區(qū)(hd0,1-->第一個設備的第一個分區(qū)) /dev/sr0 10825576 10825576 0 100% /media tmpfs 371468 0 371468 0% /run/user/0
把這文件刪了就好,要是及時發(fā)現,還可以用grub2-mkconfig > /boot/grub2/grub.cfg命令重新生成覆蓋挽救一下。
[root@Server ~]# rm -rf /boot/grub2/grub.cfg [root@Server ~]# reboot
問題現象

解決問題
它自是不能自動啟動了,還可以手動引導
# 命令可以用tab鍵補全
grub> set root=(hd0,msdos1) # 指定boot分區(qū)位置
# hdn便是boot分區(qū)在哪個硬盤上
# msdosn在哪個分區(qū)
# 回車后它給我們的內存有限,不要反復手殘,然后報內存溢出的錯誤
?
# 指定內核文件,只讀掛載根設備
grub> linuxx16 /vmlinuz-5.14.0 net.ifnames=0 selinux=0 # 只讀掛載根分區(qū),讀取根分區(qū)里面的東西,注意:這里的selinux參數必須于你之前在中設定的參數一樣,不寫默認是1,不然參數不一樣它會重啟一遍去讀取selinux,就白寫命令了,net.ifnames=0也寫上,之前做系統母盤時這兩個參數都動過,具體情況根據機器具體而寫。
grub> initrd16 /in
grub> boot # 不是reboot,不然上面執(zhí)行的命令白干,又得從新寫一遍
?
# 完成以上手動引導后再進入系統重寫grub.cfg文件下次進系統就可以開機自動引導了
[root@Server ~]# grub2-mkconfig > /boot/grub2/grub.cfg
[root@Server ~]# reboot # 以成功自動引導
也是ok的啊,成功來到了登錄黑框,現在只需從新寫grub.cfg文件并覆蓋到/boot/grub2/目錄下就ok了

成功出現引導界面

內核參數文件丟失
模擬命令
[root@Server ~]# ls /boot/loader/entries/ 3890aef9b6a64543b93a31bfc8c60d0d-0-rescue.conf 3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf [root@Server ~]# rm -rf /boot/loader/entries/* [root@Server ~]# reboot
問題現象
解決問題
問題現象和解決問題和“/boot/grub2/grub.cfg文件丟失”一樣,先手動掛載。
進入系統后用kernel-install命令恢復
[root@Server ~]# kernel-install add --help
Usage:
kernel-install [OPTIONS...] add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE...]
# 內核版本 內核文件
kernel-install [OPTIONS...] remove KERNEL-VERSION
kernel-install [OPTIONS...] inspect
Options:
-h, --help Print this help and exit
--version Print version string and exit
-v, --verbose Increase verbosity
[root@Server ~]# uname -r # 查看內核版本
5.14.0-427.13.1.el9_4.x86_64
[root@Server ~]# kernel-install add `uname -r` /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
[root@Server ~]# ls /boot/loader/entries/
3890aef9b6a64543b93a31bfc8c60d0d-0-rescue.conf
3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf內核文件丟失
啟動內核過程系統都完成了以下工作:
- 加載內核文件/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
- 只讀掛載根設備
- 讀取/etc/fstab文件,確定掛載策略
- 讀取/etc/sysconfig/selinux文件,確定selinux狀態(tài)
- 加載系統時鐘
模擬命令
[root@Server ~]# rm -rf /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64 [root@Server ~]# ls /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64 ls: cannot access '/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64': No such file or directory [root@Server ~]# reboot
問題現象
哎,炸一看沒什么問題

等它倒計時完了就有問題啦

解決問題
關機,確保光盤選項中的“啟動時連接”是勾選上的,再在開機的一瞬間狂按esc,進入BIOS
手速菜的看下面操作

把光盤啟動(CD-ROM Drive)加到第一即可,用“+/-”號移動,保存更改并退出F10(具體系統根據具體情況來操作)

接下來就是進入救援模式,選擇部分和“磁盤引導”中“進入系統救援模式”步驟一樣;得到shell后執(zhí)行下面命令
安裝文件系統時是通過鏡像安裝的,所以資源在鏡像中要掛載它才可以使用,把它掛載到軟件倉庫指向的那個目錄,再通過rqm -qf /boot/來查看內核文件是從哪里來的
chroot /mnt/sysroot mount /dev/cdrom /media/ cd /media/BaseOS/Packages ls |grep kernel kernel-5.14.0-427.13.1.el9_4.x86_64.rpm # 要用的是這個內核文件 kernel-abi-stablelists-5.14.0-427.13.1.el9_4.noarch.rpm kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-tools-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm cp kernel-5.14.0-427.13.1.el9_4.x86_64.rpm /mnt/ # 這b軟件在 /media(掛載點)/BaseOS/Packages下,把它復制到/mnt下目錄下,文件少,好操作 cd /mnt/ rmp2cpio kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm | cpio -id # 用這個命令把它拆開 ls hgfs kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm lib usr cd lib/modules/5.14.0-427.13.1.el9_4.x86_64/ ls config modules.builtin modules.builtin.modinfo symvers.gz System.map vmlinuz cp vmlinuz /boot/vmlinuz-`uname -r` ls /boot # 不放心可以ls /boot看一下有沒有成功 config-5.14.0-427.13.1.el9_4.x86_64 efi grub2 initramfs-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d.img initramfs-5.14.0-427.13.1.el9_4.x86_64.img initramfs-5.14.0-427.13.1.el9_4.x86_64kdump.img loader symvers-5.14.0-427.13.1.el9_4.x86_64.gz System.map-5.14.0-427.13.1.el9_4.x86_64 vmlinuz-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d vmlinuz-5.14.0-427.13.1.el9_4.x86_64 exit exit

退出后啟動還是光盤啟動,因為BIOS中,光盤啟動優(yōu)先級是最高的,把硬盤啟動優(yōu)先級調高就好了

系統初始化文件丟失
系統初始化作用
使用初始化環(huán)境開啟系統所有開機啟動服務
看初始化環(huán)境步驟如下
內核啟動結束后開始讀取“系統初始化鏡像文件”(initramfs-5.14.0-427.13.1.el9_4.x86_64.img),用file命令查看是gzip文件,改后綴名為gz后用gunzip可以解開,里面的文件是初始化二進制程序,再用cpid -id 解開后會發(fā)現它和根下面的目錄很相似。
# 不知道是系統問題還是怎么樣,我的不是gzip文件,是個可執(zhí)行程序,看其他人現象把
[root@Server ~]# file /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img
/boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
[root@Client ~]# cd /mnt/
[root@Client mnt]# ls
hgfs initramfs-5.14.0-427.13.1.el9_4.x86_64.img
[root@Client mnt]# mv initramfs-5.14.0-427.13.1.el9_4.x86_64.img initramfs-5.14.0-427.13.1.el9_4.x86_64
[root@Client mnt]# cpio -id < initramfs-5.14.0-427.13.1.el9_4.x86_64
79 blocks
[root@Client mnt]# ls
early_cpio hgfs initramfs-5.14.0-427.13.1.el9_4.x86_64 kernel
[root@Client mnt]# tree /mnt/
/mnt/
├── early_cpio
├── hgfs
├── initramfs-5.14.0-427.13.1.el9_4.x86_64
└── kernel
└── x86
└── microcode
└── AuthenticAMD.bin
?
4 directories, 3 files
模擬命令
rm -rf /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img
問題現象
解決問題
問題現象和解決問題和“內核文件丟失”一樣,先關機,開機進入BIOS,把光盤啟動優(yōu)先級調到最上面
得到shell后:
chroot /mnt/sysroot mount /dev/cdrom /media/ cd /media/BaseOS/Packages/ ls |grep kernel kernel-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-abi-stablelists-5.14.0-427.13.1.el9_4.noarch.rpm kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm # 是這個b文件 kernel-debug-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-debug-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-tools-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64.rpm kernel-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force # 強制安裝 ls /boot config-5.14.0-427.13.1.el9_4.x86_64 efi grub2 initramfs-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d.img initramfs-5.14.0-427.13.1.el9_4.x86_64.img # 可以看到這個文件回來了 initramfs-5.14.0-427.13.1.el9_4.x86_64kdump.img loader symvers-5.14.0-427.13.1.el9_4.x86_64.gz System.map-5.14.0-427.13.1.el9_4.x86_64 vmlinuz-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d vmlinuz-5.14.0-427.13.1.el9_4.x86_64 exit exit
最后把硬盤啟動優(yōu)先級設置到最頂就好(高過光盤啟動)
/boot丟失
模擬命令
[root@Server ~]# rm -rf /boot/* [root@Server ~]# reboot
問題現象

解決問題
使用“內核文件丟失”方法得到shell
chroot /mnt/sysroot grub2-install /dev/sda mount /dev/cdrom /media/ cd /media/BaseOS/Packages/ rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force # 如果現象看到grub rescue> 則優(yōu)先執(zhí)行grub2-install /dev/sda,不然它報錯打不開/boot/gurb2下的grubenv.new文件,但是也成功執(zhí)行一部分了,最后也開得機可以正常使用,不知道有沒有影響 grub2-mkconfig > /boot/grub2/grub.cfg exit exit

最后把硬盤啟動優(yōu)先級設置到最頂就好(高過光盤啟動)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

