分类 独立文稿 下的文章

视频点此

这个不是我想到的方法,因为这种笔记本想做到直通太麻烦了。不过机缘巧合,我在这个博客中看到了方法,尝试之后也成功了,遂来记录一下。

上面的博客有着非常详细的操作步骤及一些基本原理介绍,有兴趣可以阅读一下。不过在我尝试的过程中发现文章漏掉了一些步骤,再加上我的电脑与文章的博客不同,获取vBIOS的过程有些许出入,所以这里只记录一下操作过程,每一步的解释及更多扩展请看原博客。

我的电脑:HP暗影精灵一代,i7-6700hq+950M独显

事前准备:KVM虚拟机拥有一个UEFI启动的Win10,含有QXL显卡、实体机启动的win10、Linux宿主在使用英特尔核显,独显驱动禁用或驱动被卸载

一、隔离独显

  1. lspci -nn | grep NVIDIA,获得类似输出:

    01:00.0 3D controller [0302]: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] [10de:1c8d] (rev a1)

    记录中括号[10de:1c8d]中的ID

  2. 编辑或创建/etc/modprobe.d/vfio.conf,内容书写 options vfio-pci ids=刚刚记录的ID
  3. 修改/etc/mkinitcpio.conf,在MODULES里增加vfio_pci vfio vfio_iommu_type1 vfio_virqfd
  4. mkinitcpio -P更新initramfs

二、增加英特尔虚拟核显

  1. 编辑/etc/default/grub,在GRUB_CMDLINE_LINUX中增加i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=on
  2. 编辑或创建/etc/modules-load.d/lantian.conf,增加三行

    kvmgt
    vfio-iommu-type1
    vfio-mdev
  3. grub-mkconfig -o /boot/grub/grub.cfg重新生成grub
  4. 重启
  5. lspci | grep "HD Graphics"记录最开始的PCI地址,如00:02.0
  6. 创建显卡

    sudo su
    echo "af5972fb-5530-41a7-0000-fd836204445b" > "/sys/devices/pci0000:00/0000:刚刚记录的PCI地址/mdev_supported_types/i915-GVTg_V5_4/create"

前面两部的成功性验证:

二.4重启之后,使用lspci -nnk查找英伟达,如果kernel in usevfio,则表明隔离NVIDIA成功;二.6第二行命令可以成功执行,则表明创建虚拟核显成功。

三、增加虚拟显卡进虚拟机

virsh edit 虚拟机名,在</device>前增加

<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='off'>
  <source>
    <address uuid='af5972fb-5530-41a7-0000-fd836204445b'/>
  </source>
</hostdev>

保存后启动虚拟机,如果在设备管理器中多了一个Microsoft 基本显示适配器,则说明增加成功,耐心等待驱动安装成功,便会显示出Intel核显名称了。

一旦驱动安装完成,关闭虚拟机,再次编辑配置。

  • 刚刚增加的hostdev标签,将display='off'更改为display='on'
  • 删除<graphics><video>两块,用如下内容替换

    <graphics type='spice'>
      <listen type='none'/>
      <image compression='off'/>
      <gl enable='yes'/>
    </graphics>
    <video>
      <model type='none'/>
    </video>
  • </domain>前增加

    <qemu:commandline>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.ramfb=on'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.driver=vfio-pci-nohotplug'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.x-igd-opregion=on'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.xres=1920'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.yres=1080'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.romfile=/vbios_gvt_uefi.rom'/>
        <qemu:env name='MESA_LOADER_DRIVER_OVERRIDE' value='i965'/>
    </qemu:commandline>

    其中,vbios_gvt_uefi.rom从这里下载,并对应修改上面的文件路径。

  • <domain type='kvm'>更改为<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

启动虚拟机,如果图像正常显示且设备管理器中只有英特尔核显,则说明截至目前,操作都是成功的。

四、获取显卡vBIOS

这部分在实体Windows下进行。

  1. 前往惠普支持官网,下载适合自己的惠普BIOS更新程序
  2. 百度下载MaxwellBiosTweaker备用
  3. 启动更新程序,选择第三项Copy
  4. 解压缩导出的所有bin文件(已知7z可成功解压)
  5. 进入解压出来的文件夹,打开到有.rom文件的文件夹
  6. 打开MaxwellBiosTweaker,依次将.rom拖入文件,如果程序成功显示各种内容,则这个文件是一个显卡BIOS文件
  7. 对于是显卡BIOS的文件, 对照显示的内容,找到是自己显卡的rom文件,复制出来备用

