#vm #qemu #linux #ui #user-profile #networking #cli

bin+lib emu-cli

Linux 桌面友好的 CLI qemu 管理工具

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次下载

MIT 许可证

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 showemu config setemu 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