码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用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
    
    • 1

    安装依赖库

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

    测试验证程序

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

    deb打包

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

    DEBIAN/control
    DEBIAN/postinst
    DEBIAN/md5sums
    
    • 1
    • 2
    • 3

    下载一个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/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    实时聊天系统PHP
    【YOLOv5】实现扑克牌的点数识别
    docker容器化
    go, 坑爹的面向对象
    Debezium系列之:深入理解临时阻塞快照
    大数据毕设选题 - 生成对抗网络的照片上色动态算法设计与实现(深度学习 opencv python)
    HUDI概述
    实践分享:vue模块化基本用法
    【多服务场景化解决方案】AR虚拟技术助力智能家装
    什么是智能档案柜?如何使用智能档案柜?
  • 原文地址:https://blog.csdn.net/wuzh1230/article/details/128075235
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号