Hyper-V与VMware的区别与共存

Hyper-V

Hyper-V,代号Viridian,旧称Windows Server Virtualization,是Microsoft的本地虚拟机管理程序,它可以在运行x86-64位的Windows上创建虚拟机。从Windows 8开始,Hyper-V取代Windows Virtual PC作为Windows客户端版本的硬件虚拟化组件。可以配置运行Hyper-V的服务器计算机能够将单个虚拟机公开到一个或多个网络。Hyper-V是与Windows Server 2008一起首次发布,自Windows Server 2012和Windows 8以来一直无需额外付费。独立的Windows Hyper-V Server是免费的,但仅具有命令行接口。

省流:Hyper-V是微软自己系统的虚拟化工具

VMware

Vmware是一家提供云计算和硬件虚拟化的软件和服务的公司。

下列的Vmware部分代指Vmware Workstation
VMware Workstation是VMware公司销售的商业软件产品之一。该工作站软件包含一个用于英特尔x86兼容电脑的虚拟机套装,其允许用户同时创建和运行多个x86虚拟机。每个虚拟机可以运行其安装的操作系统,如(但不限于)Windows、Linux、BSD变生版本。用简单术语来描述就是,VMware Workstation允许一台真实的电脑在一个操作系统中同时开启并运行数个操作系统,其它VMware产品帮助在多个宿主电脑之间管理或移植VMware虚拟机。免费版本为VMware Workstation Player。
VMware Fusion是VMware针对Mac电脑推出的一款虚拟机软件。

省流:Vmware是针对商业化使用的虚拟化软件

Hyper-V VS VMware

Hyper-V的优势

  1. Windows 8及以上专业版自带,无需下载安装即可免费使用(开箱即用)
  2. 虚拟磁盘采用的是vhd/vhdx格式,可以直接挂载到Windows上读取文件(假如是Linux的话还是不可以的)
  3. 动态资源调度,可以动态调度内存和CPU,自动分配资源。
  4. 挂起速度快,检查点效率较高

VMware的优势

  1. 可以动态调整窗口大小(需要安装open-vm-tools)
  2. 可以宿主机和虚拟机复制粘贴文件
  3. 可以直通USB设备(U盘、网卡、蓝牙之类的)
  4. 可以通过vmware-tools调用GPU,DirectX11及以上版本可以调用主机显卡(Vulkan在VMware Workstation 17是支持的)
  5. 支持更多操作系统,可以一键安装

Hyper-V和VMware结构区别

借用知乎老哥的一张图

省流1:开了Hyper-V的Windows实际上的相当于是运行在Hyper-V中的虚拟化Windows,即Type1中的GuestOS VM。
省流2:使用VMware是在系统层上跑的虚拟化软件,实际上相当于Type2中的Hypervisor

所以开了Hyper-V后,Windows性能会有一定降低,而Vmware是运行在Host OS(宿主机系统)上的一个虚拟化软件,效率相对来说更高
(经过更新优化,现在Hyper-V性能降低感知不明显)

由于兼容性问题,两个Hypervisor层是不能共存的,这也就造成了Hyper-V系统和VMware不能同时使用。
于是VMware想了个招,将自己套在了Hyper-V中,再使用里面的资源虚拟化,这样就解决了Hyper-V和VMware共存的问题了。
(从Vmware15开始官方就解决了共存问题)
结构类似下图

由于现在Windows很多方便的功能如WSL(Linux 的 Windows 子系统),WSA(Android 的 Windows 子系统),Docker on desktop都需要用到Hyper-V技术,这也就让VMware嵌套一层Hyper-V变得无可厚非

更加详细的可以看Revercc’s Blog的内容

Hyper-V与VMware的共存

由于Hyper-V虚拟机再开启了Hyper-V的情况下,相对于VMware有更好的资源调度优势,运行需要高性能的应用时有一定优势,而VMware在用户界面、管理、体验上均优于Hyper-V,也成为平时使用的首选,可以经过设置在VMware和Hyper-V共享使用虚拟机
下列以Kali Linux为例
首先我们确保虚拟机的Secure Boot是关闭状态,并且磁盘格式为VHD格式,如果不是的话请用工具将其转化为VHD格式

Hyper-V Manager里面既可以实现VHD格式和VHDX格式的相互转换
记住这边的Firmware框起来的设置,后面会有用的