五、编译虚拟机UEFI固件

这部分回到Linux下进行。

# 根据 GitHub 上用户反馈,UEFI 固件编译完成后不能移动位置
# 所以要先找好存放的地方
cd /opt
# 使用root用户进行,避免sudo前缀
sudo su
git clone https://github.com/tianocore/edk2.git
# 安装编译过程中需要的依赖
pacman -S git python2 iasl nasm subversion perl-libwww vim dos2unix
yaourt -S gcc5
# 假设你导出的显卡 BIOS 存放在 /vbios.rom
cd edk2/OvmfPkg/AcpiPlatformDxe
xxd -i /vbios.rom vrom.h
# 编辑 vrom.h,把 unsigned char 数组(在第一行)的名字修改成 VROM_BIN
# 把文件末尾的长度变量(在最后一行)改名为 VROM_BIN_LEN,并记录下长度值,我的是 167936
wget https://github.com/jscinoz/optimus-vfio-docs/files/1842788/ssdt.txt -O ssdt.asl
# 编辑 ssdt.asl,修改第 37 行为 VROM_BIN_LEN 的值
# 然后执行下面这行命令,会报错但是没关系,只要 Ssdt.aml 有了就行
iasl -f ssdt.asl
xxd -c1 Ssdt.aml | tail -n +37 | cut -f2 -d' ' | paste -sd' ' | sed 's/ //g' | xxd -r -p > vrom_table.aml
xxd -i vrom_table.aml | sed 's/vrom_table_aml/vrom_table/g' > vrom_table.h
# 返回 edk2 的目录下打补丁
cd ../..
wget https://gist.github.com/jscinoz/c43a81882929ceaf7ec90afd820cd470/raw/139799c87fc806a966250e5686e15a28676fc84e/nvidia-hack.diff
dos2unix nvidia-hack.diff
dos2unix OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c
patch -p1 < nvidia-hack.diff
# 开始编译 OVMF
make -C BaseTools
source edksetup.sh
# 修改 Conf/target.txt 中如下变量的值:
# - ACTIVE_PLATFORM       = OvmfPkg/OvmfPkgX64.dsc
# - TARGET_ARCH           = X64
# - TOOL_CHAIN_TAG        = GCC5
build
# 等待编译完成,确认 Build/OvmfX64/DEBUG_GCC5/FV 文件夹下有这两个文件:
# - OVMF_CODE.fd
# - OVMF_VARS.fd
# 然后替换你的虚拟机的 UEFI 参数,注意修改虚拟机名
cp Build/OvmfX64/DEBUG_GCC5/FV/OVMF_VARS.fd /var/lib/libvirt/qemu/nvram/虚拟机名_VARS.fd

六、增加独显进虚拟机

visrh edit 虚拟机名称,做如下配置

<!-- 把 os 一段改成这样,注意对应你的 OVMF_CODE.fd 路径 -->
<os>
  <type arch='x86_64' machine='pc-q35-4.2'>hvm</type>
  <loader readonly='yes' type='pflash'>/opt/edk2/Build/OvmfX64/DEBUG_GCC5/FV/OVMF_CODE.fd</loader>
  <nvram>最后复制的那个路径</nvram>
</os>
<!-- 把 features 一段改成这样,就是让 QEMU 隐藏虚拟机的特征 -->
<features>
  <acpi/>
  <apic/>
  <hyperv>
    <relaxed state='on'/>
    <vapic state='on'/>
    <spinlocks state='on' retries='8191'/>
    <vendor_id state='on' value='GenuineIntel'/>
  </hyperv>
  <kvm>
    <hidden state='on'/>
  </kvm>
  <vmport state='off'/>
</features>
<!-- 添加显卡直通的 PCIe 设备,必须放在核显 hostdev 的后面 -->
<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </source>
  <rom bar='off'/>
  <!-- 注意这里的 PCIe 总线地址必须是 01:00.0,一点都不能差 -->
  <!-- 如果保存时提示 PCIe 总线地址冲突,就把其它设备的 <address> 全部删掉 -->
  <!-- 这样 Libvirt 会重新分配一遍 PCIe 地址 -->
  <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0' multifunction='on'/>
