pve中创建虚拟机
首先在pve网页中创建一个linux虚拟机,我用的是debian系统,过程省略
注意虚拟机cpu类型要设置为host
检查是否支持虚拟化
ssh分别进入pve和debian虚拟机
检查cpu是否支持虚拟化
egrep --color 'vmx|svm' /proc/cpuinfo
# 结果高亮显示vmx或svm则支持
检查是否支持嵌套虚拟化
# intel处理器,结果为Y表示已启用
cat /sys/module/kvm_intel/parameters/nested
# amd处理器,结果为1表示已启用
cat /sys/module/kvm_amd/parameters/nested
下载qcow2镜像
我这里下载了debian12的qcow2镜像
mkdir /data && cd /data
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
自定义镜像(root密码、时区、软件源等)
在linux虚拟机中操作
# 先使用openssl生成个root用户的密码,备用
openssl passwd -1 123456# 安装guestfish工具
apt install guestfish # 使用guestfish编辑qcow2镜像内的文件
guestfish --rw -a /data/debian-12-genericcloud-amd64.qcow2
进入guestfish后依次执行run
、list-filesystems
、mount /dev/sda1 /
,然后开始修改文件
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.Type: ‘help’ for help on commands‘man’ to read the manual‘quit’ to quit the shell><fs> run
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda14: unknown
/dev/sda15: vfat
><fs> mount /dev/sda1 /
><fs># 开始修改要自定义的文件
# 修改root密码, 把第一行root:*:19724:0:99999:7:::中的*改为上面openssl生成的密码
><fs> vi /etc/shadow# 修改时区为Shanghai
><fs> rm /etc/localtime
><fs> ln /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 修改sshd配置开启密码登录,把PasswordAuthentication值改为yes
vi /etc/ssh/sshd_config# 修改apt软件源,不同版本的配置路径可能不一样,这里忽略
vi /etc/apt/mirrors/# 退出编辑qcow2文件
quit
安装libvirt
# 安装包
apt install libvirt-daemon-system qemu-kvm# 启动默认的虚拟网卡
virsh net-start default
virsh net-autostart default
定义xml文件
新建文件/data/vm1.xml
,内容如下:
<domain type='kvm'><name>vm1</name><memory unit='GiB'>1</memory> <!-- 1G内存--><vcpu>1</vcpu> <!-- 1个CPU --><os><type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type><boot dev='hd'/></os><devices><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/data/debian-12-genericcloud-amd64.qcow2'/> <!-- qcow2镜像文件路径 --><target dev='vda' bus='virtio'/></disk><interface type='network'><source network='default'/><model type='virtio'/></interface><console type='pty'><target type='serial' port='0'/></console></devices>
</domain>
启动虚拟机
# 定义虚拟机vm1
virsh define vm1.xml# 查看所有
virsh list --all# 启动vm1
virsh start vm1# 连接vm1,连接后敲回车,会提示输入root和密码
virsh console vm1