在龙芯平台,用修改过的qemu-i386运行原版wine,在此基础上运行32位windows程序。

wine

源码

官方版wine-5.0。官方git仓库

编译(在x86 linux电脑上进行)

configure && make && make install即可,不过为了可以方便的将编译好的wine复制到龙芯机器上可以改变默认安装目录,例如放在~/wine_install/里,

mkdir ~/wine_install
configure --prefix=~/wine_install/
make
make install

依赖库

将wine所依赖的所有x86-linux的库通过ldd命令整理出来。可以使用脚本ldd-grep.sh。例如把所有依赖库放入~/x86root/文件夹,

mkdir ~/x86root
ldd-grep.sh -o ~/x86root ~/wine_install

最后将wine和wine的依赖库复制到龙芯电脑里,即~/wine_install/~/x86root/这两个文件夹。

qemu

源码

以qemu v5.0.0为基础,修改后的版本位于实验室的代码仓库qemu的wine-fix-2分支。

编译(在龙芯上电脑上进行)

configure --target-list=i386-linux-user --disable-werror
make
make install

x86运行环境

让所有x86程序默认用qemu运行,假设qemu-i386装在/usr/local/bin/qemu-i386里,

su
echo ':i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff:/usr/local/bin/qemu-i386:' >/proc/sys/fs/binfmt_misc/register
exit

让qemu-i386的根目录变为存放x86依赖库的目录~/x86root,设置环境变量QEMU_LD_PREFIX(或者qemu运行时参数-L)为~/x86root,例如,

export QEMU_LD_PREFIX="~/x86root"

运行windows程序

使用命令~/wine_install/bin/wine <windows-program>即可,例如

~/wine_install/bin/wine winemine # 扫雷
~/wine_install/bin/wine cmd # windows cmd

:wine创建的windows c盘位于~/.wine/drive_c/

相关笔记

参考龙芯实验室二进制翻译组的笔记仓库关于wine的部分