一、安装配置

sudo apt install tigervnc-standalone-server tigervnc-xorg-extension -y
vncpasswd #设置vnc密码
sudo ufw allow 5901/tcp

二、启动vnc服务

vncserver -localhost no #允许外部访问,默认5901

三、设置开机自启动

在 Ubuntu 上配置 VNC 随机启动,核心是通过 systemd 服务 实现,以下是通用步骤(以主流的 TigerVNC 为例):

1. 先确认 VNC 服务文件路径

默认需在  /etc/systemd/system/  目录下创建服务文件,命名格式为  vncserver@:1.service ( :1  代表显示端口,对应 5901,可按需修改)。

2. 创建/编辑 VNC 服务文件

执行命令打开编辑器(需替换  <你的用户名>  为实际系统用户名):

bash
  
sudo nano /etc/systemd/system/vncserver@:1.service

 

将以下内容粘贴进去(同样替换  <你的用户名> ):

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=<你的用户名>
Group=<你的用户名>
WorkingDirectory=/home/<你的用户名>

# 启动命令(需确保 vncserver 路径正确,可通过 which vncserver 查看)
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

3. 启用并设置开机自启

1. 重新加载 systemd 配置,让系统识别新服务:

bash
  
sudo systemctl daemon-reload

 

2. 设置服务开机启动:

bash
  
sudo systemctl enable vncserver@:1.service

 

3. (可选)立即启动服务,无需重启验证:

bash
  
sudo systemctl start vncserver@:1.service

 

4. 验证配置

执行以下命令,若显示  active (running)  则配置成功:

bash
  
sudo systemctl status vncserver@:1.service

 

如果你的 VNC 客户端不是 TigerVNC(如 TightVNC),需要调整服务文件中的  ExecStart  路径。需要我帮你适配其他特定 VNC 客户端的配置命令吗?
四、客户端连接

一、安装过程

1、更新软件源

sudo apt update && sudo apt upgrade -y

2、安装ubuntu-desktop

sudo apt install ubuntu-desktop -y
或最小化安装桌面
sudo apt install --no-install-recommends ubuntu-desktop -y

3、选择显示管理器:

出现选择时选择gdm3(ubuntu默认)

4、设置默认图形目标并重启

sudo systemctl set-default graphical.target
sudo reboot

二、常见问题处理

1、安装卡住:

ctrl+c中断,执行如下命令修复。
sudo apt --fix-broken install

2、重启无图形:

检查gdm3状态并重启服务。
sudo systemctl status gdm3
sudo systemctl restart gdm3

3、想要改显示器:

dpkg-reconfigure gdm3
重新选择

三、安装后验证

dpkg -l ubuntu-desktop
echo $XDG_CURRENT_DESKTOP
正常输出:ubuntu.GNOME

  1. 检查硬件虚拟化支持 (CPU Requirement)

KVM 需要您的 CPU 支持硬件虚拟化扩展,即 Intel VT-x 或 AMD-V,并且需要在 BIOS 中启用。

运行以下命令检查:
Bash

grep -E '(vmx|svm)' /proc/cpuinfo

如果命令有输出(例如看到 vmx 或 svm 标志),则表示您的 CPU 支持虚拟化。

如果没有任何输出,您可能需要在服务器的 BIOS/UEFI 设置中启用虚拟化功能,或者您的 CPU 不支持 KVM。
  1. 安装 KVM 相关的软件包

使用 yum 安装 KVM 核心组件和管理工具。
Bash

sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils -y
qemu-kvm: KVM 虚拟机管理程序。

libvirt: 虚拟化管理工具和库(提供 libvirtd 服务)。

libvirt-python: Python 绑定,有时是某些工具的依赖。

libguestfs-tools: 用于管理虚拟机磁盘映像的工具。

virt-install: 用于从命令行创建虚拟机的工具。

bridge-utils: 用于网络桥接配置的工具。

如果您希望使用图形界面管理虚拟机 (如 virt-manager),并且您的服务器支持 X-Window 和 VNC 或 X11 转发,则可以额外安装:
Bash

sudo yum install virt-manager virt-viewer -y
  1. 启动并启用 libvirtd 服务

libvirtd 是 KVM 的核心管理守护程序。您需要启动它并设置它在系统启动时自动运行。
Bash

# 启动 libvirtd 服务
sudo systemctl start libvirtd

# 设置 libvirtd 服务开机自启
sudo systemctl enable libvirtd

# 检查服务状态(确保它是 active (running))
sudo systemctl status libvirtd
  1. 验证 KVM 模块是否加载

运行以下命令检查 KVM 内核模块是否已加载:
Bash

lsmod | grep -i kvm

如果安装成功且硬件支持已启用,您应该会看到类似 kvm_intel (Intel CPU) 或 kvm_amd (AMD CPU) 以及 kvm 的输出。

  1. 可选:配置网络桥接

