最近给一朋友修复了一个Fedora系统不能进入的问题,场景如下:
环境:Fedora 20,64位,具体的内核忘记了;
问题:Fedora启动在图标“f”后黑屏,不能进入登录界面,也不能进入tty(命令界面,也就是ctrl+shift+F2~F7)。
朋友说他卸载了一些软件后,系统就出现该问题,那问题的入口就在卸载的操作上了。yum (dnf)带有历史记录功能,可以查看过往的事务,重做、回滚这些事务。Fedora 20以后的系统软件管理工具都推荐用dnf,在20里还是用yum管理,也有dnf。分析原因是他卸载Xorg相关的一些库,我们虽然可以查找到这些库对应哪些软件,但一个个重装工程量大,所以可以撤销原来的删除操作,yum自带这样的功能。
由于环境不一样,以下操作我在Fedora 24下模拟操作,以软件kmplayer.x86_64为例展示相关操作。
解决方法如下:
1.进入单用户模式
- 在GRUB引导界面找到相应的入口,按“e”进入编辑界面;
- 在编辑界面中,在“linux /vmlinuz.....”行(一般倒数第二行)中的“rhgb quiet”前加入“single”;
- 按“ctrl + x”,即可进入单用户模式;
- Ferora 20会提示输入root密码。
此次修改只是一次的,重启后就还原了。
2.进入单用户模式后,查看yum操作历史记录
以下是测试操作,具体的操作按具体的场景。在安装操作时注意网络连接。
[root@zoro ~]# dnf search kmplayer
上次元数据过期检查:0:51:36 前,执行于 Tue Jul 24 09:27:00 2018。
======================== N/S 匹配:kmplayer =================
kmplayer.x86_64 : A simple front-end for MPlayer/FFMpeg/Phonon
[root@zoro ~]# dnf install kmplayer.x86_64
........
[root@zoro ~]# dnf history
ID | 命令行 | 日期和时间 | 操作 | 更改
-------------------------------------------------------------------------------
55 | install kmplayer.x86_64 | 2018-07-24 10:21 | Install | 33 <
54 | install mysql-utilities. | 2017-02-03 23:29 | Install | 2 >
53 | install flash-plugin | 2016-12-11 10:55 | Install | 1
52 | install adobe-source-lib | 2016-12-11 10:48 | Install | 3
51 | install http://linuxdown | 2016-12-11 10:46 | Install | 1
50 | update | 2016-12-09 19:23 | I, U | 139 EE
49 | install parallel.noarch | 2016-12-08 23:00 | Install | 1
48 | install bluefish | 2016-11-23 22:52 | Install | 3
47 | install google-chrome-st | 2016-11-23 22:43 | Install | 112 EE
46 | update | 2016-11-23 22:04 | I, O, U | 746 *<
........
[root@zoro ~]# dnf remove kmplayer
依赖关系解决。
==========================================================================
Package 架构 版本 仓库 大小
==========================================================================
移除:
OpenEXR-libs x86_64 2.2.0-5.fc24 @fedora 3.0 M
........
[root@zoro ~]# dnf history
ID | 命令行 | 日期和时间 | 操作 | 更改
-------------------------------------------------------------------------------
56 | remove kmplayer | 2018-07-24 10:27 | Erase | 33 EE
55 | install kmplayer.x86_64 | 2018-07-24 10:21 | Install | 33 <
54 | install mysql-utilities. | 2017-02-03 23:29 | Install | 2 >
53 | install flash-plugin | 2016-12-11 10:55 | Install | 1
52 | install adobe-source-lib | 2016-12-11 10:48 | Install | 3
51 | install http://linuxdown | 2016-12-11 10:46 | Install | 1
50 | update | 2016-12-09 19:23 | I, U | 139 EE
........
可见是安装删上面kmplayer的记录,可以根据命令行、日期和时间、操作定位具体的操作。下面撤销删除操作:
[root@zoro ~]# dnf history undo 56
上次元数据过期检查:0:16:56 前,执行于 Tue Jul 24 15:28:38 2018。
Undoing transaction 56, from Tue Jul 24 10:27:09 2018
删除 OpenEXR-libs-2.2.0-5.fc24.x86_64 @fedora
删除 attica-0.4.2-9.fc24.x86_64 @fedora
删除 breeze-icon-theme-5.33.0-1.fc24.noarch @updates
删除 docbook-dtds-1.0-65.fc24.noarch @fedora
删除 docbook-style-xsl-1.78.1-5.fc24.noarch @fedora
........
[root@zoro ~]# dnf history
ID | 命令行 | 日期和时间 | 操作 | 更改
-------------------------------------------------------------------------------
57 | history undo 56 | 2018-07-24 15:54 | Install | 33
56 | remove kmplayer | 2018-07-24 10:27 | Erase | 33 EE
55 | install kmplayer.x86_64 | 2018-07-24 10:21 | Install | 33 <
54 | install mysql-utilities. | 2017-02-03 23:29 | Install | 2 >
........
执行kmplayer如下:
可见kmpalyer已经装好。可见在卸载一个软件时,不知道其依赖的库,用命令撤销操作最合适了。上述命令中的dnf也可以换成yum,如“yum history”、“yum history undo 56”等,只是Fedora 20后yum会映射成dnf,20前的不影响。undo后面可跟多个ID,如“dnf history undo 2 3”。
针对黑屏问题,根据软件的操作和时间确定是哪几个ID,然后在做撤销操作。这样就把一个系统“f”黑屏问题修复了,当然这只是针对软件误删情况,导致黑屏也可能是环境变量出错、文件误删等。