[ Content contribution] EasyKVM——分享一个方便使用kvm虚拟机的脚本
Tofloor
poster avatar
DebuggerX
deepin
2025-10-13 12:45
Author

项目地址: https://github.com/debuggerx01/easy_kvm

这是一个通过调用kvm命令来使用和管理虚拟机的脚本,不追求功能全面,而是着眼于最常用的几个简单虚拟机使用场景。所以它并不是VirtualBox、VMWare等全功能虚拟机软件的替代品,但在某些简单场景下可以提供更加简单易用的体验。

easy-kvm.png

功能特性

  • 直接运行Qemu/KVM,极致轻量,且不存在内核升级后虚拟机不可用的问题
  • 创建安装虚拟机仅需要输入虚拟机名称和硬盘尺寸,再选择安装镜像ISO即可,极致傻瓜化
  • 运行虚拟机时根据宿主机配置自动应用合适的参数,适用于绝大多数场景
  • 支持一键运行ISO镜像文件,方便以LiveCD方式试用各种发行版
  • 支持虚拟机硬盘文件压缩、备份和还原,方便开发测试场景
  • 通过内置quickemu,支持自动下载安装windows和macos虚拟机

限制和不足

  • 仅支持x64处理器,arm及其他国产cpu不受支持
  • 太旧的发行版可能无法正常使用,如deepin v20
  • 虚拟机仅支持默认的网络模式,不适用需要桥接的场景
  • 不提供usb等硬件挂载的方法,不适用有相关需求的场景

在线安装

curl -sSL https://easy-kvm-storage.debuggerx.com/vm.sh | bash -s -- --install

每日首次启动时会检查更新,如果提示有新版本,请再次执行上面的命令用于更新脚本。

使用说明

本脚本分为两大块:

  1. 对常用Qemu/KVM命令的TUI化,适用于Linux发行版尝鲜、开发调试、以及运行较老版本Windows(Win10之前版本)等场景
  2. 对Quickemu项目的二次封装,适合用于体验MacOS系统和日常使用Windows虚拟机弥补Linux系统生态的不足

以下分场景介绍使用方法

EasyKVM——常规用法演示

安装运行Linux或Windows系统

使用上面的命令在线安装脚本后,如果一切顺利,将自动安装所需依赖,向启动器添加EasyKVM图标,并自动向终端添加 vm的命令别名。

日常使用脚本既可以点击EasyKVM启动器图标运行,也可以在打开终端后输入 vm命令回车运行。

进入脚本后,方向键移动高亮项为 新建虚拟机后回车,在二级菜单中输入虚拟机名称和想要分配的硬盘容量后回车,在弹出的文件选择器中点选系统iso镜像后,将自动打开虚拟机窗口,此时请按手动完成虚拟机系统的安装。

当虚拟机系统安装完成,想要打开已安装的虚拟机时,只需运行脚本,已安装的虚拟机将以选项的形式出现,只需通过方向键移动高亮项并回车,即可运行虚拟机。

管理虚拟机

运行脚本,选择 管理虚拟机选项,可以对已安虚拟机行管理操作:

  • 备份虚拟机镜像: 通过压缩保存虚拟机硬盘的方式进行备份
  • 还原虚拟机镜像: 通过解压覆盖之前备份的虚拟机硬盘文件的方式实现还原
  • 压缩虚拟机镜像: 回收虚拟机中删除文件后未释放的空间,减少实际磁盘占用
  • 删除虚拟机: 彻底删除该虚拟机的硬盘文件及备份

试用iso

不创建虚拟机硬盘文件,仅加载发行版的iso镜像,适合用于有LiveCD模式的发行版的体验。

QuickEMU

