使用 nspawn 在 Linux 运行 QQ

准备 Ubuntu

首先创建文件夹,任意名字,此处叫 ubuntu

mkdir ubuntu

接下来使用 debootstrap 部署 Ubuntu 系根文件系统

# 此处的 ubuntu 是文件夹名字
sudo debootstrap --include=systemd-container --no-check-gpg focal ubuntu https://mirrors.163.com/ubuntu/

配置 machinectl

首先 machinectl 要求容器 rootfs 必须位于 /var/lib/machines/

所以这里用 --bind 来挂载文件夹

# 注意替换真实路径,我这里是 /data/nspawns/ubuntu
sudo mount --bind /data/nspawns/ubuntu /var/lib/machines/ubuntu

对应的 fstab 写法是

/data/nspawns/ubuntu /var/lib/machines/ubuntu none defaults,bind 0 0

接下来创建 /etc/systemd/nspawn/ubuntu.nspawn

写入以下内容

注意 视情况而定 的部分
比如没有 NVIDIA 显卡则可以跳过相关部分

[Exec]
Boot = true
PrivateUsers = no

[Files]
# Xorg
BindReadOnly =/tmp/.X11-unix

# GPU
# 视情况而定
Bind =/dev/dri

# NVIDIA
# 视情况而定
Bind =/dev/nvidia0
Bind =/dev/nvidiactl
Bind =/dev/nvidia-modeset
Bind =/dev/shm

# Controller
# 视情况而定
Bind =/dev/input

# PulseAudio etc.
BindReadOnly =/run/user/1000:/run/user/host

# AppIndicator
#BindReadOnly =/run/user/1000/bus

# DataDir
# 此处可以自定义
Bind = /data/nspawns/share

[Network]
VirtualEthernet = no
Private=no

启动也很简单

machinectl start ubuntu

进入 Shell 更简单

machinectl shell ubuntu
# 指定用户
machinectl shell root@ubuntu

准备容器内环境

然后以 root 进入容器的 Shell

开始准备环境

echo "deb https://mirrors.163.com/ubuntu focal main restricted universe multiverse" > /etc/apt/sources.list
apt update
apt install vim git -y
# 克隆仓库
git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git
cd deepin-wine-for-ubuntu
./install.sh

接下来获取 Deepin 打包好的安装包,可以参考仓库的 README.md

也可以去下面几个镜像站寻找

https://mirrors.aliyun.com/deepin/pool/non-free/d/deepin.com.qq.im/
https://mirrors.163.com/deepin/pool/non-free/d/deepin.com.qq.im/

为了修复字体方框,需要安装中文字体

还有安装中文支持

apt install fonts-wqy-microhei fonts-wqy-zenhei -y
apt install language-pack-zh-hans -y

接下来编写运行脚本

#!/bin/bash
# 设定语言
export locale=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
# 设定输入法
export XIM="fcitx5"
export XMODIFIERS="@im=fcitx5"
export GTK_IM_MODULE="fcitx5"
export QT_IM_MODULE="fcitx5"
# 声音与显示
export PULSE_SERVER=unix:/run/user/host/pulse/native
export DISPLAY=:0
# 某些机器上需要移除 32 位的库
rm /lib/i386-linux-gnu/libGL.so.1
/opt/deepinwine/apps/Deepin-QQ/run.sh

KDE 桌面

KDE 用户此处还需要补充安装一些东西

由于 wine 调用了 GNOME 的组件,所需我们需要在宿主机安装 gnome-settings-daemon

对于 Fedora 操作如下

dnf install gnome-settings-daemon -y

然后把这个东西启动起来

对于 Fedora 路径如下

/usr/libexec/gsd-xsettings &

最后别忘了开放本地 X11 权限

xhost +
© 版权声明
THE END
喜欢就支持一下吧
点赞23
分享
评论 抢沙发