Archlinux-中使用-kvm-虚拟机

首先需要检查各种支持, 然后加载没有加载的模块, 安装 qemu, 准备一个镜像盘, 之后就可以使用.

创建硬盘镜像

1
$ qemu-img create -f qcow2 archlinux.qcow2 40G

这个东西就相当与是一个硬盘, 或一个分区. 名字无所谓, 但应该要用 .qcow2 作为后缀.

安装操作系统

前面制作的是硬盘. 这里其实就是用启动盘 (.iso) 文件, 来启动并安装, 相当于装系统的时候 USB 启动.

使用无界面 (headless) 模式时, 将会默认在本地 5900 端口启动一个 VNC 服务器, 可以用 TigerVNC 连接到客户机的系统上: vncviewer :5900.

运行虚拟化的系统

根据客户机的架构, 使用 qemu-system-* 程序, 如 qemu-system-x86_64.

这个是启动的命令, 后面跟如 archlinux.qcow2. 就同选择一个硬盘来启动:

1
$ qemu-system-x86_64 archlinux.qcow2

宿主机和虚拟机数据交互

默认情况下, 用户模式的客户机能够通过 10.0.2.2 这个 IP 访问到宿主机. 任何运行于宿主机上的服务端程序都可以通过这个地址被访问到.

QEMU 端口转发

QEMU 能够将宿主机的端口转发到客户机上.

就像端口绑定, 如:

1
$ qemu-system-x86_64 disk_image -nic user,hostfwd=tcp::10022-:22

挂载 qcow2 镜像内的分区

VNC

-vnc :x 选项.

基本的口令验证, 使用 password选项设置访问口令:

1
$ qemu-system-x86_64 -vnc :0,password -monitor stdio

口令被限制在 8 个字符内.

技巧

通过 -cpu host 选项让 QEMU 模拟宿主机上的特定 CPU.

如果宿主机有多个核心, 可以用 -smp 为客户机分配更多核心.

默认情况下, QEMU 仅仅为每台虚拟机分配 128MB 内存, 可以使用 -m 选项分配更多内存.

汇总命令

1
$ qemu-system-x86_64 -drive file=xxx.qcow2 -cdrom iso_image -boot menu=on -enable-kvm -vnc :x,password -monitor stdio -m 10G

-drive file= 用来指定硬盘, 这里是如 archlinux.qcow2.

-cdrom 这里是指定启动光盘, 就是 .iso 文件.

指定 -boot menu=on 可启用 boot 菜单.

-boot 选项指定启动顺序, 有三种:

  • a, 从软盘启动
  • c, 从硬盘启动
  • d, 从光驱启动

-enable-kvm 是启动 kvm 模式.

-monitor stdio 表示从标准输入 (stdio) 获取输入来指定密码.

-usb -device usb-tablet 选项避免点击客户机系统的窗口时鼠标被捕获. 若没有这个选项, 使用 Ctrl+Alt+g 来放开捕获.

这里为什么要加 -m 10G, 可能是因为安装系统的时候所占的空间大于 128MB.

试验

尝试了一下的命令:

1
$ qemu-system-x86_64  -cdrom ubuntu-22.04.1-live-server-amd64.iso -boot order=d -drive file=ubuntu22.qcow2 -enable-kvm -m 10G

然后就可以用:

1
$ vncviewer :5900

访问.

提示里面说用 ::1:5900 访问, 但不行.

这里是安装系统. 安装完之后退出, 用:

1
$ qemu-system-x86_64 -m 10G ubuntu22.qcow2

重新进入系统, 这里也要指定 -m.

参考


Archlinux-中使用-kvm-虚拟机
http://example.com/2022/10/01/Archlinux-中使用-kvm-虚拟机/
作者
Jie
发布于
2022年10月1日
许可协议