在Hyper-V里安装manjaro KDE Edition

若石
5 min readAug 22, 2020

--

摘要

本文记录了我在Hyper-V里安装manjaro KDE Edition的过程,以及我遇到的一些问题和解决办法。本文基于 Windows 10.0.20197 和 manjaro KDE 20.0.3。

基础设置

在Hyper-V管理器里创建新的虚拟机,需要注意以下几点:

  1. 选择创建Generation 2类型虚拟机
  2. 不要使用动态内存 (uncheck Use Dynamic Memory for this virtual machine
  3. 关闭Secure Boot
  4. 添加DVD Drive并且选择加载manjaro iso
  5. (可选)关掉Check Points

启动X Window

在使用manjaro安装盘启动VM之后,系统不会自动启动X Window,屏幕底部此时显示类似这样的内容:

Failed to start Simple Desktop Manager.See ‘systemctl status sddm.service’ for details.

不用紧张,因为manjaro的Live CD中缺少相关的驱动程序,所以这是正常的情况。可以按 Alt+F2 组合键打开一个新的 tty 会话,然后根据屏幕上的提示输入用户名和密码登录进命令行模式。然后用下面的命令安装驱动并启动X Window。

su
pacman –Sy
pacman –S xf86-video-fbdev
systemctl restart sddm

进入X Window后,双击 Install manjaro Linux 图标启动安装程序。整个过程非常简单,就不再赘述。由于前面安装的驱动只是针对Live CD,所以在把manjaro安装到硬盘并重启系统后,我们会再次遇到缺少 xf86-video-fbdev 的问题,但是这次的现象是卡在 Hyper-V logo界面。可以重复上述步骤和命令安装xf86-video-fbdev

安装xrdp包

Linux系统需要安装 xrdp 软件包来使用Hyper-V Enhanced Session功能的。不同于Ubuntu,manjaro默认的软件包源中是没有 xrdp 包的,我们需要自己编译和安装 xrdp 。幸好微软的这个repo里提供了arch的编译和安装脚本,我们直接使用就好。

  1. 我们可以下载linux-vm-tools源码zip包或者用git把它克隆到本地。
  2. 打开 Konsole 依次运行下面三条命令:
cd <linux-vm-tools-folder>/arch
./makepkg.sh
sudo ./install.sh

编辑.xinitrc

我们需要对 ~/.xinitrc 文件进行两处修改,否则在启用Enhanced Session后会无法登录到系统。

  1. 默认的 .xinitrc 文件中指定的 DEFAUTL_SESSIONstartkde ,但是 manjaro应该使用 startplasma-x11 ,所以我们需要将
DEFAUTL_SESSION=startkde

修改为

DEFAUTL_SESSION=startplasma-x11

2. 修改dbus参数,将

local dbus_args=(--sh-syntax --exit-with-session)

里的 --exit-with-session 删除,修改为

local dbus_args=(--sh-syntax)

启用Enhanced Session

  1. 关闭( shutdown)正在运行的manjaro虚拟机
  2. 在Hyper-V宿主机( Windows)中按 Win+X 组合键,然后选择 Windows PowerShell (Admin)
  3. 在打开的窗口中运行下面的命令:
Set-VM -VMName <YOUR-VM-NAME> -EnhancedSessionTransportType HvSocket

如果不知道VMName的话可以用 Get-VM 命令查询。

4. 重新启动manjaro虚拟机就可以通过Enhanced Session连接了。

后续:安装官方版本的VS Code

微软官方并没有为manjaro或者arch Linux创建VS Code安装包。manjaro官方的软件源中虽然有开源版本的VS Code但是有一些常用的插件(比如 Remote DevelopmentVisual Studio IntelliCode )并不支持开源版本的VS Code,所以使用官方版本的VS Code会有更好的体验。我创建了一个脚本来半自动的更新VS Code。步骤非常简单:建立一个名为 update_vscode.sh 的文件,并为其添加可执行属性 ( chmod +x update_vscode.sh )。其内容如下:

你可以修改 VSCODE_HOME 把VS Code安装到其他目录。

后续2: 使用lightdm替换sddm

sddm是Manjaro KDE Edition默认的显示管理器,但是它的登录界面( sddm-greeter )有CPU占用高的问题,而且这个问题已经存在了超过5年。看起来官方并没有解决它的意思了。既然 sddm 官方不解决,那么就换一个显示管理器吧。在manjaro里安装和启用 lightdm很简单,只要这么两条命令:

sudo pamac -S lightdm lightdm-slick-greeter lightdm-settings
sudo systemctl enable lightdm.service --force

重启之后就可以卸载 sddm 了,同样也很简单

sudo pacman -R sddm-kcm sddm

然后就再也没有奇怪的CPU占用问题了。

--

--