Linux 安装 QEMU-KVM


在 QEMU-KVM 环境运行 Debian 12 amd64。

环境准备

安装相关工具:

sudo apt install qemu-system-x86 qemu-system-arm libvirt-daemon-system virt-manager
  • qemu-system-x86 提供 i386 和 x86-64 硬件仿真;

  • qemu-system-arm 提供 arm 硬件仿真;

  • libvirt-daemon-system 管理硬件虚拟化的工具包,以守护进程方式提供服务;

  • virt-manager 可选,基于 QT 的图形界面的虚拟机管理工具。

查看服务状态:

systemctl status libvirtd.service

将当前登录用户添加到组 kvmlibvirt,重新登录后生效:

sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER

安装 Debian 12

方式一:图形界面

点击图标启动 Virtual Machine Manager

  1. 文件 → 新建虚拟机:

    qemu kvm 1
    Figure 1. 新建虚拟机
  2. 连接 QEMU/KVM:

    qemu kvm 2
    Figure 2. 连接 QEMU/KVM
  3. 选择安装介质,提前下载了 Debian 12 ISO 文件:

    qemu kvm 3
    Figure 3. 选择安装介质
  4. 设置内存和 CPU:

    qemu kvm 4
    Figure 4. 设置内存和 CPU
  5. 设置磁盘:

    qemu kvm 5
    Figure 5. 设置磁盘
  6. 设置名称和选择网络:

    qemu kvm 6
    Figure 6. 设置名称和选择网络
  7. 进入系统安装界面:

    qemu kvm 7
    Figure 7. 进入系统安装界面

方式二:终端

终端方式安装,安装时选择 SSH Server 组件,后续通过 SSH 方式登录:

sudo virsh net-start default

sudo virt-install \
    --arch x86_64 \
    --location /data/os/debian-12.5.0-amd64-netinst.iso \
    --osinfo debian12 \
    --ram 8192 \
    --vcpus 8 \
    --disk size=50 \
    --name debian12-amd64 \
    --network network=default \
    --graphics none \
    --extra-args='console=ttyS0'
  • arch CPU 架构 x86_64

  • location 系统 ISO 文件路径

  • osinfo 系统名称 debian12

  • ram 内存 8192 MB

  • vcpus CPU 8 核心

  • disk 磁盘 50GB

  • name 名称

  • network 网络

  • graphics 无图形界面 none

  • console=ttyS0 终端启动系统

Debian 12

Debian 官方提供了本地 QEMU 虚拟机 qcow2 格式镜像,直接从 https://www.debian.org/distrib/ 下载镜像。

  1. 镜像从 2G 扩容到 52G:

    sudo cp debian-12-nocloud-amd64.qcow2 /var/lib/libvirt/images
    # 扩容 +50G
    sudo qemu-img resize /var/lib/libvirt/images/debian-12-nocloud-amd64.qcow2 +50G
    # 查看镜像大小
    sudo qemu-img info /var/lib/libvirt/images/debian-12-nocloud-amd64.qcow2
  2. 通过图形界面安装,选择 导入现有磁盘映像,其他和上述步骤一致,或者命令:

    sudo virsh net-start default
    
    sudo virt-install \
        --import \
        --arch x86_64 \
        --disk path=/var/lib/libvirt/images/debian-12-nocloud-amd64.qcow2,device=disk,bus=virtio  \
        --osinfo debian12 \
        --ram 8192 \
        --vcpus 8 \
        --name debian12-amd64 \
        --network network=default \
        --graphics none
  3. 进入虚拟机后,默认用户 root,无密码,执行:

    # 查看磁盘
    df -h
    # 可以看到增加容量未直接添加到分区
    lsblk
    apt-get install cloud-guest-utils
    # 分区扩容
    growpart /dev/vda 1
    
    # 字符编码
    apt install locales
    # 更新配置文件 /etc/locale.gen 取消注释 `en_US.UTF-8 UTF-8` 和 `zh_CN.UTF-8 UTF-8`
    # 更新配置文件 /etc/default/locale 写入 `LANG=en_US.UTF-8`
    locale-gen
    
    # 修改 hostname
    hostnamectl hostname debian12-amd64
    
    # 远程登录
    apt-get install openssh-server
    
    # 新建用户,后续通过该用户远程登录:
    adduser jenkins
  4. 重启后生效;

  5. 配置 apt 代理(可选):

    /etc/apt/apt.conf.d/99proxy
    Acquire::http::Proxy "http://192.168.0.254:8000";
  6. 配置 apt 源,备份后修改(可选):

    source=/etc/apt/mirrors/debian.list
    cp ${source} ${source}~
    sed 's/https:\/\/deb.debian.org/http:\/\/mirrors.cloud.tencent.com/' ${source}~ | tee ${source}
    
    source=/etc/apt/mirrors/debian-security.list
    cp ${source} ${source}~
    sed 's/https:\/\/deb.debian.org/http:\/\/mirrors.cloud.tencent.com/' ${source}~ | tee ${source}

相关命令

sudo virsh list --all
# 启动
sudo virsh start debian12-amd64
# 停止
sudo virsh shutdown debian12-amd64
# 查看 IP
sudo virsh domifaddr debian12-amd64
# 复制 SSH 公钥,免密登录用户 jenkins
ssh-copy-id jenkins@192.168.123.154
# 删除虚拟机
sudo virsh undefine debian12-amd64 --remove-all-storage --nvram