【麒麟/统信UOS】国产化虚拟化方案产品分享 前言本人在麒麟和统信UOS桌面系统下进行应用开发近3年是面向国企的虚拟化方案产品项目安装windows虚拟机串口、并口、USB等硬件设备从物理机映射到虚拟机中使用并延伸开发两个系统的融合功能以C开发实现图形化后台服务本篇涉及的内容较多但整体精简会提供以前分享过的相关内容传送门方便接续阅读。一、麒麟/统信UOS系统对比麒麟和统信UOS桌面系统是最常用的两个国产操作系统信创项目基本是用这两个系统进行搭建统信UOS的授权要贵一些专业版统信UOS授权通常是3个月麒麟系统授权通常是1年授权主要影响应用商店和apt仓库下载软件以及合法性超过试用期不影响已经部署的应用的运行。以下整理了一份两个系统的发展史通过其挂靠过的开源linux系统可以大致了解这两个系统的特性类似Debian、Ubuntu。在这两个系统上很多常用的linux开发库是通用的开发的程序在这两个系统之间兼容性比较强即开发一个程序在两个系统上都可以运行选择哪个系统看客户的需求。通常客户要求送测的都要求在这两个系统上进行测试另外需要提醒的是麒麟和统信UOS是从各自的APT仓库下载的开源软件/依赖包版本是有可能不同的比如libopencv、openssl的开发库等。因为涉及国企/ZF的国产化项目基本上这两个系统都要进行兼容性测试。二、项目开发1、开发环境搭建1apt下载基础环境、开发库等系统自带有gccg、make等从APT仓库中获取即可C/C开发过程中大部分的库都可以从APT仓库获取获取不了的再找源码来编译。sudo apt install g,make注意桌面系统默认登录的是普通用户下载的东西会安装到系统级的目录中比如/usr/bin等必须提供管理权限。2安装qtcreator可以下载官方的历史版本或者到qt官网下载安装工具自动在线下载这种方式需要一个qt官网注册的账号密码网上的资料比较多也比较全我这里不占用篇幅来介绍。以下提供创建第一个QT项目的链接传送门【QT入门到晋级】创建第一个QT项目3安装QT应用打包工具做linux服务器端应用开发的生产环境的服务器通常跟开发环境下载同样的依赖库及相关工具在麒麟/统信UOS桌面系统上这样安装也能执行QT编译好的应用但是这样就需要维护人员耗费时间去安装qtcreator维护成本增加所有需要一个工具把QT编译好的应用依赖的库全部搜集到同级目录下linux 版本的qtcreator是不带有这个打包工具的但有开源项目需要自己编译。以下是linux qt打包工具linuxdeployqt的链接传送门QT使用linuxdeployqt打包这个链接里面涉及了用cmake编译linuxdeployqt项目中需要编译开源项目的源码时可以参考。另外如果打包后还有缺失依赖库可以用ldd命令查看应用缺少哪些动态库直接从开发环境中拷贝出来一起打包到生产环境中。4打应用发布deb包相当于打包麒麟/统信UOS应用的一键安装的工具客户是可以直接进行安装操作比提供shell脚本的升级方式更好维护最好是开发架构极少改动之后再安排打deb包。以下是打deb包的链接传送门【国产桌面操作系统】QT应用打deb包成熟产品的交付肯定是提供一个deb包用户或者技术支持人员在任意的麒麟/统信环境下都可以安装是最好的交付方式。2、国产化虚拟化方案项目分享1国产化替代背景国企/ZF项目的国产化替代都会经历以下3个阶段window上的业务应用改造决定所属阶段阶段一所有业务应用都需要在windows进行需要windows虚拟机进行支持阶段二核心的业务系统应用已经完成国产化改造但有部分功能模块无法改造比如涉及IE浏览器访问的站点系统太老找不到原开发厂家当用到这部分无法改造的业务应用时需要windows虚拟机进行支持阶段三核心业务系统已包含全部与业务有关的功能模块此时可以删除掉虚拟机。2做虚拟化方案的知名产品/厂商分类两种类型的厂商纯软件产品厂商售卖信创终端并配套虚拟机方案产品的厂商。纯软件产品厂商统信UOS系统的彩虹平台麒麟系统的信安云其他知名的产品铠大师好办公等终端配套虚拟机方案厂商知名的厂商升腾等这里不做列举。像长城、国光等大牌厂商实际是集成了铠大师之类的纯虚拟化产品之后再售卖给客户。3、虚拟化方案产品详细介绍虚拟机选型KVM或者virtualBox这两个作为第三方工具使用时无版权纠纷。在虚拟化方案中这两种虚拟机各有特点KVM优点适合以后台服务器方式部署运行性能稳定需要配置的资源较少不容易死机缺点桌面全屏显示windows系统时画质比较简陋以KVM为主的厂商因为显示window桌面效果比较差几乎都是面向阶段二。技术特点以远程桌面技术RDP在麒麟/统信UOS的桌面直接显示window的应用只有需要维护时才会进行windows桌面比如在windows中增加新的打印机。virtualBox优点桌面和服务器方式部署都支持桌面模式显示的效果与直接安装window几乎一样缺点桌面模式比较吃资源长期运行会有死机现象后台模式整体会比KVM差一些包括资源、性能等指标以virtualbox为主的厂商可以同时用于阶段一和阶段二。技术特点阶段一直接全屏显示windows桌面阶段二可以使用远程桌面技术RDP来显示window的应用也可以深度使用virtualbox的无缝模式Seamless Mode来显示window的应用。以下是我整理的虚拟机功能及后台命令的链接传送门【linux】KVM、vbox虚拟机重要的后台命令通用的虚拟化产品功能设备管理主要是USB、串口和并口设备。串口和并口设备只能在虚拟机关闭的情况下配置是否映射到虚拟机中而USB设备不受限制并且很多虚拟化厂商会提供USB网络共享功能。USB设备可以使用虚拟机特性把USB设备透传进虚拟机虚拟机对同时透传的设备数量有限制也可以使用USB网络共享技术在虚拟机中通过绑定共享USB设备进行使用。kvm使用的是libusb-dev库实现透传功能vbox是自有命令行进行透传另外在国产系统侧还需要结合libudev-dev库来捕获更详细的USB详细和事件。以下提供udev开发的案例链接传送门【Linux C/C开发】udev监测USB事件串口设备只能使用虚拟机的特性透传进虚拟机中透传方式参见【linux】KVM、vbox虚拟机重要的后台命令。如果有串口设备测试开发需求可以参见以下串口工具的案例【QT常用技术讲解】QSerialPort串口开发包含文件发送功能如果需要监听第三方业务应用的发送/接收数据是否正常可以参见以下监听头制作的方法【DIY】RS232串口监听头制作并口设备只能使用虚拟机的特性透传进虚拟机中透传方式参见【linux】KVM、vbox虚拟机重要的后台命令需要特别注意的是麒麟和统信UOS下如果要把并口透传到虚拟机需要先卸载本地的lpt模块再进行透传如果设置了共享打印机就不需要进行透传操作了。Linux使用打印机是CUPS是苹果贡献给UNIX的Linux适配成systemV标准之后Linux的各个发行版本都使用CUPS做为打印机管理软件这是开源的软件统信UOS和麒麟都预装有CUPS在工具栏搜【打印机】即可界面操作。关联知识可以参见链接传送门【国产桌面操作系统开发】获取系统硬件信息网络管理至少需要支持桥接模式和NAT模式。桥接模式虚拟机与物理机共用一个网口且在同一个局域网内相互之间可以访问。这是最简单也是最原始的方式但物理机和虚拟机都是配置业务网络的IP地址严格要求IP资源的客户通常不允许使用这种模式。NAT模式虚拟机通过物理机的IP与其他终端通信当业务应用开启网络访问端口时必须在物理机上进行网络端口映射其他终端才能正常访问虚拟机中的业务应用的网络访问端口。只需要物理机设置业务网络的IP地址即可但是以下业务场景需要额外开发IP映射功能①window虚拟机中的客户端获取本地IP地址并通过网络把这个IP传输给服务器然后开启指定端口访问比如9099②客户端5分钟内未与服务器端有业务交互则服务端通过之前客户端上传的本地IP地址主动发送一个心跳确认包给客户端如果客户端不响应就清空业务缓冲区以上场景中客户端获取到的本地IP地址是NAT网络地址比如10.0.0.5这个肯定与物理机比如192.168.1.202不在同一个网络当服务器比如192.168.1.2向客户端10.0.0.5发送信息时必然会被丢弃而服务器比如192.168.1.2应该向物理机192.168.1.202发送信息再由物理机通过端口映射转发到虚拟机的客户端才能完成网络传输。所有NAT模式下需要提供针对指定的业务应用进行IP映射的功能成熟的虚拟化方案产品基本都包含这个IP映射功能。应用发布主体是实现把window虚拟机中的业务应用发布到麒麟/统信UOS系统的桌面然后用户点击麒麟/统信UOS系统的业务应用桌面图标即可打开window中的应用。不少虚拟化产品厂商会收集window桌面的lnk链接提取exe的图标及exe路径信息自动发布到麒麟/统信UOS系统的桌面上感官上觉得物理机和实体机的桌面融合在一起。另外也通过smb等目录共享功能实现麒麟/统信UOS系统的桌面与window虚拟机的桌面进行文件共享屏蔽.lnk文件用户在使用window的业务应用涉及文件保存时文件能直接同步到麒麟/统信UOS系统的桌面上。这里我只简单的分享主流用RDP方式实现应用发布功能的关键技术点window端需要进行破解取消并行打开及数量限制同时也可以改变RDP的端口Linux端如果只是简单的用从统信UOS的商店中下载xfreerdp用命令行可以直接实现打开window端的应用。如果需要深度使用单个xfreerdp显示出业务应用需要耗时几十秒才能完成window用户登录及打开业务应用的操作这是很影响产品体验的。可以下载xfreerdp源码进行编译把代码拆分成两个模块负责常驻登录及接收交互信息的服务端以及申请打开业务应用的客户端这种方案只需要登录一次window用户业务应用显示在3秒内。这部分是产品的核心模式只提供以上技术思路。EXE应用一键安装为了体现物理机与虚拟机的融合产品亮点当用户把.exe文件放到麒麟/统信UOS桌面上因为桌面同步功能的原因在window的桌面中已经存在这个文件然后点击桌面的.exe文件时即可调用RDP打开window桌面上的改.exe应用用户感观上即是国产操作系统可以直接运行.exe文件。文件夹共享可以把麒麟/统信UOS系统上的文件夹共享到window虚拟机中USB插入主机设备后在麒麟/统信UOS系统中也是一个文件夹也可以进行共享这也是用户喜欢的功能之一。篇尾国产化虚拟化方案只是一个过渡阶段最终会被遗弃但对国产化的平滑过渡起到关键的作用。