目前支持通过QuickEMU下载安装和启动的系统包括:

  • Win10、Win11
  • MacOS Monterey、Ventura、Sonoma
  • Windows系统安装完成后默认密码是 quickemu
  • MacOS系统安装后建议更换壁纸为纯色以提高响应速度
  • 进一步提高MacOS虚拟机的速度,可以参考github.com/sickcodes/osx-optimizer进行优化
  • 如果安装过程中失败,QuickEMU虚拟机既无法启动也不能重装,请手动删除 ~/qemu/目录下系统对应的文件夹及 .conf文件

视频演示:

进阶用法

手动设定虚拟机参数

如果希望启动虚拟机时使用自定义参数,可以直接在 vm命令后添加qemu/kvm参数,例如:

  1. 想要指定虚拟机的cpu核心数和内存大小:

    vm -smp 8 -m 16G
    
  2. 想要指定虚拟机的虚拟显卡类型:

    vm -vga virtio
    

    图形这部分参数的设置可以参考ArchLinux中文维基-QEMU-图形,比较推荐的选项是:

    • virtio: 多数发行版和桌面环境默认支持的模式,可以实现根据虚拟机窗口大小自动调节分辨率,建议优先尝试
    • vmware: 如果virtio有问题,可以尝试这个模式,它自带了很多分辨率选项,适合无法正常调节虚拟机分辨率时使用
    • std: 上面两种模式在非图形界面下可能会存在显示问题,此时可以选择std或者不指定类型
  3. 进行端口映射:

    vm -nic user,hostfwd=tcp::8022-:22
    

    这个命令可以将虚拟机的22端口转发到宿主机的8022端口,这样就可以通过 ssh [user]@127.0.0.1 -p 8022登录到虚拟机系统了

    针对端口映射,有两个快捷参数:

    • vm --ssh: 将虚拟机的22端口转发到宿主机的8022端口
    • vm --web: 将虚拟机的8080端口转发到宿主机的8080端口

设置虚拟机默认参数

上面介绍了通过追加命令行参数的方式实现虚拟机设置。

也可以把最常使用的参数设置为全局参数,这样不论是直接通过图表启动还是输入 vm命令启动脚本,这些参数都会生效,例如:

vm --set-params -nic user,hostfwd=tcp::8080-:8080 -vga virtio

查看当前设置的参数,请使用:

vm --params

清空已经设置的全局参数,可以执行:

vm --set-params

虚拟机中访问宿主机数据的方法

由于qemu默认使用nat方式为虚拟机提供网络,所以虚拟机中一般都可以通过 10.0.2.2访问宿主机,所以可以:

  • 在宿主机上启动文件服务或接口,例如 python3 -m http.server 9999,然后虚拟机中就可以通过浏览器访问 http://10.0.2.2:9999
  • 在宿主机配置smb局域网共享文件夹,然后虚拟机中就可以通过 smb://10.0.2.2/来访问

直接启动指定的虚拟机

如果想要通过脚本、命令或者编写桌面图标的方式启动指定的虚拟机,可以用如下方法:

  1. 对于常规的虚拟机,只要先切换到虚拟机镜像所在目录,然后执行 vm命令,即可打开这个虚拟机,例如:
    cd ~/qemu/deepin_v25/ && vm
    
  2. 对于QuickEMU管理的虚拟机,可以通过 quickemu命令启动,例如:
    quickemu --vm ~/qemu/windows-11-Chinese-Simplified.conf
    
Reply Favorite View the author
All Replies
deepin-流云
Moderator
Community OP
2025-10-13 13:27
#1

感谢分享kissing_heart

Reply View the author
HualetWang
deepin
2025-10-13 14:27
#2

like

Reply View the author
神都王子
deepin
2025-10-13 14:36
#3

可惜了,不支持国产的u。否则大有可为哦。

Reply View the author
MeGusta
deepin
2025-10-13 21:04
#4

多谢分享~

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2025-10-13 23:12
#5

大佬又出好东西了😁

优秀

Reply View the author
晚秋(lateautumn)
Moderator
2025-10-14 09:47
#6

收藏备用,谢谢分享applaud

Reply View the author
和光同尘
deepin
11 hours ago
#7

感谢分享

Reply View the author