第七周博客总结

系统故障排错汇总

实战:以centos67为例,如果误删/boot/initramfs–3.10.0-693.el7.x86_64.img,机器重启如何恢复?机器重启后菜单能出来后续不显示了!!!

答:重启—ESC—CD-ROM-Drive-进入救援模式–chroot /mnt/sysimage(切换到真正的根)–cd /boot/–

mkinitrd /boot/initramfs-`uname -r`.img `uname -r`–sync–exit—exit—选择reboot选项即可修复。

实战:以centos67为例,如果误删/boot/vmlinuz-2.6.32-696.el6.x86_64,重启后如何恢复?

centos67:重启—ESC—CD-ROM-Drive-进入救援模式— chroot /mnt/sysimage(切换到真正的根)–mount -o remount,rw /dev/sr0 /misc—cd /misc/isolinux—

cp vmlinuz /boot/vmlinuz-`uname -r`–sync—sync—sync—exit—exit—选择root选项即可!!!

实战:如何实现自己自定义的服务?

第一步:创建一个服务脚本,放在/etc/init.d/目录下

服务脚本是有一定的格式的,关键内容有几行,分别是

chkconfig:   345 95 5  第一个数字(即345)的意思是加到服务以后,默认是在什么模式下处于on状态的(如果是-,代表所有模式下该服务都是off状态)。第二个数字(95)代表开机时在/etc/rc.N/下会生成一个S95的文件,第三个数字(5)代表关闭该服务的时候,会在/etc/rc.N/下生成一个K5的文件。

第二步:(描述信息,centos5上必须有,centos6可有可无)

description: Runs commands scheduled by the “at” command at the time \

第三步:脚本内容

注意第二行和第三行有冒号:

这样做完以后还没有成为真正的服务,因为在chkconfig –list中并没有testsrv这个服务,需要将该服务添加到服务列表当中(加之前必须确保服务脚本在/etc/init.d的目录下,且有执行权限),即chekconfig –add testsrv

ls /etc/init.d/

 

在服务列表中删除testsrv服务 chkconfig –del testsrv,虽然服务被删掉,但是脚本还在/etc/init.d/目录下,但是在对应的/etc/rcN.d/下对应的S和K文件却没有了。

实战:假设testsrv服务脚本写的有问题,同时设为开机启动,开机时系统卡在那,如何恢复?

重启—按a键—输入空格1—chkconfig testsrv off(将该服务在2、3、4、5模式上设为off状态)—reboot,重启后再慢慢修改testsrv这个脚本。

 

ls /etc/rc{1,2,3,4,5}.d/  里面有一个S99local文件

这个服务的作用是:开机时所有的服务都运行完了才运行S99local,而且开机就会运行,所以我们可以将服务脚本放在S99local里面,开机后会自动运行!!!在centos7上如果想开机自动运行S99local脚本,需要自行加执行权限!!!

实战:如果破坏了MBR的前446个字节,系统重启后没有经过菜单栏而直接切换到救援模式的界面, 如何恢复?

先研究第一阶段,即MBR446个字节,

dd if=/dev/sda of=/data/mbr bs=1 count=512

sz /data/mbr

dd if=/dev/zero of=/dev/sda bs=1 count=446

hexdump -C -n 512 -v /dev/sda

reboot

答:救援模式—dd if=/mnt/sysimage/data/mbr of=/dev/sda bs=1 count=446—

hexdump -C -n512 -v /dev/sda—sync—sync—exit—exit—选择reboot项。

如果没有备份,使用grub命令也可以生成,即grub-install /dev/sda,这个命令的作用效果是将grub1阶段、1.5阶段以及第二阶段都修复,不仅仅只修复1阶段,只要看到菜单就说明已经成功的进入到第二阶段,因为菜单是由第二阶段的配置文件生成的,具体修复过程如下:

救援模式切根(chroot /mnt/sysimage–grub-install /dev/sda—sync—sync—

exit—exit—选择reboot选项。

实战:/boot为独立分区!删除/boot下的所有文件,包括目录,重启如何修复?方法一:

救援模式→chroot /mnt/sysimage→mount /dev/sr0 /mnt →

cp /mnt/isolinux/vmlinuz  /boot→mkinitrd initramfs-`umane -r`.img `uname -r`→grub-install /dev/sda →cd /boot/grub→vim grub.conf

→exit→exit→选择reboot选项

方法二:(安装kernel包,自动生成/boot下的vmlinuz和initramfs文件)

救援模式→mkdir /mnt/cdrom → mount /dev/sr0 /mnt/cdrom→

cd /mnt/sysimage/boot→

rpm -ivh /mnt/cdrom/Package/kernel-版本.rpm –root=/mnt/sysimage –force→chroot /mnt/sysimage→grub-install /dev/sda→cd /boot/grub→vi grub.conf

在vi里可以用:r!ls /boot/vmlinuz tab键补出来!

在命令行输入的是–root= ,在vi grub.conf 里面输入的是root=  !!!

如果/boot不是独立分区,与根在一块,如何恢复?

恢复过程一样,只不过在编制/boot/grub/grub.conf文件时,那两个文件要写成

kernel /boot/vmlinuz    红色的/表示的时boot这个目录所在的分区!!!

initd /boot/initramfs

实战:如果将/etc/fstab文件删除,再将/boot下的所有文件删除,如何恢复?

备注:/etc/fstab文件内存放的是各个分区挂载到哪个文件夹下。

救援模式下的故障状态显示

恢复方法:救援模式→fdisk -l,显示如下,*代表引导的意思

经查有5个分区,建一个文件夹mkdir /mnt/rootfs,将上述分区分别挂载到/mnt/rootfs下,再进入到/mnt/rootfs下,看看到底哪个分区对应的是根分区→

vi /mnt/rootfs/etc/fstab

使用blkid可以查看分区是什么文件系统。

→exit→选择reboot选项→救援模式→chroot /mnt/sysimage→mount /dev/sr0 /mnt →

cp /mnt/isolinux/vmlinuz  /boot→mkinitrd initramfs-`umane -r`.img `uname -r`→grub-install /dev/sda →cd /boot/grub→vim grub.conf

→exit→exit→选择reboot选项

实战:破坏/sbin/init文件,如何恢复?(/sbin/init是个二进制文件)方法一:

故障状态为

思路:将别的centos6上的/sbin/init文件拷一份过来就可以!

方法:救援模式→配置网络

chroot /mnt/sysimage→scp 192.168.30.48:/sbin/init ./→

mv init /sbin/→reboot

方法二:

查看/sbin/init来自于哪一个包,使用rpm -qf /sbin/init来查看

方法:救援模式→chroot /mnt/sysimage→挂载→

rpm2cpio /media/CentOS_6.9_Final/Packages/upstart-版本号.rpm | cpio -idv

./sbin/init  意思是将只解压upstart包里面的/sbin/init文件到当前目录!

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98376

(0)
柳宝玉柳宝玉
上一篇 2018-05-13
下一篇 2018-05-13

相关推荐

  • Linux 基础知识

    Linux基础入门 完整的linux OS的由来 * linus创建了Linux的kernel,GNU提供了N多的应用程序Application; * 侠义上的OS指的就是kernel; 软件开发的模式 * 大教堂式 * 集市 Linux就是由无数个黑客共同开发来的,属于集式式的 评判操作系统的快慢监测网站:www.top500.org Linux在服务器领…

    2018-04-12
  • 自建yum仓库,分别为网络源和本地源

    [base] name=CDRom baseurl=file:///mnt gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [CentOS] name=CentOS.org baseurl=http://vault.centos.org/7.4.1708/os/x86_64/ enabled=1 gpg…

    Linux笔记 2018-06-07
  • shell脚本编程基础(3)——循环用法

    在前面的基础编程内容中,我们已经学习了shell脚本的顺序执行及选择执行,通过这两种方式,可以帮我们解决一些简单需求,但要想在更复杂的场景中使用的话,就需要掌握循环执行的方式了。

    2018-05-08
  • 第二周

    tr 用来删除转换字符 -c 取反(补集) -d 删除1表达的字符 -s代替每一个重复的字符(压缩)-t让第一个字符的数和第二个一致tr ‘a-z’ ‘A-Z’ 把大写字母转换成小写字母hexdump c 加文件 查看文件的ascll编码tr -d ‘/r’Windows文件转换成Lin…

    Linux笔记 2018-04-08
  • sed

    用法: sed  [选项]… ‘script’ inputfile 其中script是脚本基于sed语法的脚本                 inputfile文件内容 常用选项 -n   :不输出模式空间内容到屏幕,即不自动打印 -e   :多点编辑 -f    :   /PATH/SCRIPT_FILE:从指定文件中…

    Linux笔记 2018-04-14
  • linux文件处理命令和用户管理和权限管理

    文件处理命令
    用户管理
    权限管理

    Linux笔记 2018-05-28