</hostdev>
<!-- 在 </qemu:commandline> 之前添加这些参数 -->
<qemu:arg value='-set'/>
<!-- 下面的两个id为 lspci -nn中的那两个id -->
<qemu:arg value='device.hostdev1.x-pci-vendor-id=0x10de'/>
<qemu:arg value='-set'/>
<qemu:arg value='device.hostdev1.x-pci-device-id=0x1c8d'/>
<qemu:arg value='-set'/>
<!-- 下面的两个id为 lspci -nnk中,subsystem显示的id那两个 -->
<qemu:arg value='device.hostdev1.x-pci-sub-vendor-id=0x17aa'/>
<qemu:arg value='-set'/>
<qemu:arg value='device.hostdev1.x-pci-sub-device-id=0x39d1'/>
<qemu:arg value='-acpitable'/>
<qemu:arg value='file=/ssdt1.dat'/>

最后一行的ssdt1.dat从这里下载,并将路径对应修改。

启动虚拟机,等Win10自动安装驱动。

如果不出意外的话,直通就完成了。

视频点此

VNC,Virtual Network Console的缩写。说白了,VNC是从类Unix系统出来的,横跨全平台的图形远程桌面,有别于纯文本的ssh,功能强大。所以,来看看再Linux下要如何部署VNC服务。

只是使用的话,不必研究它的原理,只需要知道Linux下面是通过软件包tigervnc来实现vnc服务的即可。

这里以Arch为例。

  • 安装tigervnc:pacman -S tigervnc
  • 启动vnc服务:vncserver

    • 要求一个密码,输入后回车
    • 确认刚刚输入的密码,输入后回车
    • 是否需要一个仅查看的密码,需要则输入y回车,否则输入n回车完成设置
    • 若输入y,则继续输入新的密码两遍,完成配置
  • 编辑~/.vnc/xstartup,只保留最前面unset开头的两行,之后的全部删除,并增加一行exec dbus-launch startplasma-x11(这是kde桌面增加的行,其他的请去往wiki查看),保存
  • 注销再登录,重新启动vnc服务,设置完成

到此,就可以从其他电脑上通过vnc相关软件连接了。其中,vnc使用的端口在输入vncserver之后输出的内容中有所体现。规律为5900+冒号后的数字。如输出为:1,则端口号为5901

更多资料

更详细更高级的vnc使用方法,参考TigerVNC (简体中文) - ArchWikiVNC - openSUSE Wiki

视频点此

我曾经说过如何在Windows下屏蔽笔记本键盘的教程。现在,来看看Linux下面如何实现屏蔽笔记本键盘。

Linux屏蔽需要安装一个工具xinput。arch系的包名为xorg-xinput,debian系的包名为xinput

之后,通过命令xinput找到自带键盘设备的ID号。这个设备的名字为AT Translated Set 2 Keyboard。找到以这个名字开头的一行,记录后面id=字段的数字。我这里是11.

最后,通过命令xinput set-prop ID 'Device Enabled' 0来完成设备的仅用。其中,ID区域替换为前面找到的数字。

如果想恢复使用,将结尾的0更改为1即可。

视频点此

这个对应的是一个看板问题。说实话啊,这种软件各种各样,自己尝试尝试应该就可以了。至于都有哪些方法,可以看一看知乎的回答。其中vlc的方法可能很多人都想不到,可以尝试一下。

不过我个人使用obs来进行屏幕录制任务,主要是它可以很方便的满足我个人的几点要求:

  • 录屏、直播
  • 录制的文件可以正常导入到达芬奇中
  • 初步的音源修正

那么接下来,简单记录下我的obs设置,权当分享,也是给自己保存一个配置存档。

录制

除了下面提到的设置项,其他的可直接保持默认或随意调整。

设置 - 输出输出模式调整为高级,为设置达芬奇格式做准备。

切换到录像标签按图设置。

这其中:

  • 文件路径或URL视频比特率音频比特率根据自己的情况进行设置
  • 视频编码器可以选择libx264尝试一下(我这里是有问题的,所以没有使用)。而如果你使用达芬奇免费版,此项最好选择prores的一系列编码器,但是录制的文件会非常大,要注意
  • 音频编码器默认应该是aac。如果你不使用达芬奇的话,保持默认即可,否则按图设定