默认情况下,libvirtd 会创建一个名为 virbr0 的 NAT 网络桥接。如果您希望虚拟机能够与本地 LAN 上的其他物理机直接通信(而不是通过 NAT),则需要配置网络桥接。

这个步骤比较复杂,并且取决于您的服务器网络配置(例如您使用的网卡名称,以及是否使用 NetworkManager 或传统的 network 服务)。

💡 简单 NAT 模式: 对于基础测试或如果您的虚拟机只需要访问外部网络(如互联网),默认的 NAT 模式通常就足够了,无需额外配置。

🔗 桥接模式(Bridged Networking): 如果您需要桥接,您通常需要:

找到您的主网卡配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-eth0 或 ifcfg-enp3s0)。

创建一个新的桥接配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-br0)。

将主网卡的配置修改为桥接的成员 (例如在主网卡配置文件中添加 BRIDGE=br0)。

在桥接配置文件中设置 IP 地址、网关等。

重启网络服务(可能需要重启服务器)。

⚠️ 警告:如果通过 SSH 连接服务器,重启网络服务(systemctl restart network 或 systemctl restart NetworkManager)可能会导致连接中断。请谨慎操作。
  1. 创建您的第一个虚拟机

您可以使用 virt-install 命令行工具来创建新的 KVM 虚拟机。

示例命令(假设您已经下载了一个 CentOS 7 ISO 镜像到 /tmp/centos7.iso):
Bash

sudo virt-install \
--name centos7-vm \
--ram 2048 \
--vcpus 2 \
--os-variant centos7 \
--disk path=/var/lib/libvirt/images/centos7-vm.qcow2,size=20 \
--network network=default \
--graphics vnc \
--location /tmp/centos7.iso

我的命令如下:

sudo virt-install \
--name=template \
--ram=2048 \
--vcpus=2 \
--os-variant=ubuntu20.04 \
--cdrom=/home/kvm/isos/xubuntu-25.10-desktop-amd64.iso \
--disk path=/home/kvm/vdisks/template.raw,size=20 \
--network bridge=br1 \
--graphics vnc,listen=0.0.0.0,port=5900 \
--boot cdrom,hd \
--noautoconsole --autostart
注:如果不知道os-variant值该怎么写,可用以下命令查看支持的版本
osinfo-query os | grep ubuntu

执行此命令后,安装程序将启动,您可以通过 VNC 客户端连接到服务器的 VNC 端口(通常是 5900 + Domain ID)来完成操作系统的安装。
如果是安装新版kali,由于centos7版本比较旧,只支持到debian9,造成无法识别光盘,无法安装?如何解决这个问题呢?
确实,CentOS 7 默认自带的 virt-install 和 osinfo-db(系统信息数据库)非常老旧(毕竟 CentOS 7 的内核和软件源停留在多年前),在它的列表里,debian9 可能已经是它能认出来的最新 Debian 系版本了。

如果系统数据库里找不到 debian12,强行写进去 virt-install 会直接报错拒绝执行。

既然受到了 CentOS 7 环境的限制,我们可以通过以下 3 种变通方案,跳过这个限制,让你的 2026 版 Kali 顺利从光盘引导:

方案一:使用 generic 兜底参数 + 强制引导顺序(最快、最省事)
既然系统认不出新版本,我们可以使用一个通用的、不带具体版本偏见的参数 generic,并配合 --boot cdrom 强制拉起光盘。

把你的命令修改为:

Bash
sudo virt-install \
--name=kali2026.1_template \
--ram=4096 \
--vcpus=4 \
--os-variant=generic \
--cdrom=/home/kvm/isos/kali-linux-2026.1-installer-amd64.iso \
--disk path=/home/disk/nvme1/kvm/vdisks/kali2026.1_template.raw,size=20,bus=virtio,format=raw \
--network bridge=br1,model=virtio \
--graphics vnc,listen=0.0.0.0,port=8900 \
--boot cdrom,hd \
--noautoconsole \
--autostart
💡 核心改动:

变更为 --os-variant=generic。

加上了 --boot cdrom,hd,这会无视一切硬件预设,强行把光驱塞到第一引导位。
7、注册虚拟机

#下面在宿主机上定义虚拟机
virsh define /etc/libvirt/qemu/template.xml  #定义虚拟机
virsh list --all #查看所有虚拟机
virsh start template #启动虚拟机

8、如何根据模板机来创建新的虚拟机,简化步骤
B站有个博主的关于kvm的视频很好,使用他的教程来完成快速部署虚拟机。
https://www.bilibili.com/video/BV1YagwzvENd?spm_id_from=333.788.player.switch&vd_source=9b80e371e50b4e6b3960c24dd1eee162&p=7
1、创建模板机
修改/etc/libvirt/qemu/模板文件.xml
。删除uudi列

