7 个不稳定版本 (3 个破坏性更新)
0.4.2 | 2024年1月31日 |
---|---|
0.4.1 | 2024年1月27日 |
0.3.0 | 2024年1月23日 |
0.2.0 | 2024年1月20日 |
0.1.1 | 2024年1月20日 |
#29 in 模拟器
每月21次下载
105KB
3K SLoC
emu-cli: qemu 的一个小型控制工具
emu-cli
安装 emu
工具,这是一个 CLI 程序,目前旨在使 Linux 桌面用户使用 x86 VM 更容易。
观看操作视频: YouTube
它包含以下命令:
- 以系统全局集群的方式管理 VM
- 在同一个地方列出所有 VM,以及它们的运行状态
- 从其他来源克隆和导入 VM
- 创建、删除、启动、停止和重启 VM
- 可以附加 ISO
- 您可以选择是否有图形屏幕来启动 VM
emu
不必运行即可维护您的 VM
- 导入和克隆 VM 映像
- 维护快照和保存状态
- 使用 systemd 监督 VM
- 使用用户配置文件 (
systemctl --user
) - 了解它维护的系统单元
- 当 VM 被删除时删除它们
- 使用用户配置文件 (
- 管理 VM 设置
- RAM、CPU、视频和 CPU 类型
- 将端口转发到 VM 网络
- 定义一个始终与 VM 一起存在的 SSH 端口,并使用
emu ssh
来访问它 - 使用
emu nc
来探查和操作您的 VM,它会在 VM 上的端口上打开一个 TCP 套接字 - 通过使用 qemu QMP 命令来控制您的 VM
需求
Linux使用systemd和qemu。它按照XDG标准放置事物,这意味着$HOME/.local
将包含虚拟机等。
要构建软件,您需要一个有效的rust环境。我强烈推荐rustup。
稳定性
emu仍在进行一些UI更改。我经常使用它,但可能还需要进行一些额外的工作以实现更大的目标,这些工作会改变目前的一些小事物。
emu存在一些bug,尤其是在与您的虚拟机相关的时候,可能会有一些特别棘手的问题。我不会在数据完整性至关重要的环境中使用emu。
安装
cargo install emu-cli
安装完成后,您可以使用emu
来调用该软件。
用法
$ emu create myvm 50 # gigabytes of storage
# start the vm with the cdrom set to the ubuntu iso. Press ^C to terminate the vm.
$ emu run myvm --cdrom ubuntu.iso
# make a copy before doing something dumb
$ emu clone myvm myvm.template
$ emu list
myvm (unsupervised) (size: 6.10 GB)
myvm.template (unsupervised) (size: 6.10 GB)
# supervision in systemd
$ emu supervise myvm
$ emu supervised
myvm: not running
$ systemctl --user start myvm.emu # or enable it, if you'd like. it sticks to your login session.
$ emu list
myvm (supervised: running) (size: 6.10 GB)
myvm.template (unsupervised) (size: 6.10 GB)
$ systemctl --user stop myvm.emu # graceful shutdown
$ emu unsupervise myvm
# run detached and without a screen
$ emu run --detach --headless myvm
$ emu list
myvm (pid: 8675309) (size: 6.10 GB)
myvm.template (unsupervised) (size: 6.10 GB)
# ssh support
$ emu config port map myvm 2222 22
$ emu config set myvm ssh-port 2222
$ emu ssh myvm
myvm$ exit
# nc support
$ emu config port map myvm 8000 80
$ emu nc myvm 8000
GET / HTTP/1.1
Host: localhost
HTTP/1.1 403 Forbidden
Connection: close
# cleanup
$ emu shutdown myvm
$ emu remove myvm
$ emu list
myvm.template (unsupervised) (6.10 GB)
配置
当前通过向~/.local/share/emu/<VM>/config
下的文件注入值来提供配置。它使用TOML格式。
配置值
[machine]
部分
memory
:整数;以兆字节为单位的内存。默认为16384。cpus
:整数;CPU核心的数量。默认为8。vga
:字符串;用于与qemu -vga
一起使用的VGA驱动程序名称。默认为virtio
。image_interface
:字符串;使用-drive
与镜像通信时使用的接口名称。建议使用默认的virtio
。cpu_type
:字符串;要支持的CPU类型。必须是x86且对于qemu -cpu
有效。建议使用默认的host
。ssh_port
:整数;用于SSH访问的端口;由emu ssh
使用。默认为2222。
[ports]
只是主机端口(在localhost
上打开)到客户端口(在0.0.0.0
上打开)的键/值映射。不执行其他处理。
配置示例
[machine]
cpus = 4
memory = 512
[ports]
2222 = 22
管理工具
您可以使用emu config <子命令>
子命令来控制这些值。emu config show
、emu config set
和emu config port
可用于管理这些部分。
emu config set
的命令与上述[machine]
部分键相同,只是下划线(_
)被替换为短横线(-
);因此ssh_port
现在是ssh-port
。
$ emu config show myvm
[machine]
cpus = 4
memory = 512
[ports]
2222 = 22
$ emu config port map myvm 2223 23
$ emu config port unmap myvm 2223
$ emu config set myvm ssh-port 2222
$ emu config set myvm cpus 8
$ emu config show myvm
[machine]
cpus = 8
memory = 512
ssh_port = 2222
[ports]
2222 = 22
2223 = 23
许可
MIT
作者
Erik Hollensbe [email protected]
依赖项
~10–23MB
~313K SLoC