在华擎 Asrock Z87 Pro3 主板上安装 CentOS 7

这几天,我把 centos 7 安装在我的 i7 4770 + asrock z87 pro3 上机器上。 主要解决了:连同 /boot 在内的根分区安装在 software raid0 上的 lvm 分区上,gdm 不能引导进入图形界面,vnc 连接的桌面上的虚拟机系统鼠标光标延迟,epel 库里的 xfce4-settings 崩溃,vnc 连接里面 xfce4 桌面的输入法,关机却自动重启,alrt 报内核崩溃出错 [Hardware Error]: Machine check events logged,在 CentOS 7 中使用新的内核等问题。这里记录一下要点作为备忘,详细步骤就免了。感兴趣的朋友可以留言互相探讨。

1、怎样连同 /boot 在内的根分区安装在 software raid0 上的 lvm 分区上:
不像 debian,centos 7 的安装程序(netinstall 和 livcd都试过)好像没有物理硬盘创建软阵列,再在软阵列上创建 lvm 分区,把系统安装在上面的选项。只能或者选软阵列或者选 lvm 。于是,在虚拟机中我创建一个raid0的boot分区,一个lvm的/分区,安装了centos7 的系统在虚拟机中。再把虚拟机的系统用 tar 压缩打包。解压到物理硬盘的分区中。

centos 引导程序寻找软阵列的方式与 debian 或 ubuntu 很不同。它是直接在 grub2 引导参数中定义软阵列的 uuid,而后者是在 initramfs 文件中包含软阵列探测程序。于是,我手工修改了 grub.cfg 中的 lvm uuid 和 raid0 uuid。这才成功引导 centos。另外,还用 ubuntu 14.04 的内核先引导进了 centos 系统,用 mkinitrd 重新生成了一次 initramfs 文件,估计这一步不是必须的。

另外,centos 7 的 initramfs 文件比较复杂,我根据网上的资料曾用 binwalk , gzip, cpio 解开过,但没有进一步的尝试修改打包。

2、gdm 不能引导进入图形界面的问题:
这好像是这个版本的 gdm 的 bug,暂时不用 gdm,直接启动到 tty,进入系统打 startx 启动桌面。

或者启用 epel 软件库 https://fedoraproject.org/wiki/EPEL/zh-cn,安装一个 lightdm 也行。

3、vnc 连接的桌面上的虚拟机系统鼠标光标延迟问题:
远程桌面连接的是 xfce4 桌面,xfc4 桌面也只有 epel 库才有。远程开启桌面上的虚拟机,我这里是 vmware player 里的 windows xp home edition。使用 centos 7 库里的 tiger-vnc server ,虚拟机里的鼠标光标总是延迟现象严重。

我在 ubuntu 14.04 下使用的 real vnc 的 vnc4server 不存在这个现象。于是,ubuntu 下apt-get source 下载了 vnc 源码。在 centos 7下根据里面 debian 目录下的 rules 文件的指令,手工编译安装了 real vnc 。问题解决。

也许是我对 tiger-vnc 不熟悉,不会设置的原因。

4、epel 库里的 xfce4-settings 崩溃的问题:
导致 abrt 报错,菜单没有图标问题。用上面的方法在 ubuntu 下 apt-get 源码(是ubuntu 14.04 的xfce4-settings,版本稍微比centos7的高点),在 centos 7下编译安装。问题解决。

5、vnc 连接里面 xfce4 桌面的输入法问题:
系统自带的 ibus 好像在 vnc 连接里工作不正常。参照这篇文章 CentOS 7安装fcitx中文输入法 http://seisman.info/fcitx-for-centos-7.html,在启用 epel 源的情况下 yum-config-manager --add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-7/mosquito-myrepo-epel-7.repo 安装一个提供 fcitx 的私人源。

但是这个 fcitx 在本地 gnome 桌面工作正常,在 vnc 连接里工作仍不正常。复制了原来在 ubuntu 14.04 (或 Debian Jessie?)里编译的 fcitx 4.0.1,在 vnc 的 xtartup 中设置了 fcitx 成功。估计是跟 vnc 与 dbus 之类的有关系。

6、关机却自动重启:
这是一个已知的内核bug,在新内核中已经修复,方法是手工打上补丁,重新编译内核。我使用补丁来自:https://bugzilla.kernel.org/show_bug.cgi?id=66171#c16 。这只是当时内核维护人员提出的一个临时的方法,但却在我的机器上可以工作。内核编译的步骤参见:
我需要内核的源代码 http://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source
我需要创建一个自定义的内核 http://wiki.centos.org/zh/HowTos/Custom_Kernel
这也可以通过安装新的内核解决。

7、abrt 报内核崩溃出错 [Hardware Error]: Machine check events logged的问题:
mcelog 报错MCA: Internal parity error,据网查,这是一个 intel haswell cpu 的 microcode 的 bug 问题,可以在 grub2 引导参数中加上忽略它的参数(如:mce=ignore_ce)。但又可能忽略真正的问题。参见:https://bugs.launchpad.net/qemu/+bug/1307225 ,内核源码文档Documentation/x86/x86_64/boot-options.txt 。那么视而不见是方法之一。
这也可以通过安装新的内核解决。

8、在 CentOS 7 中使用新的内核:

我用ubuntu 14.04 的内核,挂载 centos 7 的分区启动系统后却没有报错。只是不知道这样使用有没有什么负作用。

另外,网上也有专门针对 centos 7 的新内核更新的库,如这里:http://elrepo.org/tiki/tiki-index.php

Welcome to the ELRepo Project
"For the community, by the community."

Welcome to ELRepo, an RPM repository for Enterprise Linux packages. ELRepo supports Red Hat Enterprise Linux (RHEL) and its derivatives (Scientific Linux, CentOS & others).

The ELRepo Project focuses on hardware related packages to enhance your experience with Enterprise Linux. This includes filesystem drivers, graphics drivers, network drivers, sound drivers, webcam and video drivers.

不过,安装这个 headers(/usr/include/) 与系统原来的冲突,如:
错误:kernel-ml-headers conflicts with kernel-headers-3.10.0-123.13.2.el7.x86_64
就不安这个了。

虚拟机软件如: VirtualBox, VMware 需要编译模块,安装 kernel-ml-devel (yum --enablerepo=elrepo-kernel install kernel-ml-devel) 就行了。在这之前,我还用 yum --enablerepo=epel install dkms 安装了 dkms。

小结:
作为服务器操作系统红帽的社区版,比起一些桌面发行版来说,对桌面应用的支持要差一些。但因为开源系统的特点,花点时间折腾还是可以弄出一个可以正常使用的桌面环境的。也许也正因为如此,它可以专注于服务器周边的应用。专而精也是它的成功之处吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注