。 删除网卡mac地址配置信息
2026-06-27T03:15:50.png
。修改为NAME
2026-06-27T03:11:13.png
。修改vncport端口
2026-04-03T03:53:52.png

为了使kvm虚拟机的分辨率支持的更大修改:
2026-06-27T03:18:27.png
。修改新生成的kvm虚拟机的磁盘文件名为和虚拟机名称一致
2026-04-03T04:05:14.png
window10的安装命令如下:
2026-04-03T03:59:55.png
生成之后还要手动进系统修改生成的kvm的主机名。
2、安装命令如下:
[root@bogon virtual_create]# createvm -a 192.168.222.34 -p 6905 -n kvm6905
Formatting '/home/kvm/vdisks/kvm6905.qcow2', fmt=qcow2 size=21474836480 backing_file='/home/kvm/vdisks/template.raw' encryption=off cluster_size=65536 lazy_refcounts=off
libguestfs: error: vfs_type: vfs_type_stub: /dev/sda2/root: Not a directory
libguestfs: error: mount_options: mount_options_stub: /dev/sda2/root: Not a directory
guestmount: ‘/dev/sda2/root’ could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount: /dev/sda1 (unknown)
guestmount: /dev/sda2 (ext4)
sed:无法读取 /home/kvm/modify/etc/hostname:没有那个文件或目录
guestunmount: failed to unmount /home/kvm/modify: fusermount: failed to unmount /home/kvm/modify: Invalid argument

                 用户     进程号 权限   命令

/home/kvm/modify: root kernel mount /home

                 root       2695 ..c.. screen
                 root       2698 ..c.. sh
                 root       2701 F.ce. x-proxy-pp-linu
                 root       2708 ..c.. screen
                 root       2710 ..c.. sh
                 root       2712 F.ce. h9-miner-chia-l
                 qemu       6448 F.... qemu-kvm
                 qemu       9841 F.... qemu-kvm
                 qemu       9938 F.... qemu-kvm
                 qemu      11810 F.... qemu-kvm

定义域 kvm6905(从 /etc/libvirt/qemu/kvm6905.xml)

域 kvm6905 已开始
需要说明一点,脚本没有正确执行完毕,主要是挂在虚拟磁盘挂载不了,所以也修改不了主机名和ip地址。这以后再研究,不过确实可以快速创建虚拟机了,需要进入到虚拟机内部手动修改主机名;ip地址让它自动获取好了。
登录进入ubuntu修改主机名的方法:
sudo hostnamectl set-hostname kvm6905
sudo nano hosts

自动生成kali虚拟机的命令如下:生成虚拟机后还要自己改机器名
createvmkali -a 192.168.222.34 -p 8901 -n kali2026-1kvm8901

三、关于windows10虚拟机的快速创建
1、将/usr/local/bin/creatvm命令脚本再复制一份为/usr/local/bin/creatvmwin10.修改里面的windows10模板机所在的位置、并添加执行权限。
2026-04-03T06:40:42.png
2、再执行createvmwin10 -a 192.168.222.34 -p 7901 -n win10kvm7901

问题提示:
1、如何彻底删除虚拟机
。先关机 virsh destroy kvm7901
.删除配置文件和磁盘文件
virsh undefine kvm7901 --remove-all-storage

四、如何修改kvm虚拟机的硬盘格式核心数和内存大小?
1、修改内存、cpu核心数
virsh list --all
virsh shutdown win10kvm7901

如果没关

virsh destroy win10kvm7901

备份配置文件

virsh dumpxml win10kvm7901 > ~/win10kvm7901_back.xml

编辑配置文件,修改内存和cpu数量为所需

virsh edit win10kvm7901

启动虚拟机

virsh start win10kvm7901

2、将硬盘格式由qcow2改为raw

重复上面查看、关机、一系列操作,找到虚拟磁盘存放的位置/home/kvm/vdisks

切换到虚拟磁盘目录

cd /home/kvm/vdisks

执行qcow2--->raw转换

qemu-img convert -p -f qcow2 -O raw ./win10kvm7901.qcow2 ./win10kvm7901.raw

修改配置文件中虚拟硬盘格式和存放目录的内容,保存退出,重启虚拟机、

virsh edit win10kvm7901
virsh start win10kvm7901

🚀 Ubuntu KVM 安装和配置指南

本指南适用于最新的 Ubuntu LTS 版本(如 Ubuntu 20.04 或 22.04)。

1. 检查硬件虚拟化支持

这是 KVM 运行的先决条件。

检查 CPU 状态: 运行以下命令,确认您的 CPU 支持 Intel VT-x (vmx) 或 AMD-V (svm)。
Bash

egrep -c '(vmx|svm)' /proc/cpuinfo

