zoukankan      html  css  js  c++  java
  • linux救援模式

    linux救援模式
    修改/etc/fstab, /etc/rc.d/rc.sysinit等系统启动文件时误操作就会造成linux无法进入,有rescue盘可以容易修复,这个方法适合于没有rescue盘时修复系统。

    grub菜单中选择linux,按e,e,进入编辑模式,
    kernel (hd0,0)/vmlinuz root=/dev/hda2.....这一行最后加上
    init=/bin/bash,修改好后按enter,b引导
    修改后的引导信息类似如下:
    kernel (hd0,0)/vmlinuz root=/dev/hda2 init=/bin/bash
    这样引导系统能够得到一个bash shell
    进入的系统会是read-only的,首先先使用fsck检查系统
    fsck -a /dev/hdaX 处理根分区 X是根分区号 比如hda2
    fsck -R -A -a 处理其他分区
    假如系统在上次重启,是正常重启的,文档系统是正常卸载的,
    能够不用fsck检查直接把系统挂载成read-write的
    mount /proc
    mount / -o remount,rw
    swapon -a 打开任何的交换分区
    source /etc/profile 加载用户环境
    在修复好系统后将系统重新挂载成ro的,就能够安全重启了。
    mount / -o remount,ro


    Linux救援模式应用

      当系统连单用户模式都无法进入时或出现GRUB命令行也不能解决的引导问题,我们就需要使用Linux救援模式来进行故障排除了。步骤如下:

    1、将Linux安装光盘(如果使用CD光盘,则放入第一张引导光盘)放入光驱,设置固件CMOS/BIOS为光盘引导,当Linux安装画面出现后,在“boot:”提示符后输入“linux rescue”回车进入救援模式。(想了解救援模式详细信息,还可以按F5键查看)

    2、系统会检测硬件,引导光盘上的Linux环境,依次提示你选择救援模式下使用的语言(建议选择默认的英文即可,根据笔者测试,部分Linux系统选择中文会出现乱码);键盘设置用默认的“us”就好;网络设置可以根据需要,大部分故障修复不需要网络连接,可不进行此项设置,选择“No”。

    3、接下来系统将试图查找根分区。

    默认在救援模式,硬盘的根分区将挂载到光盘 Linux环境的/mnt/sysimage目录下,默认选项“continue”表示挂载权限为读写; “Read-only”为只读,如果出现检测失败可以选择“skip”跳过。此处,因为要对系统进行修复,所以需要有读写权限,一般选择默认选项 “continue”。进入下一步后,系统提示执行“chroot /mnt/sysimage”命令,可以将根目录挂载到我们硬盘系统的根目录中去。

    案例一:双系统启动修复
    当我们安装双系统环境,先安装Linux再安装Windows;或者已经安装好双系统环境的Windows损坏,在重新安装Windows后,保存 GRUB的MBR(Master Boot Record,主引导记录)会被Windows系统的自举程序NTLDR所覆盖,造成Linux系统无法引导。

    1、如果要恢复双系统引导,首先用上述方法进入救援模式,执行chroot命令如下:
    sh-3.1# chroot /mnt/sysimage

    2、将根目录切换到硬盘系统的根目录中,然后执行grub-install命令重新安装GRUB:
    sh-3.1# grub-install /dev/hda

    “/dev/hda”为硬盘名称,如使用SCSI硬盘或Linux安装在第二块IDE硬盘,此项设置要做相应调整。

    3、然后依次执行exit命令,退出chroot模式及救援模式(执行两次exit命令):
    sh-3.1# exit
    sh-3.1# exit

    系统重启后,将恢复GRUB引导的双系统启动。

    案例二:系统配置文件丢失修复
    系统在引导期间,很重要的一个过程就是init进程读取其配置文件/etc/inittab,启动系统基本服务程序及默认运行级别的服务程序完成系统引导,如果/etc/inittab误删除或修改错误,Linux将无法正常启动。此时,只有通过救援模式才可以解决此类问题。

    1、有备份文件的恢复办法
    进入救援模式,执行chroot命令后, 如果有此文件的备份(强烈建议系统中的重要数据目录,如/etc、/boot等要进行备份),直接将备份文件拷贝回去,退出重启即可。如果是配置文件修改 错误,如比较典型的/boot/grub/grub.conf及/etc/passwd的文件修改错误,也可以直接修正恢复。假设有备份文件/etc /inittab.bak,则在救援模式下执行:

    sh-3.1# chroot /mnt/sysimage
    sh-3.1# cp /etc/inittab.bak /etc/inittab

    2、没有备份文件的恢复办法
    如果一些配置文件丢失或软件误删除,且无备份,可以通过重新安装软件包来恢复,首先查找到/etc/inittab属于哪一个RPM包(即便文件丢失,因为存在RPM数据库,一样可以查找到结果):

    sh-3.1# chroot /mnt/sysimage
    sh-3.1# rpm -qf /etc/inittab
    initscripts-8.45.3-1

    退出chroot模式:
    sh-3.1# exit

    挂载存放RPM包的安装光盘(在救援模式下,光盘通常挂载在/mnt/source目录下):
    sh-3.1# mount /dev/hdc /mnt/source
    Fedora系统的RPM包存放在光盘Fedora/RPMS目录下,其 他Linux存放位置大同小异,这里不一一列举;另外,因为要修复的硬盘系统的根目录在/mnt/sysimage下,需要使用--root选项指定其位 置。覆盖安装/etc/inittab文件所在的RPM包:

    sh-3.1# rpm -ivh --replacepkgs --root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm

    其中的rpm命令选项“--replacepkgs”表示覆盖安装,执行完成后,即已经恢复了此文件。

    如果想只提取RPM包中的/etc/inittab文件进行恢复,可以在进入救援模式后,执行命令:
    sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm
    | cpio -idv ./etc/inittab
    sh-3.1# cp etc/inittab /mnt/sysimage/etc

    注意此命令执行时不能将文件直接恢复至/etc目录,只能提取到当前目录下,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的/mnt/sysimage目录下相应位置即可。

    救援模式是维护Linux的有力武器,本文以上述两个例子讲解了它的应用方法,希望能够给读者一点启示。解决Linux系统启动的故障,必须充分理解Linux的引导过程,才能够对故障进行有效的判断和处理。
    我在IBM工作,可以为大家内部推荐IBM各种职位 IBM全球职位尽在以下链接(请在浏览器中打开,QQ/微信 会阻止): http://ibmreferrals.com/ 很乐意为感兴趣的小伙伴分享:我的面试经验^_^ 如需咨询,请邮件发送以下邮箱,有问必回 1026096425@qq.com
  • 相关阅读:
    【转】PHP foreach 小结
    【转】div,p,span,ul,li,dl,dt,dd,a,img,h,strong,em用法
    【转】网页制作中的CSS+DIV:dl,dt,dd分别表示什么意思啊?请说明啊,谢谢有什么功能?
    【转】[教程] CSS入门3:如何插入CSS样式
    PHP输出多个空格
    【转】浅谈HTTP中Get与Post的区别
    HDOJ 2433 Counter Strike 逆序对 线段树
    hdu 4193 Nonnegative Partial Sums 单调队列
    vijos 1750 建房子 单调队列
    poj 2155 Matrix 二维树状数组
  • 原文地址:https://www.cnblogs.com/jackydalong/p/2408800.html
Copyright © 2011-2022 走看看