1. rpm命令包被删除掉了如何解决?(无法使用yum)

1. rpm命令包被删除掉了如何解决?(无法使用yum)

1.1. 解决思路:

进入光盘修复模式,重新安装RPM包即可

1.2. 解决步骤:

  1. 删除rpm包,人为创造故障:
# rpm -e rpm --nodeps
  1. 重启进入CD-ROM启动引导模式(快速按ESC按键)

Centos各种故障插图

  1. 选择Troblesshooting,然后进入Rescue a Centos System

Centos各种故障插图1

Centos各种故障插图2

  1. 等待一会儿,选择1 Continue继续,再按回车进入系统

Centos各种故障插图3

  1. 此时输入命令df查看CD光盘被挂载到系统的什么位置:

可见,/dev/sr0被挂载到了/run/install/repo

Centos各种故障插图4

  1. 重新安装rpm包,注意指定安装的根目录为/mnt/sysimage
rpm -ivh /run/install/repo/Packages/rpm-4.XXXXX.rpm --root=/mnt/sysimage/

Centos各种故障插图5

  1. 重启即可修复完成

1.3. 注意点:

  1. yum功能是rpm的前端,依赖于rpm功能, 如果用 rpm -e rpm --nodeps命令卸载掉rpm(–force只能安装时用),则yum也无法使用了。

  2. 假如真的卸载掉了rpm功能,则用光盘模式,重新装上rpm功能

    • 不过装的时候注意重新安装的rpm包路径的问题,因为rpm包的路径默认会装到根目录下,但救援模式下根并不是真正的系统根,因此命令后面要指定根路径命令。下面列出了如何装包
    • rpm -ivh /run/install/repo/Packages/rpm-4###.rpm --root=/mnt/sysimage/
  3. 在光盘中,如果rpm包的路径如果不知道在哪,可用df命令先查看光盘在救援模式下挂载哪里了,后面的就是原先真正系统的根。

    • 注意不能用chroot /mnt/sysimage 命令,因为切换根就相当于切换到原先系统内,它仍然没有rpm命令。(附加:退出chroot命令用exit)

2. /etc/passwd文件和/etc/shadow文件错误:没有了管理员0账号(同时删除了root的一行)

2.1. 错误提示:

主要就是各种登录服务会无法启动,并且会不断尝试重启,卡在开机界面。如下:

Centos各种故障插图6

Centos各种故障插图7

2.2. 解决思路:

进入光盘修复模式,利用useradd命令添加root账号并设置好它的UID,GID和家目录

2.3. 解决步骤

  1. 删除/etc/passwd和/etc/shadow的root行,人为制造错误
  2. 进入光盘修复模式得到shell
  3. 切换根目录
    chroot /mnt/sysimage
  4. 添加root账号
    • 如果第0步中没有删除/root目录
      useradd -u 0 -g 0 -d /root -M root
    • 如果第0步中/root目录也被删除了
      useradd -u 0 -g 0 -d /root -m root
  5. 用passwd命令创建root密码
  6. 可以查看一下/etc/passwd/etc/shadow文件,root账号是否创建成功(最后一行) Centos各种故障插图8
  7. 重启reboot

3. 动态库文件丢失

3.1. 解决思路

光盘进入恢复模式,拷贝丢失的动态库文件到/lib64(或/usr/lib64,它俩是同一个目录,因为是软链接)目录下即可

3.2. 解决步骤

  1. 删除一个库文件,人为制造错误,比如libc.so.6
# ldd /usr/bin/cat linux-vdso.so.1 => (0x00007ffd8b5be000) libc.so.6 => /lib64/libc.so.6 (0x00007f8ecc453000) /lib64/ld-linux-x86-64.so.2 (0x00007f8ecc821000) # whereis libc.so.6 libc.so: /usr/lib64/libc.so.6 /usr/lib64/libc.so # rm -f /usr/lib64/libc.so.6 # cat cat: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory # ls ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
  1. 重启进入光盘救援模式
  2. 拷贝丢失的库文件到相同目录即可

