前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 nspawn 在 Linux 运行 QQ

使用 nspawn 在 Linux 运行 QQ

原创
作者头像
MisakaCloud
修改2020-11-11 14:27:58
2.3K0
修改2020-11-11 14:27:58
举报
文章被收录于专栏:emmmmemmmm

准备 Ubuntu

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

代码语言:txt
复制
mkdir ubuntu

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

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

配置 machinectl

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

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

代码语言:txt
复制
# 注意替换真实路径,我这里是 /data/nspawns/ubuntu
sudo mount --bind /data/nspawns/ubuntu /var/lib/machines/ubuntu

对应的 fstab 写法是

代码语言:txt
复制
/data/nspawns/ubuntu /var/lib/machines/ubuntu none defaults,bind 0 0

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

写入以下内容

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

代码语言:txt
复制
[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

启动也很简单

代码语言:txt
复制
machinectl start ubuntu

进入 Shell 更简单

代码语言:txt
复制
machinectl shell ubuntu
# 指定用户
machinectl shell root@ubuntu

准备容器内环境

然后以 root 进入容器的 Shell

开始准备环境

代码语言:txt
复制
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

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

代码语言:txt
复制
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/

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

还有安装中文支持

代码语言:txt
复制
apt install fonts-wqy-microhei fonts-wqy-zenhei -y
apt install language-pack-zh-hans -y

接下来编写运行脚本

代码语言:txt
复制
#!/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 操作如下

代码语言:txt
复制
dnf install gnome-settings-daemon -y

然后把这个东西启动起来

对于 Fedora 路径如下

代码语言:txt
复制
/usr/libexec/gsd-xsettings &

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

代码语言:txt
复制
xhost +

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备 Ubuntu
  • 配置 machinectl
  • 准备容器内环境
  • KDE 桌面
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档