####系統排錯###
1.誤刪boot下的文件


(1)不慎刪除自動引導文件
/boot/grub2/grub.cfg ##系統自動引導文件
set root='hd0,msdos1' ##設定引導啟動分區路徑
Linux16 /vmlinuz-3.10.0-327.el7.x86_64 ro root=/dev/vda1 selinux=0 ##設定啟動內核,如果selinux沒關會讓系統啟動卡住
initrd16 /initramfs-3.10.0-327.el7.x86_64.img ##啟動初始化程序
boot
grub2-mkconfig > /boot/grub2/grub.cfg ##永久恢復


下面的實驗需要新建一個cdrom的啟動盤,下面是方法:

(2)不慎刪除啟動內核怎么辦
rm -fr /boot/vmlinuz-3.10.0-327.el7.x86_64
安裝啟動盤(上面新添加的光驅),啟動拯救模式
chroot /mnt/systimg ## 切換真實的root環境。掛載系統,至此你已進入自己安裝的Linux系統
mkdir /rhel7.0 ## 新建一個新的目錄
mount /dev/sr0 /rhel7.0 ## /dev/sr0是光驅的設備名,/dev/cdrom代表光驅。cdrom是sr0的軟鏈接.你ll /dev/cdrom和ll /dev/sr0看看顯示
cd /rhel7.0/Pcakages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
cd /mnt
ls
cd boot/
ls
cp vmlinuz-3.10.0-327.el7.x86_64 /boot
exit
exit
刪除啟動盤




(3)刪除初始化程序如何恢復
rm -fr /boot/initramfs-3.10.0-327.el7.x86_64.img
拯救模式
chroot /mnt/systimg
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

(4)忘記root密碼
重啟系統
按E
在內核行后刪除ro后的內容
ro改為rw加空格
加rd.break
Ctrl x
出現switch_root后,輸入chroot /sysroot/
輸入echo westos|passwd --stdin root ##改root密碼為westos
touch /.autorelabel ##改完密碼后selinux默認不識別新密碼,建立此文件使selinux識別新密碼


(5)進入不了sh的無圖形界面
chroot /mnt/sysimage
顯示沒有/bin/bash這個文件
cp /bin/bash /mnt/sysimage/bin/bash
chroot /mnt/sysimage
這樣就好了

(6)更改默認的指向 (更改default.target)
cd /etc/systemd/system
ll default.target
lrwxrwxrwx. 1 root root 36 Jul 1 00:19 default.target -> /lib/systemd/system/graphical.target ##默認軟鏈接的指向
systemctl set-default multi-user.target


會顯示:
rm '/etc/systemd/system/default.target'
ln -s '/vsr/lib/systemd/system/multi-uer.target' '/etc/systemed/system/default.target'
ln -snf(強制更改) /usr/lib/systemd/system/poweroff.target default.target
reboot ##系統會卡在一直執行這里然后關機這個狀態


(7)reboot以后發現直接出現的不是grub >,而是grub sxxx > .
需要在在啟動盤里面把上面文件全部在 /boot 下cp一份 才能重新啟動。
=======================================================================================================================
重置密碼主要有rd.break和init兩種方法。
rd.break方法:
1、啟動的時候,在啟動界面,相應啟動項,內核名稱上按“e”;
2、進入后,找到linux16開頭的地方,按“end”鍵到最后,輸入rd.break,按ctrl+x進入;
3、進去后輸入命令mount,發現根為/sysroot/,並且不能寫,只有ro=readonly權限;
4、mount -o remount,rw /sysroot/,重新掛載,之后mount,發現有了r,w權限;
5、chroot /sysroot/ 改變根;
(1)echo redhat|passwd –stdin root 修改root密碼為redhat,或者輸入passwd,交互修改;
(2)還有就是先cp一份,然后修改/etc/shadow文件
6、touch /.autorelabel 這句是為了selinux生效
7、ctrl+d 退出
8、然后reboot
至此,密碼修改完成
init方法:
1. 啟動系統
,並在GRUB2啟動屏顯時,按下e鍵進入編輯模式。
2. 在linux16/linux/linuxefi所在參數行尾添加以下內容:init=/bin/sh
3. 按Ctrl+x啟動到shell。
4. 掛載文件系統為可寫模式:mount –o remount,rw /
5. 運行passwd,並按提示修改root密碼。6. 如何之前系統啟用了selinux,必須運行以下命令,否則將無法正常啟動系統:touch /.autorelabel
7. 運行命令exec /sbin/init來正常啟動,或者用命令exec /sbin/reboot重啟
=========================================================================================================================
