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)的问题还是没有得到解决,只能另找方法了。


相关文章
|
6月前
|
缓存 Linux Windows
linux(三十三)系统信息命令top系统分析
linux(三十三)系统信息命令top系统分析
121 1
|
4月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
27天前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
61 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
5月前
|
Linux Shell
保姆级只需五步linux中安装aapt(64位)的方法
保姆级只需五步linux中安装aapt(64位)的方法
|
6月前
|
编解码 Linux
Linux基础项目开发1:量产工具——显示系统(二)
Linux基础项目开发1:量产工具——显示系统(二)
72 0
Linux基础项目开发1:量产工具——显示系统(二)
|
6月前
|
Linux 测试技术
Linux基础项目开发1:量产工具——输入系统(三)
Linux基础项目开发1:量产工具——输入系统(三)
77 0
Linux基础项目开发1:量产工具——输入系统(三)
|
12月前
|
Linux 开发工具 虚拟化
关于【firefly-rk3399】的环境配置以及编译内核遇到的问题,烧写update.img相关量产工具的说明(一)
关于【firefly-rk3399】的环境配置以及编译内核遇到的问题,烧写update.img相关量产工具的说明(一)
144 0
|
12月前
|
Ubuntu Linux 开发工具
关于【firefly-rk3399】的环境配置以及编译内核遇到的问题,烧写update.img相关量产工具的说明(二)
关于【firefly-rk3399】的环境配置以及编译内核遇到的问题,烧写update.img相关量产工具的说明(二)
113 0
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
|
Ubuntu Linux
Linux驱动开发: Ubuntu(PC机)系统上编译驱动并加载测试
Linux驱动开发: Ubuntu(PC机)系统上编译驱动并加载测试
674 0