结果 > 0: 支持。

结果 = 0: 请检查您的 BIOS/UEFI 设置,确保 Intel VTx/AMD-V 选项已启用。

检查 KVM 模块是否已加载:
Bash

lsmod | grep kvm

如果输出包含 kvm_intel 或 kvm_amd,则 KVM 内核模块已加载。

2. 安装 KVM 核心软件包

我们需要安装 KVM 的核心组件 (qemu-kvm)、统一管理工具 (libvirt) 以及图形化管理界面 (virt-manager)。
Bash

#1. 更新软件包列表
sudo apt update

# 2. 安装 KVM, libvirt 和 virt-manager
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm: 提供了 KVM 所需的设备模拟和用户空间接口。

libvirt-daemon-system: libvirt 守护进程,用于管理虚拟化平台。

virt-manager: 图形化管理工具,强烈推荐新手使用。

bridge-utils: 用于设置网络桥接,通常用于配置虚拟机网络。

3. 配置用户权限

为了能够管理虚拟机而无需频繁使用 sudo,您需要将您的用户账户添加到 libvirt 用户组中。
Bash

# 将当前用户添加到 libvirt 组
sudo usermod -aG libvirt $USER

# 检查用户是否已成功添加
groups $USER | grep libvirt

⚠️ 重要步骤: 添加到用户组后,您必须注销 (Log Out) 然后重新登录 (Log In) 系统,或重启计算机,新的用户权限才会生效。

  1. 启动并检查 libvirtd 服务

libvirtd 是管理所有虚拟机的核心服务。它应该在安装时自动启动,但您可以检查并确保其正在运行。
Bash

# 检查服务状态
sudo systemctl status libvirtd

您应该看到状态显示为 active (running)。
💻 Ubuntu KVM 使用(创建虚拟机)

安装和配置完成后,您可以使用 virt-manager (图形化) 或 virt-install (命令行) 来创建虚拟机。
推荐方法:使用 Virtual Machine Manager (virt-manager)

virt-manager 是最简单直观的方法。

启动: 在终端中输入 virt-manager,或在 Ubuntu 应用程序菜单中搜索 "Virtual Machine Manager" 启动。

连接: 首次启动,它会自动连接到本地 QEMU/KVM Hypervisor。

创建新虚拟机:

    点击工具栏上的 “新建虚拟机” 按钮。

    选择安装方式: 通常选择 “本地安装介质(ISO 映像或 CDROM)”。

    选择 ISO 路径: 浏览到您准备好的操作系统安装 ISO 文件(如 Windows 10/11 或另一个 Linux 发行版)。

    配置资源: 分配内存(RAM)和 CPU 核心数。

    配置存储: 设置虚拟磁盘文件的大小和位置。

    完成: 确认设置后,它会启动虚拟机并进入安装界面,像安装物理机一样完成 OS 安装。

进阶方法:使用命令行工具 (virsh 和 virt-install)

virsh: 用于管理已创建的虚拟机。
Bash

# 列出所有已定义或运行的虚拟机
virsh list --all

# 启动一个名为 my-vm 的虚拟机
virsh start my-vm

virt-install: 用于自动化创建虚拟机的脚本工具。

如果您想尝试使用 virt-install 创建一个 Ubuntu 虚拟机,您只需将 ISO 文件准备好,然后运行类似于上一回复中提供的命令即可。

🌐 网络模式

默认情况下,KVM 使用 NAT (Network Address Translation) 网络,这意味着您的虚拟机可以访问外部网络,但外部网络(您的家庭/办公网络)不能直接访问您的虚拟机。如果需要更高级的网络配置(例如桥接,使 VM 获得独立 IP),则需要进一步配置 bridge-utils 和 Ubuntu 的网络设置。

Ubuntu 20.04升级22.04有图形界面和命令行两种方式,升级前记得备份重要数据,下面是详细步骤:

图形界面(新手友好)

1. 打开终端,先更新当前系统软件包:

plaintext

sudo apt update && sudo apt upgrade -y
sudo apt autoremove --purge
 

2. 打开 Software & Updates ,切换到 Updates 标签,在 Notify me of a new Ubuntu version 中选 For any new version 。

3. 关闭窗口后,打开 Software Updater ,系统会检测到22.04版本,点击 Upgrade ,输入管理员密码,后续跟着弹窗指引操作即可,最后重启系统。

命令行(适配桌面/服务器)

1. 同样先更新并清理系统:
plaintext

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
 
2. 确保安装升级核心工具:
plaintext

sudo apt install update-manager-core -y
 
3. 执行发行版升级命令,过程中提示确认时输入 y ,遇到配置文件选择时建议保留本地版本:
plaintext

sudo do-release-upgrade
 
4. 升级完成后重启系统,输入 lsb_release -a ,若显示22.04相关信息则升级成功。