求助:Tumbleweed版本图形界面循环登录

今天不知道怎么搞的,笔记本重启之后,图形界面就一直登录不上。输入密码后,黑屏1秒左右,然后又回到登录页面。一直卡在登录页面,循环登录。

我试了下,Ctrl+Alt+F6 进入纯文本界面之后, 命令行可以正常登录,登录后再 startx 是可以正常进入图形界面的。并且图形界面能正常使用。

我注意到,卡住循环登录的界面和平时登录的界面不太一样,
这是平时的登录界面:


这是卡住的登录界面:

还有一点,就是当我切换到 Ctrl+Alt+F1时,看到了一些提示,但不太明白是什么意思。

我回忆了一下,今天好像也没做什么特别的操作,实在不知道是什么原因导致的。:disappointed_relieved:

感觉像是显卡驱动出了什么问题

1赞

谢谢!

刚才发生了个很神奇的事情。我昨天装了个intel的fortran编译器,为了用它,在~/.bashrc 加了一句

“. /opt/intel/bin/ifortvars.sh”

刚才病急乱投医,试着把这一句注释掉,然后重启一下,发现好啦!不知道为什么,哈哈。

总结一下:
我系统设置的是开机免登录。正常开机是直接进入桌面,而不出现登陆界面的。

我刚试了一下,这个错误可以复现,只要在 ~/.bashrc 或者 ~/.profile 里面加上上面这一句,开机后就会卡在登陆界面,进不去。要装intel全家桶的小伙伴以后要注意了。

这样又出现了一个矛盾:要用ifort编译,每次都要运行 /opt/intel/bin/ifortvars.sh 。如果把 “. /opt/intel/bin/ifortvars.sh” 放在 ~/.profile 或~/.bashrc 里面,开机又会出问题。无解:sweat:

那个sh文件里有啥呢?

1赞

大概是一些设置intel fortran编译环境的东西吧。。。没仔细读过:sweat:

内容如下:

#!/bin/sh
PROD_DIR="/opt/intel/compilers_and_libraries_2019/linux"
INTEL_TARGET_ARCH=intel64 # changed
INTEL_TARGET_PLATFORM=linux
INTEL_HOST_PLATFORM=linux # changed

COMPILERVARS_ARGV=$#
if [ ${COMPILERVARS_ARGV} -eq 0 ]; then
    if [ "$COMPILERVARS_ARCHITECTURE" != '' ]; then
        INTEL_TARGET_ARCH=$COMPILERVARS_ARCHITECTURE
    fi
    if [ "$COMPILERVARS_PLATFORM" != '' ]; then
        INTEL_TARGET_PLATFORM=$COMPILERVARS_PLATFORM
    fi
fi

while [ $# -gt 0 ]
do
    opt="$1"
    case $opt in
    -arch)
        shift
        INTEL_TARGET_ARCH="$1"
        shift
        ;;
    -platform)
        shift
        INTEL_TARGET_PLATFORM="$1"
        shift
        ;;
    *)
        INTEL_TARGET_ARCH="$1"
        shift
        ;;
    esac
done

if [ "${INTEL_TARGET_ARCH}" != "ia32" -a "${INTEL_TARGET_ARCH}" != "intel64" -o \
      "${INTEL_TARGET_PLATFORM}" != "android" -a \
      "${INTEL_TARGET_PLATFORM}" != "linux" -a \
      "${INTEL_TARGET_PLATFORM}" != "mac" -o \
      "${INTEL_HOST_PLATFORM}" = "Darwin" -a "${INTEL_TARGET_ARCH}" != "intel64" ]; then

    echo "compilervars.sh [-arch] <arch> [-platform <platform>]"
    echo ""
    echo "  <arch> must be one of the following:"
    if [ "${INTEL_HOST_PLATFORM}" != "Darwin" ]; then
        echo "      ia32           : Set up for IA-32 target."
    fi
    echo "      intel64        : Set up for Intel(R)64 target."
    echo "  <platform> must be of the following:"
    if [ "${INTEL_HOST_PLATFORM}" = "Darwin" ]; then
        echo "      linux          : Set to Linux* target."
        echo "      mac            : Set to macOS* target.(default)"
    else
        echo "      android        : Set to Android* target."
        echo "      linux          : Set to Linux* target.(default)"
    fi
    echo ""
    echo "If the arguments to the sourced script are ignored (consult docs"
    echo "for your shell) the alternative way to specify target is environment"
    echo "variables COMPILERVARS_ARCHITECTURE to pass <arch> to the script"
    echo "and COMPILERVARS_PLATFORM to pass <platform>"

    return 1
