现象:开发板为迅为iTop-4412精英版(Elite),核心板采用SCP封装,1 GB内存。开发计算机操作系统为Windows 8 Enterprise x64,在VMware Workstation Pro 15.5中运行64位Ubuntu 12.04.5 LTS系统。安装iTop-4412开发板编译环境后,重启虚拟机无法进入系统。启动流程阻塞在Ubuntu标志界面,无法进入登录界面,按CTRL+ALT+F1~CTRL+ALT+F7组合键无响应。
排查:在终端输入指令sudo gedit /etc/default/grub,将GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"改为GRUB_CMDLINE_LINUX_DEFAULT=""并保存退出,回终端执行sudo update-grub更新GRUB配置并重启,成功以文本模式启动并进入命令行模式,登录后键入startx执行,回显报错,无法进入图形模式。
多次恢复快照并排查,发现问题出现在执行安装脚本install-devel-packages.sh后,检查该脚本内容:
#!/bin/bash
####################################################################
# Warning:
# Ubuntu 12.04.2 introduced a new X stack that isn't compatible with
# with the old glx packages.
# ------------------------------------------------------------------
# 12.04 --> 12.04.2 (*-lts-quantal)
# ------------------------------------------------------------------
# libgl1-mesa-glx:i386 --> libgl1-mesa-glx-lts-quantal:i386
# libgl1-mesa-dev --> libgl1-mesa-dev-lts-quantal
# ------------------------------------------------------------------
#
# DON'T install libgl1-mesa-glx:i386 on 12.04.2, else it will *BREAK*
# your system.
####################################################################
# Execute an action
FA_DoExec() {
echo "==> Executing: '${@}'"
eval $@ || exit $?
}
# Ubuntu 12.04.2 LTS
FA_DoExec apt-get install \
git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx-lts-quantal:i386 libgl1-mesa-dev-lts-quantal \
g++-multilib mingw32 tofrodos lib32ncurses5-dev \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then
FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \
/usr/lib/i386-linux-gnu/libGL.so
fi
# Development support
FA_DoExec apt-get install \
vim dos2unix minicom gawk
推测可能与libgl1-mesa-glx-lts-quantal:i386、libgl1-mesa-dev-lts-quantal软件包与Ubuntu 12.04.5 LTS的冲突有关。尝试执行该脚本,出现提示显示将卸载xorg。
故障处理:恢复快照到执行该脚本之前并重新执行脚本,执行脚本完毕后,继续在终端执行:
sudo apt-get install xorg
sudo apt-get install libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev
恢复xorg以及旧版libgl1-mesa库,重启系统,问题解决。
修改过的install-devel-packages.sh脚本:
#!/bin/bash
####################################################################
# Warning:
# Ubuntu 12.04.2 introduced a new X stack that isn't compatible with
# with the old glx packages.
# ------------------------------------------------------------------
# 12.04 --> 12.04.2 (*-lts-quantal)
# ------------------------------------------------------------------
# libgl1-mesa-glx:i386 --> libgl1-mesa-glx-lts-quantal:i386
# libgl1-mesa-dev --> libgl1-mesa-dev-lts-quantal
# ------------------------------------------------------------------
#
# DON'T install libgl1-mesa-glx:i386 on 12.04.2, else it will *BREAK*
# your system.
#
# In Ubuntu 12.04.5 LTS, please use libgl1-mesa-glx:i386 and libgl1-
# mesa-dev.
####################################################################
# Execute an action
FA_DoExec() {
echo "==> Executing: '${@}'"
eval $@ || exit $?
}
# Ubuntu 12.04.5 LTS
FA_DoExec apt-get install \
git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx:i386 libgl1-mesa-dev \
g++-multilib mingw32 tofrodos lib32ncurses5-dev \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then
FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \
/usr/lib/i386-linux-gnu/libGL.so
fi
# Development support
FA_DoExec apt-get install \
vim dos2unix minicom gawk
参考资料:
https://blog.csdn.net/weixin_41683971/article/details/107745609
https://blog.csdn.net/ylf_18721347942/article/details/17378011