报错代码
X11 forwarding request failed on channel 0
解决方法
如果是 CentOS Linux 7 & RHEL 7 & Rocky Linux 8 & RHEL8:
# yum install xauth
如果是 Rocky Linux 8 & RHEL 8:
# dnf install xauth
如果是 openSUSE & SLES:
# zypper install xauth
X11 forwarding request failed on channel 0
如果是 CentOS Linux 7 & RHEL 7 & Rocky Linux 8 & RHEL8:
# yum install xauth
如果是 Rocky Linux 8 & RHEL 8:
# dnf install xauth
如果是 openSUSE & SLES:
# zypper install xauth
# cd ~/.ssh
# ssh-keygen -b 4096 -t rsa -C "<content>" -f "<public private key name>"
# for i in `cat <server list>`;do echo $i;ssh-copy-id -i ~/.ssh/<public private key name>.pub $i;echo;done
# mv id_rsa id_rsa.backup
# cp <public private key name> id_rsa
# mv id_rsa.pub id_rsa.pub.backup
# cp <public private key name>.pub id_rsa.pub
# for i in `cat <server list>`;do echo $i;ssh $i "sed -i /<old SSH key content>/d ~/.ssh/authorized_keys";echo;done
# for i in `cat <server list>`;do echo $i;ssh $i "cat ~/.ssh/authorized_keys | egrep -v '<content>'";echo;done
(步骤略)
(步骤略)
(步骤略)
rescue login:root
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
tty1:rescue:~ # mount <root spartition> /mnt
(
补充:
1) 如果是物理分区,系统的根 “/” 分区就在救援模式的 /dev/ 目录里,例如救援模式的 /dev/sda1
2) 如果是逻辑分区,Rocky Linux & RHEL 的系统根 “/” 分区就是救援模式里的 /dev/<volume group>/<logical volume> 例如救援模式里的 /dev/vg/lv,openSUSE & SUSE 的系统根 “/” 分区就是救援模式里的 /dev/mapper/<volume group>-<logical volume> 例如救援模式里的 /dev/mapper/vg-lv
)
tty1:rescue:~ # mount --rbind /dev /mnt/dev
(
补充:
1) 此时所有对救援模式的 /mnt/dev 目录的访问都会变成对救援模式的 /dev 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /proc /mnt/proc
(
1) 补充:此时所有对救援模式的 /mnt/proc 目录的访问都会变成对救援模式的 /proc 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /sys /mnt/sys
(
1) 补充:此时所有对救援模式的 /mnt/sys 目录的访问都会变成对救援模式的 /sys 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /run /mnt/run
(补充:此时所有对救援模式的 /mnt/run 目录的访问都会变成对救援模式的 /run 目录的访问)
tty1:rescue:~ # chroot /mnt
(补充:这里以 /mnt 作为系统根 “/” 目录为例)
bash-4.3# mount -a
bash-4.3# ls
bin boot dev home lib lib64 mnt opt proc root run sbin selinux srv sys tmp usr var
(补充:这里显示的是常见的 Linux 根 “/” 目录 下的目录)
bash-4.3# mkdir /media
bash-4.3# mount /dev/dvd /media
bash-4.3# cp /media/suse/x86_64/rpm-4.11.2-16.21.1.x86_64.rpm .
(补充:这里以拷贝 rpm-4.11.2-16.21.1.x86_64.rpm RPM 文件 (软件包) 为例)
bash-4.3# mkdir pkg
bash-4.3# cd pkg
bash-4.3# rpm2cpio ../rpm-4.11.2-16.21.1.x86_64.rpm | cpio -ivd
(补充:这里以提取 rpm-4.11.2-16.21.1.x86_64.rpm RPM 文件 (软件包) 为例)
bash-4.3# cp bin/rpm /bin/
bash-4.3# exit
tty1:rescue:~ # reboot
https://www.suse.com/support/kb/doc/?id=000018770
/grub2/i386-pc/normoal.mod not found gpt
(步骤略)
(步骤略)
(步骤略)
rescue login:root
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
tty1:rescue:~ # mount <root spartition> /mnt
(
补充:
1) 如果是物理分区,系统的根 “/” 分区就在救援模式的 /dev/ 目录里,例如救援模式的 /dev/sda1
2) 如果是逻辑分区,Rocky Linux & RHEL 的系统根 “/” 分区就是救援模式里的 /dev/<volume group>/<logical volume> 例如救援模式里的 /dev/vg/lv,openSUSE & SUSE 的系统根 “/” 分区就是救援模式里的 /dev/mapper/<volume group>-<logical volume> 例如救援模式里的 /dev/mapper/vg-lv
)
tty1:rescue:~ # mount --rbind /dev /mnt/dev
(
补充:
1) 此时所有对救援模式的 /mnt/dev 目录的访问都会变成对救援模式的 /dev 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /proc /mnt/proc
(
补充:
1) 此时所有对救援模式的 /mnt/proc 目录的访问都会变成对救援模式的 /proc 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /sys /mnt/sys
(
补充:
1) 此时所有对救援模式的 /mnt/sys 目录的访问都会变成对救援模式的 /sys 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /run /mnt/run
(补充:此时所有对救援模式的 /mnt/run 目录的访问都会变成对救援模式的 /run 目录的访问)
tty1:rescue:~ # chroot /mnt
(补充:这里以 /mnt 作为系统根 “/” 目录为例)
bash-4.3# mount -a
bash-4.3# ls
bin boot dev home lib lib64 mnt opt proc root run sbin selinux srv sys tmp usr var
(补充:这里显示的是常见的 Linux 根 “/” 目录 下的目录)
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
bash-4.3# grub2-install <disk which GRUB2 in>
bash-4.3# grub2-mkconfig -o /boot/grub2/grub.cfg
bash-4.3# exit
bash-4.3# reboot
如果以上步骤都不起作用,且 /boot 是单独分区的话,则可能是 boot 分区的文件系统损坏,可以尝试以下补充:
1) 重复本文步骤五和之前步骤的内容
2) 将 /boot 目录里的内容全部拷贝出来
3) 取消挂载 /boot 目录的分区
4) 将挂载 /boot 目录的分区重新格式化成 ext4 格式
5) 格式化后分区的 UUID 会改变,所以需要更新 /etc/fstab 文件中挂载 /boot 目录分区的 UUID
6) 将格式化后的分区重新挂载 /boot 目录
7) 将刚刚从 /boot 目录拷贝出来的内容拷贝回 /boot 目录
8) 重复此文的步骤六
(注意:不建议使用 Btrfs 文件系统给 /boot 目录分区)
https://www.suse.com/support/kb/doc/?id=000018770
1) 系统无法被 ssh
2) 通过 console 口登录系统在输入密码时会卡住
3) 尝试将当前根 “/” 目录从救援模式的根 “/” 目录切换到系统的根 “/” 目录时会报错 “chroot: failed to run command #/bin/bash#: No such file or directory”
4) 重启系统后无法进入系统,并提示:/grub2/i386-pc/normoal.mod not found gpt
5)在救援模式显示 /boot 目录里的文件时,可能会发现此目录下只有 grub2 目录,而此 grub2 目录里也是空的
6) 在救援模式显示 /bin 目录时,会显示并无此目录
7) 在救援模式显示 /etc 目录里的文件时,可能会发现此目录下只有 lvm 文件
(步骤略)
(步骤略)
(步骤略)
rescue login:root
(步骤略)
(
补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定
)
tty1:rescue:~ # mount <root spartition> /mnt
(
补充:
1) 如果是物理分区,系统的根 “/” 分区就在救援模式的 /dev/ 目录里,例如救援模式的 /dev/sda1
2) 如果是逻辑分区,Rocky Linux & RHEL 的系统根 “/” 分区就是救援模式里的 /dev/<volume group>/<logical volume> 例如救援模式里的 /dev/vg/lv,openSUSE & SUSE 的系统根 “/” 分区就是救援模式里的 /dev/mapper/<volume group>-<logical volume> 例如救援模式里的 /dev/mapper/vg-lv
)
tty1:rescue:~ # ls /mnt
(补充:此时可以看到 /mnt 目录下有系统根 “/” 目录下的各个目录,例如 /etc /root 等)
tty1:rescue:~ # mount --rbind /dev /mnt/dev
(
补充:
1) 此时所有对救援模式的 /mnt/dev 目录的访问都会变成对救援模式的 /dev 目录的访问
2) 步骤 5.2、步骤 5.3 和步骤 5.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /proc /mnt/proc
(
补充:
1) 此时所有对救援模式的 /mnt/proc 目录的访问都会变成对救援模式的 /proc 目录的访问
2) 步骤 5.2、步骤 5.3 和步骤 5.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /sys /mnt/sys
(
补充:
1) 此时所有对救援模式的 /mnt/sys 目录的访问都会变成对救援模式的 /sys 目录的访问
2) 步骤 5.2、步骤 5.3 和步骤 5.4 也可以用以下命令代替:
tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done
)
tty1:rescue:~ # mount --rbind /run /mnt/run
(补充:此时所有对救援模式的 /mnt/run 目录的访问都会变成对救援模式的 /run 目录的访问)
tty1:rescue:~ # chroot /mnt
chroot: failed to run command #/bin/bash#: No such file or directory
(补充:这里以 /mnt 作为系统根 “/” 目录为例)
(注意:因为在使用 rm -rf /* 命令删过根 “/” 以后,/bin/bash 已经被删除,所以会报错:chroot: failed to run command #/bin/bash#: No such file or directory)
tty1:rescue:~ # ls /boot
grub2
tty1:rescue:~ # ls /boot
此步骤也可以通过以下方法实现:
tty1:rescue:~ # ls -l /mounts/mp_0001/boot
total 0
......grub2
tty1:rescue:~ # ls -l /mounts/mp_0001/boot/grub2
total 0
tty1:rescue:~ # ls /mnt/bin
ls: cannot access '/mnt/bin' : No such file or directory
tty1:rescue:~ # ls /etc/
lvm
tty1:rescue:~ # mkdir /mnt/bin
tty1:rescue:~ # mkdir /media
tty1:rescue:~ # mount /dev/dvd /media
tty1:rescue:~ # cp /media/suse/x86_64/bash-4.3-83.23.1.x86_64.rpm .
(补充:这里以拷贝 /media/suse/x86_64/bash-4.3-83.23.1.x86_64.rpm)
tty1:rescue:~ # mkdir bash
tty1:rescue:~ # cd bash
tty1:rescue:~ /bash # rpm2cpio ../bash-4.3-83.23.1.x86_64.rpm | cpio -ivd
(补充:这里以提取 bash-4.3-83.23.1.x86_64.rpm RPM 文件 (软件包) 为例)
tty1:rescue:~ /bash # ls
bin etc usr
tty1:rescue:~ /bash # cp -rpv bin/* /mnt/bin
'bin/bash' -> '/mnt/bin/bash'
'bin/sh' -> '/mnt/bin/sh'
tty1:rescue:~ /bash # ldd /bin/bash
tty1:rescue:~ /bash # mkdir /mnt/lib
tty1:rescue:~ /bash # mkdir /mnt/lib64
tty1:rescue:~ /bash # cp /lib/x86_64-linux-gnu/liblsp.so /mnt/lib
tty1:rescue:~ /bash # cp /lib/x86_64-linux-gnu/libtinfo.so.5 /mnt/lib
tty1:rescue:~ /bash # cp /lib/x86_64-linux-gnu/libd1.so.2 /mnt/lib
tty1:rescue:~ /bash # cp /lib/x86_64-linux-gnu/libc.so.6 /mnt/lib
tty1:rescue:~ /bash # cp /lib64/ld-linux-x86-64.so.2 /mnt/lib64
tty1:rescue:~ /bash # chroot /mnt
(补充:这里以 /mnt 作为系统根 “/” 目录为例)
bash-4.3# mount -a
bash-4.3# ls
bin boot dev home lib lib64 mnt opt proc root run sbin selinux srv sys tmp usr var
bash-4.3# history | less
bash-4.3# last | less
(补充:此时会显示最后登录系统的用户、登录时间、且可能最后 1 个登录系统的用户无退出时间)
(步骤略)
https://www.suse.com/support/kb/doc/?id=000018770