fi

if [ ${INTEL_TARGET_PLATFORM} = "mac" ]; then
    INTEL_TARGET_PLATFORM="linux"
fi

if [ ${COMPILERVARS_ARGV} -eq 0 ]; then
    #pass default values via COMPILERVARS_*
    if [ "$COMPILERVARS_ARCHITECTURE" = '' ]; then
        COMPILERVARS_ARCHITECTURE=$INTEL_TARGET_ARCH
    fi
    if [ "$COMPILERVARS_PLATFORM" = '' ]; then
        COMPILERVARS_PLATFORM=$INTEL_TARGET_PLATFORM
    fi
    INTEL_TARGET_ARCH=
    INTEL_TARGET_PLATFORM=
fi

if [ -e "${PROD_DIR}/daal/bin/daalvars.sh" ]; then
    . "${PROD_DIR}/daal/bin/daalvars.sh" ${INTEL_TARGET_ARCH}
fi

if [ -e "${PROD_DIR}/../../debugger_2019/bin/debuggervars.sh" ]; then
    . "${PROD_DIR}/../../debugger_2019/bin/debuggervars.sh" ${INTEL_TARGET_ARCH}
fi

if [ -e "${PROD_DIR}/tbb/bin/tbbvars.sh" ]; then
    . "${PROD_DIR}/tbb/bin/tbbvars.sh" ${INTEL_TARGET_ARCH} ${INTEL_TARGET_PLATFORM}
fi

if [ -e "${PROD_DIR}/pstl/bin/pstlvars.sh" ]; then
    . "${PROD_DIR}/pstl/bin/pstlvars.sh" ${INTEL_TARGET_ARCH}
fi

if [ -e "${PROD_DIR}/mkl/bin/mklvars.sh" ]; then
    . "${PROD_DIR}/mkl/bin/mklvars.sh" ${INTEL_TARGET_ARCH}
fi

if [ -e "${PROD_DIR}/ipp/bin/ippvars.sh" ]; then
    . "${PROD_DIR}/ipp/bin/ippvars.sh" ${INTEL_TARGET_ARCH} ${INTEL_TARGET_PLATFORM}
fi

if [ -e "${PROD_DIR}/ippcp/bin/ippcpvars.sh" ]; then
    . "${PROD_DIR}/ippcp/bin/ippcpvars.sh" ${INTEL_TARGET_ARCH} ${INTEL_TARGET_PLATFORM}
fi

if [ -e "${PROD_DIR}/mpi/intel64/bin/mpivars.sh" ]; then
    if [ "${INTEL_TARGET_ARCH}" = "intel64" -o "${COMPILERVARS_ARCHITECTURE}" = "intel64" ]; then
        . "${PROD_DIR}/mpi/intel64/bin/mpivars.sh"
    fi
fi

if [ -e "${PROD_DIR}/pkg_bin/compilervars_arch.sh" ]; then
    . "${PROD_DIR}/pkg_bin/compilervars_arch.sh" ${INTEL_TARGET_ARCH} ${INTEL_TARGET_PLATFORM}
fi

并且还发现, 在我的台式机leap 15.1 上, 并不存在这个问题, 可以随意将

. /opt/intel/bin/ifortvars.sh

加入 ~/.bashrc 里面. 没有任何问题.

请试试用 xorg 方式登录,wayland 可能会出现这种故障。