Linux从入门到精通——linux的系统排错
####系统排错###
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重启
=========================================================================================================================