使用wine在ubuntu上运行和制作deb安装包

wine原理

wine通过在linux上模拟windows的API,加载并运行windows程序。那么,wine具体是如何实现的?

windows和linux,作为典型的PC操作系统,分为内核态的系统调用和用户态的API。linux上,用户态的API通过glibc来条用系统调用(int 0x80), windows通过ntdll.dll来调用内核态(syscall, 最早也是int中断)。

所以在linux上模拟windows的api是可能的,只要实现了ntdll的API兼容实现(部分或者全部),在通过对PE文件的拆解和定位,就可以将所有的调用通过树状结构汇总到ntdll。

然而是线上,还是相当工作需要执行,比如如何在用户态或者linux内核其他对象来模拟windows的句柄概念(windows内核对象的访问方式)?

初始化windows执行基础环境

$ WiNEPREFIX=/home/.mine/win7 wine winecfg

安装依赖库

$ WINEPREFIX=/home/.mine/win7 winetricks vcrun6

测试验证程序

$ WINEPREFIX=/home/.mine/win7 wine registry.exe

deb打包

deb打包有详细的debian文档支持,这里从一个已有的deb包作为base来打包。
deb打包需要在DEBIAN目录下修改至少以下3个文件:

DEBIAN/control
DEBIAN/postinst
DEBIAN/md5sums

下载一个deb包,这里以tdx的deepin包为例,通过dpkg-deb命令解包和提取配置信息。

参考 基于deepin-wine的windows软件打包deb安装包教程(本實例安裝qq)

准备files.7z

将win7的运行基础环境通过7z压缩,注意目录前缀(确保drive_c在第一级)
替换opt子目录下的files.7z。用以下脚本打包:

#!/bin/bash
cd env 
7z a ../extract/opt/apps/com.hd.deepin/files/files.7z *
cd ..
find extract/opt -type f -print0 |xargs -0 md5sum > extract/DEBIAN/md5sums
dpkg-deb --build extract/ build/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值