Centos各种故障插图9


4. 密码忘记无法进入系统

4.1. 解决思路:

  1. 如果能用runlevel 1模式破解直接进入单用户模式破解
    • 进入单用户模式之后直接无需密码就可进入系统,此时再利用passwd命令修改root密码就可
  2. 不能1破解直接光盘救援模式进入系统删除shadow文件中root密码即可。

具体如何进入runlevel 1模式,查看第16项

其中:

4.2. Centos6

可以输入1 S s single 这四个中的任意一个均可进入单用户模式 Centos各种故障插图10

4.3. Centos7

在linux16后面添加systemd.unit=multi-user.target然后按ctrl+x按键 即可让这一次启动进入


5. fstab 出现挂载错误

5.1. 第一种情况

挂载配置文件写入错误 查看挂载博客中的详细解释,这里不再赘述。

5.2. 第二种情况:

如何解决piix4_smbus不能使用解决办法

5.2.1. 错误提示:

Centos各种故障插图11

5.2.2. 解决思路:

如果是虚拟机练习时出现这个问题

则原因是挂载的cd或者其他移动磁盘,自己用磁盘文件当做磁盘或者swap分区的文件等等,找不到路径 无法挂载

5.2.3. 解决步骤(详细看6中步骤)

  1. 虚拟机右下角CD配置手动更改挂载的位置 重启虚拟机即可解决
  2. 修改fstab文件,取消挂载(注释掉)自己创建的各种ISO文件,文件模拟分区,文件模拟swap等等。
  3. reboot

6. Linux中开机出现“piix4_smbus 0000:00:07.3: SMBus Host controller not enabled”问题解决方式

  1. 查明装入模块的名字:lsmod | grep i2c

  2. 将该模块列入不装入名单:vim /etc/modprobe.d/blacklist.conf

在文件最后一行加:blacklist i2c_piix4

  1. 重新生成引导文件:sudo update-initramfs -u -k all

  2. 重启:reboot

6.1. 更多参看


7. grub.conf中 initrd 和 kernel 项前后顺序写反了:

7.1. 错误提示:

就是英文表示他俩顺序反了

7.2. 解决思路:

调换顺序即可

7.3. 解决步骤:

简单点:可以不用挂壁光盘模式,直接esc键进入选择菜单模式,然后按e编辑,用d删除initrd这一行并用o键删重新添加这一行,以实现调换顺序的目的,然后启动。(或者也可以在这里按c键进入命令行模式,然后直接输入kernel,root,initrd进入系统)

  • 注意启动之后进入系统仍需要修改/boot/grub/grub.conf文件为正确才行,上面的操作是在内存中的临时性修改,下次启动如若不修改文件正确还是会这样。 因此还是直接进入光盘模式把文件修改正确一步到位更加方便!

8. 启动盘MBR分区表64字节分区信息错误

8.1. 错误表现形式:

硬盘直接无法挂载,没有分区格式,启动时启动一半便卡住
Centos各种故障插图12

8.2. 解决思路:

只能靠之前备份过的分区表来恢复此64字节的数据了
可以全部备份512字节,也可以只备份447到510字节的数据(注意地址比字节数少1,因为从0地址开始的
建议两个都备份,如果只是分区坏了则还原的时候只修复分区信息即可。

8.3. 解决步骤:

  1. 删除硬盘的的447到510字节的DPT分区信息,人为制造故障;
    • 同时别忘记备份DPT数据信息到另外的机器或设备上
# dd if=/dev/sda of=/data/mbr_DPT bs=1 count=64 skip=446 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.000511148 s, 125 kB/s # hexdump -C /data/mbr_DPT # 查看并对比数据 # hexdump -C -n 512 /dev/sda # 查看并对比数据 # dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.000474942 s, 135 kB/s # scp /data/mbr_DPT 其他主机的IP:/data/ 例如:scp /data/mbr_DPT 192.168.100.52:/data/ # reboot
  1. 进入光盘救援,注意要跳过硬盘的检测(因为无法挂载)

  2. lsblk或者f(g)disk -l /dev/sda等查看硬盘信息 Centos各种故障插图13

  3. 给网卡配置IP地址

    • 由于光盘救援模式并不启动网卡,因此需要从网络拷贝文件的时候,可临时配一个IP地址,这样才能连通内网网络
    ifconfig 网卡名(ens33) IP地址/mask 例如 ifconfig ens33 192.168.100.51/24 或者ip a a 192.168.100.51/24 dev ens33

    Centos各种故障插图14

  4. 从网络或者其他设备scp备份过的分区64位字节数据

    scp 192.168.100.52:/data/mbr_DPT .
  5. 还原数据

    dd if=mbr_DPT of=/dev/sda bs=1 [count=64] seek=446
  6. 重启


9. 启动盘的前MBR 分区表446字节错误

  • 注意:此错误和后面的错误情况的显示情况类似,如果不知道详细错误原因,因此用了grub-install命令之后,要按照后面的解决步骤来解决问题,只有知道仅仅是446字节错误的情况下才可按照下面的步骤较少的方法操作。

9.1. 错误提示:

正如分析所示,前面446字节错误,也就是相当于失去了grub的stage1阶段的代码,相当于此硬盘并不会被当做启动设备;

此时如果有光盘挂载的话则直接进入光盘模式(因为启动盘的grubstage1错误),没有的话继续寻找下一个根据BIOS顺序设置的启动设备

9.2. 解决思路:

光盘救援模式重新恢复grub1即可 注意在这里只是无法启动,分区表仍然存在,则硬盘的分区能够直接挂载(光盘启动就能检测到并挂载,文件系统也没有被破坏)。

9.3. 安装grub方式(后续的其他故障情况也都会用到):

  1. grub-install:非交互式
  • 安装grub stage1stage1_5/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
  • 命令:grub-install [--root-directory=DIR] /dev/DISK
    • 注意如果boot文件夹和不在根文件夹下面,也就是说boot不是/boot 而是在其他的文件夹下,则要写上boot文件夹所在的上级目录,如果就在根下面则不用写了。这一点别忘了.
    • 更多的详细信息关于--root-directory=DIR(grub1代参数,Centos6用)或--boot-directory=DRI(grub2代参数,Cneots7用)直接查看man帮助(6和7不同,7是2代grub,且可以GPT EUFI启动,man grub[2]-install
  1. grub:交互式
grub> root (hd#,#) grub> setup (hd#)
- 注意,交互式修复只能是下面三种情况都满足的情况下才能使用(一般也只能是Centos6之前使用,Centos7本来就没有备份,只能用grub2-install命令进行修复)
  1. /boot文件夹还存在
  2. 分区表(446字节后面64字节)没有出现问题
  3. /boot文件夹内有grub1和grub1.5阶段的备份文件

9.4. 解决步骤:

9.4.1. Centos6(交互式修复)

  1. 使用dd命令人工制造错误
    # dd if=/dev/zero of=/dev/sda bs=1 count=446
  2. 进入光盘救援模式
  3. 输入grub(无需切根) 在交互式模式下进行恢复(仅支持/boot下grub文件夹中的备份文件没有丢失,否则要用grub-install)
  4. 选择依靠恢复文件的boot文件夹的目录
    grub > root (hd0,0)
  5. 选择安装446字节MBR位置
    grub > setup(hd0)
  6. 退出 (注意小括号前面有个空格)
    grub > quit
  7. 退出grub后,在命令行输入sync命令强制写入磁盘
    sync
  8. 最后reboot.

Centos各种故障插图15

9.4.2. Centos7(只能用命令修复)

  1. 使用dd命令人工制造错误
    # dd if=/dev/zero of=/dev/sda bs=1 count=446
  2. 进入光盘救援模式
  3. 必须切割到原来的硬盘根
    chroot /mnt/sysimage
  4. 然后用下面命令修复446字节
    grub2-install /dev/sda
  5. 输入几次sync命令
  6. 重启即可

Centos各种故障插图16

9.5. 更方便并且更可靠的方式则是利用install安装修复grub,无需依赖grub文件夹中备份文件

  1. 进入光盘救援模式
  2. 切换根
  3. 执行命令grub-install /dev/sda 等待
  4. 输入几次sync命令
  5. 成功之后重启即可
  • 注意以上是在stage2中没错误的情况下的命令,因为install也不能修复grub.conf文件,仍需手写它。

9.6. 5.3有一种特殊情况:

就是计算机启动状态下运行了grub-install命令,然后把boot/grub文件夹下的grub.conf留下,其他的文件删除。在这种情况下表面上没错,但是却无法启动。会显示error 15错误,在这种情况下也只能按照上面的方式重新修复一次


10. MBR 分区表512全部错误

10.1. 解决思路:

先恢复分区表66位,再按上面方法恢复446字节grubstage1即可。


11. /boot下grub文件夹丢失

11.1. 错误显示:

error 15 (或者是进入了grub>的交互式界面,表明grub stagr2已经加载但是缺失了grub.conf文件)

Centos各种故障插图17

11.2. 解决思路:

恢复grub文件目录以及下面的grub.conf文件

11.3. 操作步骤:

  1. 人为删除/boot/grub文件夹

  2. 如果开机后是直接进入了grub>界面,(或者可开机后按任意键,然后按c键进入命令行)则可以直接补入grub.conf中kernel root initrd 的内容 (此方法为临时启动,启动后仍需要恢复文件,见下图)

Centos各种故障插图18

  • 注意启动之后别忘记修复好grub文件夹和grub.conf文件。

如果error 15则:

  1. 光盘救援模式
  2. (不确定原因可以先按照上一个错误解决的第二个方法用,grub-install /dev/sda,然后再从这一步开始执行,如果知道是grub文件夹丢失原因造成的问题,则)手动创建grub目录和grub.conf文件,注意位置要在mnt原来的系统根boot目录下。
  3. 书写格式参考下面,只需要写重要的四行即可(可用nano命令):
    • 注意其中root=UUID=XXXX这里的UUID是根分区/(一般是/dev/sda2)的UUID,如果不知道是多少可以先查看一下再输入,或者先用/dev/sda2代替(查看上面的,等进入系统之后再查看修改
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu # password title CentOS 6 (2.6.32-754.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=d5db5e08-dc6d-4b6e-84fc-7e490e44ba0c rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-754.el6.x86_64.img
  1. sync,然后重启即可。

11.4. 注意点:

  1. 那个是e(小写字母l)6,而不是e 16!
  2. 在开机界面修改的都是无法保存的,开机后一定要再次修改文件才可。 6.10标准可这样写:
default=0 timeout=5 hiddenmenu :前三项要写在title的前面,写进去会出错 title Centos 6 root (hd0,0) kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=/dev/sda2 initrd /initramfs-2.6.32-754.el6.x86_64.img

12. MBR 446字节(或者512字节)以及gurb文件夹全部丢失错误

12.1. 错误提示:

因为开机找不到启动设备,则开机后它会按照顺序寻找启动设备。如若有光盘挂载则直接进入光盘中。

12.2. 解决思路:

(如若512字节,则先恢复备份过的分区表)可以用grub-install命令直接恢复stage1(MBR446字节) stage1.5(第一个扇区之后的装有若干个文件系统驱动文件的扇区)以及stage2(除了grub.conf文件之外)的文件,然后手动写好grub.conf文件。

12.3. 解决步骤(假设分区表已经恢复,硬盘可以挂载了):

  1. 进入光盘救援模式
  2. 切换根chroot /mnt/sysimage
  3. grub-install /dev/sda (如若boot不在root下,指明boot所在的上一级目录)
  4. 进入/boot/grub文件夹中,手动修改grub.conf文件(可按照上面的格式来写)
    • 小技巧:可以在vim中用r!ls /boot/vmlinuz-VERSION /boot/initramfs-VERSION.img 的方式读入内核和initrd文件名,以及root=UUID 可用r! blkid /dev/sda2命令读入,以免不知名称如何手写。
  5. reboot

13. MBR 446 (或512)字节崩坏,boot整个目录丢失

13.1. 错误提示:

同上,但如果仅仅是boot丢失,则会类似grub文件夹丢失显示error 15

13.2. 解决思路

(先恢复分区表),进入光盘恢复模式后要先恢复boot目录中的必要文件,然后安装grub。其中1.内核文件(从光盘中直接拷贝或者重新安装内核包)2.虚拟文件系统创建(mkinitrd –help)3.grub文件夹(主要是grub.conf要在install之后手动书写)

13.3. 解决步骤:

  1. 进入光盘救援模式
  2. 切换根chroot /mnt/sysimage
  3. 进入boot文件夹(/dev/sda1),拷贝光盘中的内核文件vmlinuz,然后根据此内核文件制作initramfs.img文件,此时可以不再写版本了(不过注意grub.conf中也要相对应不写版本号了)
  • 不写版本号制作initrd:mkinitrd /boot/initramfs.img `uname -r` 3.2 也可以直接rpm -ivh 光盘挂载点/Packages/kernel-VERSION.rpm –force –nodeps 安装内核文件包
  1. grub-install /dev/sda修复1阶段和1.5,部分2阶段
  2. 进入grub文件夹,修改grub.conf文件
  • 小技巧同上,不过这里要写上面安装或者复制后的内核和虚拟文件系统的文件名(如果上面没写版本,则这里也无需再写,)
  • root=UUID=XXX 也可这样写,注意UUID后面的不加引号,用blkid命令读入UUID
  1. reboot即可

14. 内核img文件错误或者丢失

14.1. 错误显示:

unable to mount root fs on unkonwn- block(0,0)

错误提示状态Centos6:

Centos各种故障插图19

错误提示状态Centos7:

Centos各种故障插图20

14.2. 解决思路:

重新生成img文件或者从备份中(完全一样的安装机器中相同的img文件或者说之前对/boot文件夹有过备份)恢复它

14.3. 解决步骤

  1. 进入光盘救援模式
  2. 切换根目录到原系统根目录下chroot /mnt/sysimage (需要提前用lsblk查看在哪)
  3. 利用mkinitrd /boot/initramfs-$(uname -r).img $(uname-r) 命令重新生成initramfs文件;
    • 如果原img文件存在但是错误需要再加上--force。,如果丢失则不需要加上它。
    • 或反向单引号也行:注意第二个参数是内核版本号
      mkinitrd /boot/initramfs-\`uname -r\`.img \`uname-r\`
  4. 此时修复完毕重启即可

15. 内核执行文件vmlinuz错误或者丢失

15.1. 错误显示:

file kernel-Version not found

Centos各种故障插图21

15.2. 解决思路:

从光盘中或者相同版本机器中拷贝一份到原目录下即可(注意光盘中拷贝时需要更改名称,因为它不含有版本信息)

15.3. 解决步骤:

  1. 进入光盘救援模式
  2. 找到光盘挂载的位置(/dev/sr0)和原本根挂载的位置
  3. cp 光盘挂载位置
    cp /isolinux/vmlinuz /mnt/sysimage/boot/ vmlinuz-\`uname -r\`
  4. 重启

16. 开机启动状态故障(inittab中设置运行模式错误不断重启或者关闭)

16.1. 错误显示:

要么不断重启(6) ,要么开机就关机(0)

16.2. 解决思路:

将默认启动模式设置正确即可,(可以不用光盘救援模式,因为这个问题很简单)

Centos6:将/etc/inittab文件改正确

Centos7:利用systemctl命令修改启动模式

16.3. 解决步骤

16.3.1. Centos6:

  1. 开机运行至下图画面按任意键,进入选择栏 Centos各种故障插图22
  2. 然后按a按键,输入此次开机临时进入的模式(就是/etc/inittab下的6种模式),这里选择1或者2,3都可以,然后按回车 Centos各种故障插图10
  3. 进入之后修改/etc/inittab文件正确即可

16.3.2. Centos7:

  1. 开机进入选择栏画面
  2. 按e按键进入grub.cfg的编辑界面
  3. 在linux16后面添加systemd.unit=multi-user.target然后按ctrl+x按键(相当于回车) 即可让这一次启动进入
  4. 进入系统之后仍要修改默认启动模式为正确的,用systemctl set-default multi-user.target

Centos各种故障插图23

如果上面的操作失败的话,Centos7会自动进入救援模式,在这里面重新用命令systemctl set-default muiti-user.target设置一下启动模式为也可。

17. 开机启动服务(service,在/etc/init.d中的)加载故障卡住

17.1. 错误显示:

starting 服务名 (就卡在这种状态下,这一行前面可能有许多staring 服务名 [OK])

17.2. 解决思路:

跳过此服务启动,本次启动不启动此服务。等进入系统之后查找此服务错误原因,修正后再开机启动它

17.3. 解决方法:

  1. 卡主之后重启电脑(可按ctrl+alt+delete,如果这个被禁用了则想其他方法),然后进入开机启动画面按esc按键
  2. 进入之后按a,然后输入1,单用户启动。(利用单用户启动基本上不会启动任何守护进程的特性来跳过卡住的服务的启动过程)
  3. 利用chkconfig --list 服务名 命令来查看卡住的服务的错误原因并修复。如果短时间内无法修复,则先利用chkconfig 服务名 off 命令先关掉此服务开机启动,然后正常启动计算机
  4. 正常启动后再慢慢寻找原因修复服务,先保证计算机能启动并且提供其他的正常业务进行。

18. 终极破坏(分区和LVM逻辑卷混用环境下):fstab丢失;(MBR 512字节破坏,主要是分区表破坏);boot目录丢失

18.1. 错误显示:

如若先不考虑512字节损坏问题,则开机后找不到grubstage2,有可能直接进入gurb命令行模式(grub >) ,或者显示error 15错误 如若考虑512字节错误,则直接无法引导,同上。

18.2. 解决思路和步骤分析:

先不考虑512字节(主要是分区表),它就按照备份恢复的方法来恢复即可。注意分区恢复一定是在任何操作之前的操作,包括下面的操作之前要先恢复备份的分区表。

  1. 后面的解决方案在前面已经提到过,主要是fstab的问题。因为找不到挂载关系,无法挂载各个分区以及各个逻辑卷,就算进入光盘模式也无法修复。因此主要就是想办法修复fstab
  2. 在这里进入光盘模式后主要用fdisk -l ; df ;blkid;lvs;vgs;pvs等等命令查看逻辑卷以及分区信息。因此工作中的逻辑卷在最开始创建的时候就一定要写清楚卷名或者label(比如lv_boot、lv_root、lv_swap、lv_data、lv_home等等,没写好的话工作中最好用lvrename改名),这样才能想办法恢复fstab,不然就就算是神也救不了,不知道逻辑卷到底对应的挂载关系是什么.
    • 这里测试用的查看到信息为的boot分区直接就是本地硬盘第一个分区/dev/sda1 ,而/dev/sda2是物理卷,这个卷组分出了三个逻辑卷分别为home,root和swap
  3. 查看信息知道逻辑卷对应的挂载关系是什么之后,逻辑卷仍然无法使用,因为没有启动rc.sysinit脚本,逻辑卷默认不会激活,会显示NOT available状态(可在lvdisplay中看到)。因此要先激活它们,可以用vgchange -ay来激活LVs

image

4.激活之后就可挂载了,此时创建一个临时文件夹,把lv_root卷挂载到此文件夹上,然后进入etc,手动书写fstab.例如

  • 小技巧2:可以用ls 文件 >> fstab的方式追加重定向文件名到文件中,上面的书写grub也可这样用(因为没有VIM命令,vi总是出问题)
  • 注意挂载的时候要提前查并获知文件格式等。
  • 注意挂载的时候可能提示要指定文件系统,这样的话可用mount -t type.(分区表恢复后重启可以解决这个问题,此时不能跳过检测硬盘,直接continue,才能继续下一步切换根并grub-install)
  • 切换根之后可以用vim命令,注意别把fstab装到光盘启动盘中去了
/dev/sda1 /boot ext4 defaults 0 0 /dev/VolGroup/lv_root / ext4 defaults 0 0 /dev/VolGroup/lv_home /home ext4 defaults 0 0 /dev/VolGroup/lv_swap swap swap defaults 0 0
  1. fstab写好之后,重新进入救援模式让它生效并挂载好各个分区信息。然后此时便可以按照前面的解决方案修复grub以及boot文件夹了。
    • 注意书写grub.conf的时候 root=/dev/VolGroup/lv_root ,不是sda2了

19. centos7中的boot文件夹直接删除

19.1. 错误提示:

Centos各种故障插图25 直接进入了grub rescue> 命令行(说明进入了grubstage2阶段)

19.2. 解决思路:

类似6中的boot被删除的修复操作即可,就是命令和细节稍有变化

19.3. 解决步骤:

  1. 重启进入光盘救援模式

  2. 切根,挂载光盘

  3. 利用rpm -ivh Package/kernel-VERSION --nodeps --force的安装内核的方式拷贝出来vmlinuz-VERSIONinitramfs_VERSION.img文件,注意安装的时候需要时间等待。

    • 这一步也可以用网络yum安装
    • 比如这里安装一个最新版的内核
    # ip a a 192.168.0.120/24 dev ens37 # route add -net 0.0.0.0/0 gw 192.168.0.1 dev ens37 # vim /etc/resolv.conf nameserver 192.168.0.1 # yum makecache # yum install kernel #(这里如果以前安装过新版本的内核,则用历史命令 `yum history undo #编号` 之后重新安装;同时注意这里要配合自己的yum脚本)
  4. 然后grub2-install /dev/sda 安装,当然此时还缺少gurb.cfg文件

  5. 然后利用grub2-mkconfig -o /boot/grub2/grub.cfg 生成它

  6. sync ,reboot即可

grub2中的: --boot-directory=DIR install GRUB images under the directory DIR/grub2 instead of the boot/grub2 directory

Centos各种故障插图26

Centos各种故障插图27

Centos各种故障插图28

19.4. A.注意点:

  1. 没有lsblk命令,可用blkid ,fdisk -l ,df 命令代替( 自己弄一个U盘linux盘来修复也行,题外话了)
  2. 逻辑卷的各种命令来查看逻辑卷信息,lvs lvdisplay vgs vgdisplay pvs pvdisplay
  3. 使用lvrename命令更改逻辑卷名
    lvrename /dev/VolGroup00/LogVol00 /dev/VolGroup00/lv_root lvrename /dev/VolGroup00/LogVol01 /dev/VolGroup00/lv_swap

19.5. B.由此可看出重要的,需要备份的文件

  1. MBR分区表512字节
  2. /boot整个文件夹(img,vmlinuz,grub文件夹中grub.conf)
  3. /etc整个文件夹(/etc/fstab /etc/inittab等很多配置文件)
最后修改日期: 2021年7月9日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。