在转换之后记得将虚拟机的磁盘修改为VHD格式

在VMware新建虚拟机,并且选择挂载你刚刚转换的VHD磁盘


Version和Firmware Type要选对应的那个
如果是BIOS启动的话应该可以直接使用了,但是如果是UEFI要进行其他的设置
开机按F2进入Boot Manager

Enter setup->Configure boot options->Add boot option->选择你的磁盘和文件(找回上面你Hyper-V的图,一般为第一个)


找到你的EFI文件并且选择Commit changes and exit
再进入Configure boot options->Change boot order修改启动顺序,保存重启即可

然后两边都可以进入系统,两边都能正常使用了
在进入VMware后记得安装相关vmware-tools才能使用自动调节分辨率,调用GPU等一些相关功能

sudo apt update
sudo apt install open-vm-tools -y

开始快乐使用VMware的各种功能而又可以充分利用Hyper-V的高性能咯

【Web】Anaconda介绍、安装及使用

介绍

Anaconda是Python和Conda的组合包,里面附带了不少科学计算使用的Python依赖,并且可以通过Conda进行版本管理,能够便携获得管理包
Conda不仅支持Python,还支持R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN语言(虽然大部分都用不上)

继续阅读【Web】Anaconda介绍、安装及使用

【WechatBot】基于内存注入下的微信机器人

本文仅作技术分享,提醒各位注意网络应用安全性,请勿用于其他用途,否则后果自负。
前几天写过一篇这样的文章,但是耐不住WgpSecBot总是崩溃,于是打算自己写一个
【脚本】基于WgpSecBot的比赛推送
但是问题又来了,自从腾讯封了Web和UOS协议后,就再也弄不到机器人了。
但是苍天不负有心人,我找到了这个Github-wechat-bot
这个版本是基于对Windows下的微信进行内存注入实现的
继续阅读【WechatBot】基于内存注入下的微信机器人

【WSL】WSL2-Ubuntu安装CUDA

某一天,在摸鱼的时候被人拍了一下,叫我用Kali跑一下hashcat,因为hashcat可以调用CUDA(显卡)模块,加速爆破 虽然实际上,我的CPU跑起来也很快 file 但是,既然来了就研究一下。但是我又不想装多系统,那么就该想想怎么在WSL里面调用CUDA了。

Update: 其实做到最后我又重新做了一遍。原因在于,我的linux核心其实不支持CUDA。 GPU_CUDA_IN_WSL 在安装前,你需要确认一下你的内核版本,只有5.10.43.3以上的版本才是默认支持的

PS C:\Users\hz2016> wsl cat /proc/version
Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021

你需要打开下面的功能,并且把内核更新到最新版 file

  1. 安装Ubuntu的WSL版并换源

由于WSL版的Ubuntu不自带gcc,所以我们在安装CUDA前要自己装一个

apt-get install gcc -y
  1. 安装CUDA for WSL-Ubuntu

CUDA Toolkit官网下载 我安装的十CUDA Toolkit 11.6版本,选择的是Runfile(可执行文件)安装 别问为什么,只要知道我翻车很多次就是了。 file

wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
sudo sh cuda_11.6.2_510.47.03_linux.run

千万别点进去Options的Drives,别问我为什么问就是我在来了一次 file 安装完成

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.6/

Please make sure that
 -   PATH includes /usr/local/cuda-11.6/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.6/lib64, or, add /usr/local/cuda-11.6/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.6/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 510.00 is required for CUDA 11.6 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
    sudo .run --silent --driver 
  1. 添加PATH路径
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. 验证是否更新成功
root@hz2016-pc:~# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0
  1. 更新你的显卡驱动

A driver of version at least 510.00 is required for CUDA 11.6 functionality to work.

打开GPU-Z查看一下 file 发现自己是497.29版本的显卡驱动,于是更新一下 file

然后你就可以在你的WSL里面跑CUDA了~

  1. 安装OpenCL相关(翻车)
apt-get install beignet clinfo
apt-get install beignet-dev
apt-cache search opencl

运行clinfo测试一下

root@hz2016-pc:~# clinfo
······
clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
······

还是找不到GPU,翻了下文档,还是我想多了

OpenGL-CUDA Interop is not yet supported. Applications relying on OpenGL will not work.

要用GPU跑hashcat还是去win版跑吧 file 实测GPU跑比CPU跑快130倍