使用wine在ubuntu上运行和制作deb安装包
admin
2024-02-22 11:11:04

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/

相关内容

热门资讯

牡丹江市公务员绩效工资怎么算,... 长期以来,我国各地公务员工资参差不齐,且大规模的薪酬改革已多年未做调整。比如,北京市从2003年实施...
哈尔滨市公务员绩效工资怎么算,... 一直以来,公务员调薪是大众较为关注的话题之一。可以说,公务员调薪每每出现,必成为舆论的主角,引起公众...
黑龙江省公务员绩效工资怎么算,... 今天,我省公务员管理工作会议召开,强调今年我省将加大基层一线公务员选拔力度,优化公务员队伍结构,加大...
最新或2023(历届)最新年终... 根据《国家税务总局关于调整个人取得全年一次性奖金等计算征收个人所得税方法问题通知》(国税发[2005...
最新或2023(历届)最新西... 西宁工资扣税标准是怎样的?西宁工资交税市如何计算的?西宁工资的税率表是如何的?太阳教育网小编为你解答...