点击左边栏的视频栏目,按需进行调整。这几项简单介绍一下

  • 基础(画布)分辨率:电脑屏幕分辨率
  • 输出(缩放)分辨率:录制出来的视频文件分辨率
  • 缩小方法:上边两项不同时使用的优化方法
  • 帧率:视频帧率

点击左边栏的高级项目,颜色格式可以调整为RGB,保持默认也可。

直播

类似上面的,只是这里着重注意串流标签下的设定。如图

其中,比特率可以根据自己的网络条件调整,CPU使用预设根据自己的电脑配置调节。

推流地址在推流一页进行设置。

要注意:对于推流,高级页的颜色格式最好保持默认的NV12

其他技巧

obs拥有很多滤镜,可以通过右键点击每个捕获源,弹出的菜单选择滤镜来进行设置,自行探索吧。

视频点此

在Windows下,很多用户都会考虑清理系统垃圾这个问题。除了一堆软件管家提供的垃圾清理功能外,Windows自己也提供了磁盘清理小工具。那么,在Linux下,垃圾清理工作要如何完成呢?

一、需不需要清理

不知道是不是我的习惯问题,在Linux下面,我对系统垃圾问题关注的格外少。也许是不影响操作效率导致的吧。所以,到底需不需要清理垃圾就要看个人的使用情况了。至于我唯一能想到的清理时机,就是磁盘空间不足的时候了……

1、查看占用情况

但是通常来讲,Linux对垃圾的控制还是很不错的,所以即使是磁盘空间不足,更大的可能性也只是装的东西太多了。为了判断到底是不是垃圾占用了太多的空间,可以来分析一波分区的占用情况。

Linux下,这个操作十分简单。只需要通过命令sudo du -h --max-depth=1 [路径]来查看。比如查看根挂载点的占用情况,只需要通过sudo du -h --max-depth=1 /即可。不过到底是不是垃圾导致的空间占满,这就需要看到底是哪些文件夹占用了很大的空间了。所以这里简单介绍一下根挂载点下一些关键的文件夹。

  • etc:配置文件目录
  • boot:引导目录
  • opt:第三方软件的一个安装位置
  • root:root的家——没错,root的家目录并不是/home/root/
  • tmp:临时文件
  • usr:存储了所有命令、程序库、文档以及诸如帮助文档等其他文件
  • var:存储运行时不断变化的文件
  • proc:存储了所有的虚文件(如CPU、分区、内存等)。这个应该是最能体现一切皆文件精髓的文件夹

这下面还有一些其他的文件夹,就不一一介绍了,通过文件夹名称都能理解存储的内容是什么。

在上面的文件夹中,usr以及usr的部分子目录(如share等)也会以隐藏目录的形式出现在用户的家目录下面。这其实只是全局和用户的区别而已,功能是相同的。

而在上述的文件夹中,有两个文件夹是比较特殊的:

  • tmp:其中的文件通常会自动清理
  • proc:其挂载在内存中,永远不会被保留。因为它只是描述了这台电脑在当前时间节点拥有的所有属性

2、何时需要清理

所以,可以发现,能出现垃圾文件的文件夹只可能是tmp或者var。所以,如果这两个文件夹有较高的空间占用,那么就意味着你可能需要进行磁盘整理了。

但,为什么说是可能呢?因为var大不一定就是垃圾多。具体可以浏览一下var这个文件夹。

这个文件夹的名称都比较简单明了,便不再过多解释了。不过总的来讲,你不能一股脑的把var里的内容全都删掉就对了。

二、如何清理

1、手工清理

其实,不只是var,其他文件夹我也不建议直接删除掉——即使其他文件夹确实也可能出现垃圾文件。因此通过下面步骤进行一下瘦身是最保险的。

首先,清除无用的依赖。

很多时候,由于依赖更新等各种原因,部分包会变成孤包——我的意思是那些谁也不再需要它的孤儿们。因此先对这部分进行一下清理。

apt系列很容易,直接使用autoremove参数即可。

pacman系列虽然也可以一句话解决,不过为了方便记忆,这里将其拆分为两个简单句。

首先:pacman -Qdt即可列出作为依赖安装的但现在已经没有人再依赖它的包

然后:正常删除这些包即可

其次,清理软件包缓存。

这个缓存指的是安装软件时保留在系统的安装包。有些桌面或商店会自动清理,所以这部分的占用大的很大,小的几乎没有。

apt系列,使用clean参数完成清理。

