[步骤] Linux 进入救援模式后的操作建议

步骤一:查看系统日志判断是什么原因导致系统进入了紧急模式

# journalctl -xb

步骤二:判断软件的哪些文件发生了改变或者有缺失

# rpm -Va

步骤三:查看关键的模块是否还在

3.1 查看所需要的模块是否还在

3.1 查看所有的模块是否还在
# depmod -a
3.2 查看所需要的模块是否还在
# lsmod | grep bonding

(补充:这里以查看 bonding 模块是否还在为例)

3.2 尝试加载所需要的模块

# modprobe bonding

(补充:这里以尝试加载 bonding 模块为例)

步骤四:尝试配置临时 IP 地址和临时网关

4.1 查看当前网卡是否接入网络

# ethtool eth0

(补充:这里以查看 eth0 网卡是否接入网路为例)

4.2 尝试配置临时 IP 地址

# ifconfig eth0 192.168.0.2/24

或者:

# ip a add 192.168.0.2/24 dev eth0

(补充:这里以给 eth0 网卡添加临时 IP 地址 192.168.0.2/24 为例)

4.3 尝试配置临时网关

# route add default gw 192.168.0.1

或者:

# ip route add default via 192.168.0.1

4.4 查看配置的临时 IP 地址和临时网关

4.4.1 查看配置的临时 IP 地址
# ip a s
4.4.2 查看配置的临时网关
# route -n

[步骤] 在不能进系统的情况下 GRUB 开机菜单的显示 (进入安全模式或者恢复模式) (Ubuntu 版)

正文:

步骤一:取消 GRUB 开机菜单的显示

1.1 修改 /etc/default/grub 配置文件

# vim /etc/default/grub

添加以下内容:

......
GRUB_TIMEOUT_STYLE=hidden
......

添加后的案例:

......
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=" "
......

1.2 让刚刚设置的参数生效

# update-grub

步骤二:在不能进系统的情况下显示 GRUB 开机菜单

2.1 进入 GRUB 命令行

重启系统后按下 “E” 键不放

2.2 进入 GRUB 命令行以后以正常模式启动系统

grub> normal

2.3 启动后 GRUB 开机菜单就会显示了

(步骤略)

(注意:有时候要重复步骤 2.1 和 2.2 才能显示 GRUB 开机菜单)

2.4 在拯救模式下进入 root 模式

此时选择以下选项并按下 “回车” 键,就可以通过拯救模式进入 root 模式了

root              Drop to root shell prompt

参考文献:

https://askubuntu.com/questions/381613/how-to-return-from-grub-prompt-to-the-grub-menu
https://blog.csdn.net/geekqian/article/details/82912518

[步骤] Linux 救援模式的进入

步骤一:挂载官方镜像

(步骤略)

步骤二:登录拯救模式

2.1 选择通过光盘启动

(步骤略)

2.2 进入拯救模式

(步骤略)

2.3 登录拯救模式

rescue login:root

步骤三:在救援模式确定系统的根 “/” 目录分区

(步骤略)


补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定

步骤四:在救援模式将系统的分区挂载到救援模式的 /mnt 目录

4.1 在救援模式将系统的根 “/” 分区挂载到救援模式的 /mnt 目录

tty1:rescue:~ # mount <root spartition> /mnt


补充:
1) 如果是物理分区,系统的根 “/” 分区就在救援模式的 /dev/ 目录里,例如救援模式的 /dev/sda1
2) 如果是逻辑分区,Rocky Linux & RHEL 的系统根 “/” 分区就是救援模式里的 /dev// 例如救援模式里的 /dev/vg/lv,openSUSE & SLES 的系统 “/” 分区就是救援模式里的 /dev/mapper/- 例如救援模式里的 /dev/mapper/vg-lv

4.2 在救援模式将救援模式的 /dev 目录关联到救援模式的 /mnt/dev 目录

tty1:rescue:~ # mount --rbind /dev /mnt/dev


补充:
1) 此时所有对救援模式的 /mnt/dev 目录的访问都会变成对救援模式的 /dev 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.5 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev run; do mount --rbind /$i /mnt/$i ; done

4.3 在救援模式将救援模式的 /proc 目录关联到救援模式的 /mnt/proc 目录

tty1:rescue:~ # mount --rbind /proc /mnt/proc


补充:
1) 此时所有对救援模式的 /mnt/proc 目录的访问都会变成对救援模式的 /proc 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.5 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev run; do mount --rbind /$i /mnt/$i ; done

4.4 在救援模式将救援模式的 /sys 目录关联到救援模式的 /mnt/sys 目录

tty1:rescue:~ # mount --rbind /sys /mnt/sys


补充:
1) 此时所有对救援模式的 /mnt/sys 目录的访问都会变成对救援模式的 /sys 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.5 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev run; do mount --rbind /$i /mnt/$i ; done

4.5 在救援模式将救援模式的 /run 目录关联到救援模式的 /mnt/run 目录 (选做)

tty1:rescue:~ # mount --rbind /run /mnt/run


补充:
1) 此时所有对救援模式的 /mnt/run 目录的访问都会变成对救援模式的 /run 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.5 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev run; do mount --rbind /$i /mnt/$i ; done

步骤五:将当前的根 “/” 目录从救援模式的根 “/” 目录切换到系统的根 “/” 目录

5.1 将当前的根 “/” 目录从救援模式的根 “/” 目录切换到系统的根 “/” 目录

tty1:rescue:~ # chroot /mnt

(补充:这里以 /mnt 作为系统根 “/” 目录为例)

5.2 在系统模式挂载所有需要开机自动挂载的目录

bash-4.3# mount -a

5.3 在系统模式确认当前根 “/” 目录下的目录

bash-4.3# ls
bin boot dev home lib lib64 mnt opt proc root run sbin selinux srv sys tmp usr var

(补充:这里显示的是常见的 Linux 根 “/” 目录 下的目录)

步骤六:重启系统

6.1 从当前系统的根 “/” 目录切换回救援模式的根 “/” 目录

bash-4.3# exit

6.2 重启系统

tty1:rescue:~ # reboot

[步骤] Linux GRUB2 排错模式的开启

步骤一:修改 /ETC/DEFAULT/GRUB 配置文件

# vim /etc/default/grub

在这一行里:

GRUB_CMDLINE_LINUX="......"

添加:

GRUB_CMDLINE_LINUX="...... systemd.default_timeout_start_sec=500s"

步骤二:使刚刚的修改生效

# grub2-mkconfig -o /boot/grub2/grub.cfg