添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

今日开机发现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 5364drwx------. 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.CSVdrwx------. 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 Blocksaved_entry=16611cc1c45441e1a5aa9fa702a005ff-4.18.0-147.5.1.el8_1.x86_64kernelopts=root=UUID=5d5f3d63-4aed-45f1-85a9-e875c29c114a ro resume=UUID=ddeaf98e-c239-46be-95c3-d36156c1b0f6 rhgb quietboot_success=0boot_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.efiAdding boot menu entry for EFI firmware configurationdone

可生成grubenv如下,会有一些参数不全哦。

# GRUB Environment Blockkernelopts=root=UUID=5d5f3d63-4aed-45f1-85a9-e875c29c114a ro resume=UUID=ddeaf98e-c239-46be-95c3-d36156c1b0f6 rhgb quiet################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
  1. 遇到问题要冷静分析,要学会分析和解决问题的能力,这个能力很重要。

  2. 系统地学习,掌握某个领域的知识是很有必要的。解决问题的思路和过程,取决于你对系统的了解!

注:本文原创,未经许可不得在任何平台转载。如需转载,与作者联系~

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