跳转至

使用 KVM 和 QEMU 虚拟化 Ubuntu 或其他系统

文档时效性说明

本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。

原英文标题:Vitrualize Ubuntu or Other Systems with KVM and QEMU

1. 创建磁盘镜像并安装系统

创建磁盘镜像

qemu-img create -f qcow2 ubuntu-disk.cow2 20G

调整镜像大小

qemu-img resize disk_image +10G

安装系统

1
2
3
4
qemu-system-x86_64 -cdrom ubuntu-20.04.1-desktop-amd64.iso \
  -boot order=d -m 8096 -drive file=ubuntu-disk.cow,format=qcow2 \
  -vnc :0 -smp $(nproc) -usb -device usb-tablet \
  -enable-kvm -vga qxl

运行系统

qemu-system-x86_64 -smp $(nproc) -drive file=ubuntu-disk.cow,format=qcow2 -m 8096 --enable-kvm -vnc :0 -usb -device usb-tablet -vga qxl -monitor tcp:127.0.0.1:6666,server,nowait

检查系统是否正在运行

echo "info status " | timeout 1 netcat 127.0.0.1 6666 

2. 从宿主机复制文件到客户机

使用 SMB 在客户机和宿主机之间共享文件,在宿主机上运行:

qemu-system-x86_64 -net nic -net user,smb=/dev/shm/ -smp $(nproc) -drive file=ubuntu-disk.cow,format=qcow2 -m 8096 --enable-kvm -vnc :0 -usb -device usb-tablet -vga qxl -monitor tcp:127.0.0.1:6666,server,nowait

在客户机上运行:

1
2
3
apt update
apt install cifs-utils
mount -t cifs //10.0.2.4/qemu/ /mnt/

3. 访问客户机中的 SSH

1
2
3
4
5
6
7
8
qemu-system-x86_64 \
  -smp $(nproc) \
  -drive file=ubuntu-disk.cow,format=qcow2 \
  -m 8096 \
  --enable-kvm -usb -device usb-tablet -vga qxl \
  -device e1000,netdev=net0 \
  -netdev user,id=net0,hostfwd=tcp::5555-:22 \
  -vnc :10

4. 原文(English)

---
tags:
  - KVM
  - QEMU
  - 虚拟化
---

# Vitrualize Ubuntu or Other Systems with KVM and QEMU


!!! warning "文档时效性说明"
    本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。

## Create Disk Image and Install System

Create Disk Image

```bash
QEMU-img create -f qcow2 ubuntu-disk.cow2 20G

Rezize Image with

QEMU-img resize disk_image +10G

Install System

1
2
3
4
QEMU-system-x86_64 -cdrom ubuntu-20.04.1-desktop-amd64.iso \
  -boot order=d -m 8096 -drive file=ubuntu-disk.cow,format=qcow2 \
  -vnc :0 -smp $(nproc) -USB -device USB-tablet \
  -enable-kvm -vga qxl

Run System

QEMU-system-x86_64 -smp $(nproc) -drive file=ubuntu-disk.cow,format=qcow2 -m 8096 --enable-kvm -vnc :0 -USB -device USB-tablet -vga qxl -monitor TCP:127.0.0.1:6666,server,nowait

Check if system is running

echo "info status " | timeout 1 netcat 127.0.0.1 6666 

Copy Files from Host to Guest

Use SMB to share files between guest and host, on host machine, run

QEMU-system-x86_64 -net nic -net user,smb=/dev/shm/ -smp $(nproc) -drive file=ubuntu-disk.cow,format=qcow2 -m 8096 --enable-kvm -vnc :0 -USB -device USB-tablet -vga qxl -monitor TCP:127.0.0.1:6666,server,nowait

On guest machine, run

1
2
3
apt update
apt install cifs-utils
mount -t cifs //10.0.2.4/qemu/ /mnt/

Access SSH in Guest

1
2
3
4
5
6
7
8
QEMU-system-x86_64 \
  -smp $(nproc) \
  -drive file=ubuntu-disk.cow,format=qcow2 \
  -m 8096 \
  --enable-kvm -USB -device USB-tablet -vga qxl \
  -device e1000,netdev=net0 \
  -netdev user,id=net0,hostfwd=TCP::5555-:22 \
  -vnc :10
```