pacman系列,使用paccache -r完成清理(需安装pacman-contrib

之后,考虑清理日志。

如果你的/var/log占用了比较大的空间,可能是有些程序的日志文件太大了。看看最大的,删掉就好了。

2、软件清理

如此做完,如果空间没有特别明显的改观,或者不想这么麻烦,那么就直接使用软件进行垃圾清理吧。

使用软件还有一个好处:用户家目录下面的垃圾文件保存的位置没有根目录那么规律,很多都在以软件名为名称的隐藏文件夹下的某个子文件夹中。所以通过软件清理避免了手工进入这些文件夹进行删除操作。

使用的软件叫做BleachBit。安装好后启动,勾选想要清理的内容,点击清空等待完成即可。

其中,有一些勾选是比较有危险性的。正如Windows下面软件管家的垃圾清理一样,你可以阅读每一项的说明,然后自己决定到底清理哪些。如果仍然不确定,可以在勾选之后点击预览,待分析完成后便可以浏览将要删除哪些文件,以确保不会进行危险的动作。

没有错,从软件清理来看,你并没有必要了解我前面的那一大堆东西,只需要装好软件,然后让它自己分析删除即可。前面的那一大堆,只是让你体会一下一款垃圾清理软件都在干什么——Windows下的垃圾清理软件也是一样的。

视频点此:第一期第二期第三期

一、红酒?

红酒,英文wine。当然,电脑界的wine并不能喝,而是一套组件,这个组件可以使得windows程序运行在Linux和MacOS上。可以说,如果需要在Linux上运行windows程序,那一定会利用wine或者通过wine的一些组件来实现——无论游戏还是应用。

那么wine到底是什么东西呢?按照官方的说法,wine是一个兼容层而不是一个模拟器,也就是说,wine与虚拟机不同,而是直接让linux拥有执行windows指令的能力。有些观点认为wine这个东西是在最近一些年里边出现的,确切的说应该是wine在最近几年才真正的易用起来。它的金主——CodeWaver早在25年就开始了wine的研发进程。而wine的商业版——Crossover,则是CodeWaver的一个收入来源。与wine需要用户自己配置的区别在于,wine商业版可以以自动完成运行应用程序需要做的准备工作,从而构建起了在Linux和Mac中一键安装windows程序的能力。很好用,如果你需要wine,自己又不会配置,那么可以尝试购买一份crossover来使用。

二、版本?

当然,如果不想花钱,可以使用crossover的开源版本——wine,同样可以完成crossover相同的功能——当然,很多步骤需要手动操作才能完成。但是因为它开源,所以各种大神为了解决各种应用场景制作了各种版本的wine。接下来就简单介绍一下wine的这些版本。

1、正统

你可以从你的Linux仓库中直接获取到正统的版本。它包含三个后缀:wine-stablewine-stagingwine-devel。就像Chrome在for Linux的官方仓库中拥有的三个版本:stable、unstable、beta,wine的这三个版本稳定性是逐渐下降的,而新特性取得的时间是逐次上升的。一般来说,会推荐使用wine的stable版本。不过随着wine越来越多的可喜的变化,我逐渐的开始推荐使用staging版本了。因为它既不像devel这种开发版那么的不稳定和多变,又不像stable版本过于保守的增加新特性,staging保证了在尽量早的获得新特性的同时,又有着不错的稳定性。

2、不正统

不过,在正统版本之外,还有一些不错的第三方版本推荐一用。这里,你可以前往lutris的wiki来简单浏览一下。

它记录了两个主要的第三方版本:GE——Glorious Eggroll和tkg——TK-Glitch。而这两个第三方版本又有很多不同的衍生版,不同的衍生版针对不同的问题有着对应的修复,具体的修复你可以自己到这里来看一看。至于lutris,我曾经单独说过这个可以集合包括steam和gog在内的游戏库软件,这里就不再多说,只是来演示一下如何在lutris里使用不同版本的wine。

它对wine版本的管理很清晰,只需要点击Wine旁边的Manage Version,你就可以在这里选择各种版本的wine了。可以看到,除了通用的第三方版本,lutris还提供了针对游戏的版本,就比如lutris-lol,很明显,这个版本专门针对lol进行了优化,那用这个版本来运行lol显然是最好的选择。获取和设置也很简单,只需要勾选需要的版本,lutris就会自动安装部署,然后点击游戏的设置图标—启动器选项,就可以自由的选择已经安装的wine了。注意啊,这是可以多版本并存的。你要做的仅仅是勾选即可。

而对于Steam,它自己的Steam play项目和针对这个项目推出的第三方wine版本——proton我曾经也说过。所以这里同样只是介绍一下如何使用自定义的proton套件。

这个第三方套件同样有两个衍生,前边提到的GE和TKG。不同的是,这里的版本是基于steam的proton衍生得到,所以它更主要的目的在于解决使用Steam play官方版本游玩有问题的游戏。也因此,这个组件只能使用在Steam中。

先来看看tkg的自定义版,被称为proton-tkg

  1. 前往https://github.com/Frogging-Family/wine-tkg-git/releases获取最新版本
    因为tkg对于arch分支更加友好,所以对于arch分支的用户,只需要下载前两个;而Debian系的用户,就需要下载源码自行编译了。我是arch用户,所以我下载前两个,接下来也以arch演示
  2. 下载后,两者在同一个文件夹下,使用pacman -U zst结尾的那个文件名来安装
  3. 解压刚刚下载的zip后缀的文件,复制到~/.steam/root/compatibilitytools.d/

    如果没有这个文件夹,则新建一个。同时,复制过来的这些文件用一个文件夹包裹起来。所以最终这些文件所在的位置应该类似于~/.steam/root/compatibilitytools.d/proton-tkg/

    对于Debian分支系统,可能不需要root这一层目录

然后,你就可以在steam的steam play设置界面看到刚刚安装的自定义版本了。不过对于自定义版本,针对游戏进行设置可能是更好的选择。只需要在特定游戏的设置界面选择需要的版本保存即可。

第三方的改动是很有必要的。虽然我没遇到过——因为我的很多游戏都可以原生支持linux,不能支持的使用官方版本proton也能完美运行——不过个别游戏使用第三方会有更好的体验。比如warframe,只有使用tkg版本才能显示更新的进度条和下载信息。

再来看看GE的自定义版,被称为protonGE

  1. 前往https://github.com/GloriousEggroll/proton-ge-custom
  2. Release页面下载tag.gz文档并解压
  3. 将其中的文件夹复制到~/.steam/compatibilitytools.d/下,完成

不过,有实验表明,对于自定义的Proton,因为wine研发和新版本释放时候新功能的不稳定性,对于游戏的流畅度来说也并不是版本越新越好,因此有些游戏可能需要使用旧版本的自定义proton才能更好的游玩。但就像我前边提到的,我自己的这些游戏只需要用官方版本便可流畅运行,所以可能轮到你用的时候才会感觉麻烦的很吧。

聊过了这些全球流行的自定义版本,接下来看看国内定制版本:deepin-wine。

这是深度为了国内的应用特意魔改的一个wine版本,基于wine2.18版本开发——很老的wine版本了,我个人猜测,从2过渡到如今的5可能需要耗费很大的精力,所以现在deepin-wine的开发也几乎是一个停滞的状态了。不过对于国内的一众应用,使用deepin-wine来运行可能反而会比使用正版wine运行问题来的要少——所以也不知道南极大鸟家族在它们的产品里到底使用了什么拥有黑科技的库文件。

不过整体来说,deepin-wine的版本还是太老了一些,而且也不是所有发行版都可以安装这个版本的wine。所以这里也不再多说了,只是知道它的包名叫做deepin-wine就好了。如果想安装,就尝试找到这个包来安装就行了。

三、几个容易被忽略的小技巧

1、使用32位容器

虽然wine默认是64位的,但是使用32位容器会使得程序运行的更可靠。只需要在使用wine命令前增加变量WINEARCH=win32即可。

推荐将这个变量写入到.xprofile,这样每次执行wine命令时默认就是32位的了

2、指定容器位置

在wine命名前增加变量WINEPREFIX=路径即可指定容器创建的位置。默认是在~/.wine

通过这个变量可以实现一容器一软件,保证针对不同软件使用不同的wine环境配置。

3、初始化容器/调整容器设置

使用命令winecfg即可打开wine的容器设置。若当前位置没有容器则会自动初始化一个而不安装任何windows程序。

4、补充wine的组件

安装使用winetricks可以方便的增删容器内的支持组件(.NET等)。

5、中文模糊/乱码

字体问题可通过注册表设置字体替换解决。具体可参考wine字体 - Archwiki解决中文乱码 - Archwiki