X86_64(优麒麟)系统下构建 i386 文件系统并编译Box86运行wine

简介: X86_64(优麒麟)系统下构建 i386 文件系统并编译Box86运行wine

文章目录

前言

一、在 X86_64 Linux 系统下搭建 i386 文件系统

二、配置 Schroot 工具使得文件系统切换更方便

1.修改 schroot 配置文件

2.切换文件系统,并完成初始环境安装

三、编译 Box86

四、编译 Wine

运行结果

总结


前言

该实验主要针对定位在 ARM(aarch64)结构机器上借助 Box86 使用 Wine 安装微信过程中的报错进行对比分析。目前在 ARM机器上借助 Box86 使用 wine 安装微信会在最后的启动界面弹出的时候提示 SIGSEGV 的报错并 core dump 。 所以决定在 X86 环境下构建同样的情况进行对比分析。


一、在 X86_64 Linux 系统下搭建 i386 文件系统

在 X86_64 Linux环境下执行下面操作:


$ sudo mkdir -p /srv/chroot/i386
$ sudo apt-get install debootstrap
$ sudo apt install schroot
$ sudo debootstrap --foreign --arch=i386 xenial /srv/chroot/i386 http://mirrors.tuna.tsinghua.edu.cn/ubuntu/

20201028102500503.png

使用 debootstrap 工具将 i386 文件系统从网站上拉取下来后,使用下面命令将本机的环境包安装到新下载的文件系统中:


$ sudo chroot /srv/chroot/i386/ /debootstrap/debootstrap --second-stage


此时,基本完成了 i386 文件系统在 X86_64 系统下的构建过程。


二、配置 Schroot 工具使得文件系统切换更方便

1.修改 schroot 配置文件

在 /etc/schroot/schroot.d/ 目录下添加新文件系统的配置文件 i386


$ sudo vi /etc/schroot/chroot.d/i386


添加以下配置内容:


[i386]
description=Debian strectch armhf
directory=/srv/chroot/i386
#aliases=test
type=directory
root-users=root
root-groups=root
profile=desktop
personality=linux
preserve-environment=true
users=greatwall


并且修改默认的文件系统挂载配置文件 /etc/schroot/default/fstab, 具体内容如下:

原始信息:


# fstab: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           none    rw,bind         0       0
/sys            /sys            none    rw,bind         0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
tmpfs         /dev/shm        tmpfs   defaults         0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
# It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot.  However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
#/run           /run            none    rw,bind         0       0
#/run/lock      /run/lock       none    rw,bind         0       0
#/dev/shm       /dev/shm        none    rw,bind         0       0
#/run/shm       /run/shm        none    rw,bind         0       0


修改为:


# fstab: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           proc    defaults         0       0
#/sys            /sys            none    rw,bind         0       0
#/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
tmpfs         /dev/shm        tmpfs   defaults         0       0
#/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
# It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot.  However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
#/run           /run            none    rw,bind         0       0
#/run/lock      /run/lock       none    rw,bind         0       0
#/dev/shm       /dev/shm        none    rw,bind         0       0
#/run/shm       /run/shm        none    rw,bind         0       0


2.切换文件系统,并完成初始环境安装

使用以下命令进入新搭建的 i386 文件系统中:


$ sudo -i
# schroot -c chroot:i386

2020102811151667.png

安装中文语言包及环境依赖:


# apt install locales
# dpkg-reconfigure locales

20201028111655951.png

继续安装字库:


# apt install xfonts-wqy


安装环境依赖库


# apt install git
# apt install wget
# apt install zenity
# apt install cabextract
# apt install libcanberra-gtk-module
# apt install libcanberra-gtk*
# apt install locate


三、编译 Box86

下载 box86 源代码:

# su ww //切换到普通用户下
$ mkdir -p /home/ww/box86/source
$ cd /home/ww/box86/source
$ git clone https://gitee.com/beimangshan/box86.git



2. 使用 cmake 构建编译:

这里官网上有相关描述,

20201028113215192.png我们使用的是 X86 Linux 环境,所以使用以下命令进行构建编译


$ cd box86
$ mkdir build && cd build
$ cmake .. -DLD80BITS=1 -DNOALIGN=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
$ make && sudo make install

20201028113454941.png20201028113532548.png

四、编译 Wine

从 wine 官方网站获取最新稳定版本的 wine 源码包,这里使用的是 wine-5…19 版本。然后解压编译,具体如下:


$ tar -xvf wine-5.19.tar.gz
$ cd wine-5.19/build


这里需要注意,编译 wine 所依赖的环境库会很多,所以都需要事前安装好,具体如下:


# 修改环境源:
$ sudo apt-get install apt-transport-https
$ sudo vi /etc/apt/source.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install aptitude
$ sudo apt-get install  lib32-nvidia-utils 
$ sudo apt-get install libxnvctrl-dev
$ sudo apt-get install mingw-w64-i686-dev
$ sudo apt-get install libxcursor-dev
$ sudo apt-get install libxi-dev
$ sudo apt-get install libxxf86vm-dev
$ sudo apt-get install libxrandr-dev
$ sudo apt-get install llibxfixes-dev
$ sudo apt-get install libxinerama-dev
$ sudo apt-get install libxcomposite-dev
$ sudo apt-get install libosmesa6-dev
$ sudo apt-get install beignet-dev
$ sudo apt-get install libpcap0.8-dev
$ sudo apt-get install /testing 1.004-1 all
$ sudo apt-get install libbusiness-isbn-perl
$ sudo apt-get install libsane-dev
$ sudo apt-get install libusb-libusb-perl
$ sudo apt-get install libusb-ocaml-dev
$ sudo apt-get install libv4l-dev
$ sudo apt-get install libgphoto2-port12
$ sudo apt-get install libgphoto2-dev
$ sudo apt-get install liblcms2-utils
$ sudo apt-get install libpulse-ocaml-dev
$ sudo apt-get install libpulse-dev
$ sudo apt-get install librust-gstreamer-sys-dev
$ sudo apt-get install libqt5gstreamer-1.0-0
$ sudo apt-get install libgudev1.0-cil-dev
$ sudo apt-get install libsdl2-net-dev
$ sudo apt-get install libfaudio-dev
$ sudo apt-get install libcapi20-dev
$ sudo apt-get install libcupsfilters-dev
$ sudo apt-get install libcups2-dev
$ sudo apt-get install libfcft-dev
$ sudo apt-get install libxft-dev
$ sudo apt-get install libgsm1-dev
$ sudo apt-get install libkrb5-dev
$ sudo apt-get install libtiff5-dev
$ sudo apt-get install libmpg123-dev
$ sudo apt-get install libopenal-dev
$ sudo apt-get install libvulkan-dev
$ sudo apt-get install libvkd3d-utils1
$ sudo apt-get install libldap2-dev
$ sudo apt-get install libldap-ocaml-dev
$ sudo apt-get install binutils-mingw-w64-i686
$ sudo apt-get install libhbalinux-dev
$ sudo apt-get install liblcms2-dev
$ sudo apt-get install libvkd3d-dev
$ sudo apt-get install vkd3d-demos


编译构建wine:


$ ../configure --prefix=/usr/local/wine-i386-5.19/
$ make && sudo make install


在 i386 文件系统中配置环境后,可以正常使用 wine,如下:


$ export PATH=$PATH:/usr/local/wine-i386-5.19/bin/
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/wine-i386-5.19/lib/
$ export DISPLAY=:0


运行结果

将环境搭建好之后,执行命令测试是否可以正常安装微信。


$ box86 wine winecfg


执行该操作能够正常显示wine环境设置菜单,表示基本环境已经配置好了。


$ box86 wine WeChatSetup.exe


20201028153938424.png20201028154203411.png

确实是能够正常安装微信,但是中文字符有乱码的现象。不过安装完成后却运行不了,显示如下现象:

20201028164430991.png

总结

实验最终,还是未能正常运行启动微信,并且发现连一直在ARM环境下能够正常启动的红警(rad2.exe)也不能正常运行起来。最后判断应该是在X86环境下编译构建的box86并不能良好运行。所以对于ARM下不能正常安装并且运行微信(box86+wine)的问题还是没有得到解决,只能另找方法了。


相关文章
|
2天前
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
|
8月前
|
Linux 开发者 Windows
第十九章、【Linux】开机流程、模块管理与Loader
第十九章、【Linux】开机流程、模块管理与Loader
52 0
|
2天前
|
Linux 测试技术
Linux基础项目开发1:量产工具——输入系统(三)
Linux基础项目开发1:量产工具——输入系统(三)
52 0
Linux基础项目开发1:量产工具——输入系统(三)
|
存储 Linux
华为工程师发布最新补丁,实现对 AArch64 硬件的 Linux 镜像内存支持
早在 2015 年,Linux 内核就已支持 x86/x86_64 的 UEFI 镜像内存功能,而对于华为来说,为 AArch64 添加该功能也是他们一直在努力的事情。4 月 14 日,华为工程师 Wupeng Ma 发布了最新补丁集,实现了对 AArch64 硬件的这种 Linux 镜像内存支持。
189 0
华为工程师发布最新补丁,实现对 AArch64 硬件的 Linux 镜像内存支持
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
|
Ubuntu Linux
Linux驱动开发: Ubuntu(PC机)系统上编译驱动并加载测试
Linux驱动开发: Ubuntu(PC机)系统上编译驱动并加载测试
563 0
|
Web App开发 Linux Shell
Linux终端复合软件
需求 1、当网络连接状态不好的时候,不会导致命令中断2、用户需要长时间运行的命令。 1、nohup/setsid/& 参考资料:https://blog.csdn.net/stpeace/article/details/76389073https://blog.
1051 0
|
Linux Ubuntu
阿里云各Linux发行版netcore兼容性评估报告---来自大石头的测试
阿里云各Linux发行版netcore兼容性评估报告---来自大石头的测试  结论:    优先选择CentOS/Ubuntu,可选AliyunLinux(CentOS修改版)                外传:    大神可选FreeBSD+Mono                    网名:浩秦; 邮箱:root#landv.pw; 只要我能控制一個國家的貨幣發行,我不在乎誰制定法律。
1177 0