今日开机发现CentOS8.1系统启动不了了!!!回想起昨天更新了一些系统包,当时更新了没有重启,没有检测更新的系统是否正常,是疏忽大意了!
仔细看看日志,发现是Switch Root出错了,如下图示:
提示有错误日志生成,简单看了下,想想还是先弄到U盘吧,后面再跟进下。
插入U盘,没有检测到设备,执行exit,反复2次后识别到了sda。如下图示:
接着把U盘挂载到/sysroot目录,提示U盘有数据要检测下,,执行fsck检测好后,把日志文件/run/initramfs/rdsosreport.txt复制到U盘下,接着卸载U盘。如下图示:
想想试下手动挂载CentOS8系统盘到/sysroot试一下,找到CentOS8对应的分区挂载。如下图示:
接着执行exit,系统正常启动了!还好问题不大。
进来系统后,想想分析下原因,从根本上解决吧。。。
打开U盘里面的日志文件rdsosreport.txt,找到错误片段日志分析:
[ 79.300190] xxx systemd[1]: Reached target Switch Root.
[ 79.300600] xxx systemd[1]: Starting Switch Root...
[ 79.304948] xxx systemctl[2113]: Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree. os-release file is missing.
[ 79.305456] xxx systemd[1]: initrd-switch-root.service: Main process exited, code=exited, status=1/FAILURE
[ 79.305593] xxx systemd[1]: initrd-switch-root.service: Failed with result 'exit-code'.
[ 79.305789] xxx systemd[1]: Failed to start Switch Root.
[ 79.305811] xxx systemd[1]: initrd-switch-root.service: Triggering OnFailure= dependencies.
[ 79.306342] xxx systemd[1]: Starting Setup Virtual Console...
[ 79.364641] xxx systemd[1]: Started Setup Virtual Console.
[ 79.365205] xxx systemd[1]: Started Emergency Shell.
[ 79.365348] xxx systemd[1]: Reached target Emergency Mode.
[ 79.380910] xxx systemd[1]: Received SIGRTMIN+21 from PID 1675 (plymouthd).
看到关键一条记录:
Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree. os-release file is missing.
原因是root path没有挂载成功,/sysroot没有内容,找不到os-release文件。
想想会不会是系统的os-release文件没有了?打开/etc/centos-release文件,发现有内容,那不是这个文件的问题了!
[root@server ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
继续排查,到efi目录看看centos相关文件有没有问题?看到grubenv文件的大小,居然是为0,问题莫非就是它了?!
[root@server ~]# ls -al /boot/efi/EFI/centos/
total 5364
drwx------. 3 root root 4096 Feb 21 23:01 .
drwx------. 6 root root 4096 May 11 2019 ..
-rwx------. 1 root root 134 Jun 7 2019 BOOTX64.CSV
drwx------. 2 root root 4096 Feb 5 09:46 fonts
-rwx------. 1 root root 9570 Feb 13 22:08 grub.cfg
-rwx------. 1 root root 0 Feb 21 23:01 grubenv
-rwx------. 1 root root 1876872 Feb 5 09:46 grubx64.efi
-rwx------. 1 root root 1160136 Jun 7 2019 mmx64.efi
-rwx------. 1 root root 1205152 Jun 7 2019 shimx64-centos.efi
-rwx------. 1 root root 1211224 Jun 7 2019 shimx64.efi
于是编辑grubenv文件,把以下内容添加进去。
# GRUB Environment Block
saved_entry=16611cc1c45441e1a5aa9fa702a005ff-4.18.0-147.5.1.el8_1.x86_64
kernelopts=root=UUID=5d5f3d63-4aed-45f1-85a9-e875c29c114a ro resume=UUID=ddeaf98e-c239-46be-95c3-d36156c1b0f6 rhgb quiet
boot_success=0
boot_indeterminate=0
################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
主要参数说明(千万别写错!):
saved_entry:是默认的引导项
kernelopts:
root填写/分区的UUID,
resume填写swap分区的UUID
重新启动,正常启动了,没有再报错。问题解决了!
============
注:如果不懂如何编辑此文件,可以重新生成grub,执行如下:
[root@server EFI]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done
可生成grubenv如下,会有一些参数不全哦。
# GRUB Environment Block
kernelopts=root=UUID=5d5f3d63-4aed-45f1-85a9-e875c29c114a ro resume=UUID=ddeaf98e-c239-46be-95c3-d36156c1b0f6 rhgb quiet
################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
-
遇到问题要冷静分析,要学会分析和解决问题的能力,这个能力很重要。
-
系统地学习,掌握某个领域的知识是很有必要的。解决问题的思路和过程,取决于你对系统的了解!
注:本文原创,未经许可不得在任何平台转载。如需转载,与作者联系~
centos7在开机的时候一直停留在“starting switch Root...........”,不能正常开机。
报错信息显示“failed to execute /bin/sh,give up :no such file or dictionary”和“/bin/sh: /usr/sbin/sulogin:no such file or dictionary"
原因分析:
进入u盘启动选择救援模式,发现其中的/lib64 被修改过。
解决方法:
进入u盘救援模式:
这个问题是因为firewalld是由python2.7开发的,而我们的系统装了其他版本的python并且修改了默认python的路径为/usr/bin/python,
只需要将/usr/sbin/firewalld 文件的第一行改为/usr/bin/python2.7就可以解决问题。
1、在启动后引导界面按 e 进行编辑
linuxefi /p_w_picpaths/pxeboot/vmlinuz inst.stage2=hd:LABEL=centos(U盘卷标) quiet
initrdefi /p_w_picpaths/pxeboot/initrd.img
2、修改后,按Ctrl + X 继续执行,可以看到U盘路径一般为/dev/cen...
修改方法:
在启动界面安道装界面 按 E 键
将版vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64
rd.live.check quiet 改为:vmlinuz initrd=initrd.img
inst.stage2=hd:/dev/sdb4 quite 然后权 ctrl+ x 重新...
今天在centOS 7下更改完静态ip后发现network服务重启不了,翻遍了网络,尝试了各种方法,终于解决了。
现把各种解决方法归纳整理,希望能让后面的同学少走点歪路。。。
首先看问题:执行service network restart命令后出现下面的错误:
Restarting network (via systemctl): Job for network.servic