文章介绍:使用qemu工具将iso转成qcow2格式,同时可以把qcow2格式转成vmdk格式和raw格式,并且使用qemu可以把vmdk,qcow2,raw直接全部互转。

yydy_2024-01-28_19-29-37

  • iso:ISO映像是一种光盘存档文件,是磁盘映像的类型之一,数据由一张光盘的每个扇区组成,这包括光盘的文件系统ISO映像文件通常采用文件扩展名.iso。名称ISO取自用于CD-ROM介质的ISO 9660文件系统,但ISO映像也可包含DVD蓝光光盘使用的UDF(ISO/IEC 13346)文件系统。
  • qcow2:​QEMU​(quick emulator)是一款由法布里斯·贝拉(Fabrice Bellard)等人编写的通用且免费的可执行硬件虚拟化的(hardware virtualization)开源仿真器(Emulator)。
  • raw:linux raw是原始数据格式,在linux中表示“裸设备”,也叫裸分区、原始分区;linux raw是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备;裸设备可以绑定一个分区,也可以绑定一个磁盘。
  • vmdk:VMDK是一种文件格式,它描述了虚拟磁盘在VMware Workstation 和 VirtualBox等虚拟机中使用的容器。该格式最初是由 VMware 为其虚拟设备产品开发的,在VMDK 5.0版发布之后成为一种开放格式,是开放虚拟机格式文件中用于虚拟设备的磁盘格式之一。

一、准备工作

1、Ubuntu系统

VMware ESXi 安装 Ubuntu 完整步骤

VMware WorkStation 安装 Ubuntu 完整步骤

2、ISO镜像

本篇介绍vyos转qcow2以及raw,附和上一篇文章AWS部署Ubuntu,DD成任意系统

vyos-1.3.5-amd64.iso

3、SSH工具

MobaXterm

3.1、MobaXterm激活

为什么要使用MobaXterm,第一利用SSH功能连接Ubuntu服务器操作镜像转换,第二利用VNC功能连接qemu-kvm生成的虚拟机,对虚拟机进行初始化配置。

MobaXterm 常规设置指南

二、iso转qcow2转raw

2.1、上传镜像

yydy_2024-01-27_23-08-58

2.2、查看镜像

ls

yydy_2024-01-27_23-09-57

2.3、安装依赖

sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
  1. qemu:

    • QEMU 是一个快速的处理器仿真器,允许你在一个不同的机器上运行为另一种机器制作的操作系统和程序(例如,在 ARM 板上运行)。
  2. qemu-kvm:

    • 带有 KVM(基于内核的虚拟机)支持的 QEMU。KVM 是一个启用硬件辅助虚拟化的 Linux 内核模块。
  3. libvirt-daemon:

    • Libvirt 是一个管理虚拟化平台的工具包。libvirt-daemon 软件包提供了核心守护进程(libvirtd),作为虚拟化平台和用户之间的管理接口。
  4. libvirt-clients:

    • 此软件包提供用于与 libvirt 守护进程交互的命令行工具(virshvirt-admin等)。
  5. bridge-utils:

    • Bridge-utils 提供了配置 Linux 以太网桥的实用工具。
  6. virt-manager:

    • 虚拟机管理器是一个桌面应用程序,提供了一个通过 libvirt 管理虚拟机的图形用户界面。

2.4、创建qcow2镜像

因为vyos虚拟机本身镜像就不大只有400多兆,博主测试发现安装vyos软路由最小磁盘为2G即可,正常其他操作系统ISO如果需要制作成qcow2镜像,建议创建一个大一些的qcow2镜像,比如10G,不然在转换或者安装时会报错。

qemu-img create -f qcow2 vyos-1.3.5-amd64.qcow2 2G
  • create:表示创建一个新的虚拟磁盘。
  • -f qcow2:指定创建的磁盘格式为 qcow2。
  • vyos-1.3.5-amd64.qcow2:是新创建虚拟磁盘的文件名。
  • 2G:表示磁盘的大小为 2GB。

yydy_2024-01-27_23-22-35

2.5、赋予执行权限

chmod +x /root/vyos-1.3.5-amd64.qcow2 /root/vyos-1.3.5-amd64.iso && chmod +x /root

2.6、创建虚拟机

virt-install --name vyos --ram 2048 --cdrom=/root/vyos-1.3.5-amd64.iso --disk path=/root/vyos-1.3.5-amd64.qcow2 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=Linux --os-variant=debian10 --check all=off
  • --name vyos:指定虚拟机的名称为 vyos
  • --ram 2048:分配给虚拟机的内存大小为 2048 MB。
  • --cdrom=/root/vyos-1.3.5-amd64.iso:指定虚拟机使用的 ISO 镜像文件为 /root/vyos-1.3.5-amd64.iso,这将作为虚拟机的安装介质。
  • --disk path=/root/vyos-1.3.5-amd64.qcow2:指定虚拟机的磁盘文件为 /root/vyos-1.3.5-amd64.qcow2
  • --graphics vnc,listen=0.0.0.0:指定使用 VNC 图形界面,监听地址为 0.0.0.0,可以从外部访问。
  • --noautoconsole:禁止自动连接到控制台。
  • --os-type=Linux:指定虚拟机的操作系统类型为 Linux。
  • --os-variant=debian10:指定操作系统的变体,这里是 Debian 10。
  • --check all=off:禁用所有检查,通常在某些环境中可能需要关闭一些检查项。

2.7、查看虚机状态

virsh list

yydy_2024-01-27_23-42-53

2.8、连接虚拟机

yydy_2024-01-27_23-40-36
yydy_2024-01-27_23-36-58
yydy_2024-01-27_23-46-00

2.9、登录虚拟机

yydy_2024-01-27_23-47-05

2.10、查看版本

show version

yydy_2024-01-27_23-50-27

2.11、安装系统

install image

yydy_2024-01-28_00-00-17

2.12、关闭系统

poweroff now

yydy_2024-01-28_00-00-52

2.13、查看虚机状态

virsh list

yydy_2024-01-28_00-06-53

2.14、启动新虚拟机

qemu-system-x86_64 -drive file=/root/vyos-1.3.5-amd64.qcow2,format=qcow2 -m 2048 -net nic -net user -vnc :0
  • -drive file=/root/vyos-1.3.5-amd64.qcow2,format=qcow2:指定虚拟机使用的磁盘镜像文件和格式。
  • -m 2048:指定虚拟机的内存大小为 2048MB。
  • -net nic -net user:创建一个网络接口和用户模式网络连接。这使得虚拟机可以通过主机的网络进行通信。
  • -vnc :0:启用 VNC,允许通过 VNC 客户端连接到虚拟机。:0 表示使用默认的 VNC 端口。
    yydy_2024-01-28_00-08-11
    yydy_2024-01-27_23-46-00
    yydy_2024-01-27_23-47-05

2.15、查看默认配置

show conf com

yydy_2024-01-28_00-25-16

2.16、制作qcow2镜像

2.16.1、进入配置模式

configure

2.16.2、删除多余配置

delete interfaces ethernet eth1 hw-id
delete system conntrack
delete system ntp

yydy_2024-01-28_00-30-29

2.16.3、添加必要配置

set service ssh disable-host-validation
set service ssh port '22222'
set system console device hvc0
set system console device hvc1
set system console device ttyS1
commit
save
reboot now

2.16.4、重启进入虚机

上一步没有直接保存关闭虚拟机,而是重启vyos虚拟机,是因为还需要删除和添加必要配置,因为刚刚第一次用vyos-1.3.5-amd64.qcow2镜像直接启动虚拟机时,发现网卡名称是eth1,但是云上使用vyos-1.3.5-amd64.qcow2转raw的镜像启动实例时,默认是给eth0下发IP地址的,所以上面配置完之后保存,重启虚拟机,当第二次进入虚拟机时,网卡会变成eth0,此时我们在进行下面的操作,然后在保存关闭虚拟机,这样vyos-1.3.5-amd64.qcow2镜像才算是真正制作完成,否则使用eth1口的qcow2转了raw启动的实例,第一次启动时将无法使用ssh管理,只能用kvm和console,但是AWS上无法使用这俩个,所以必须要eth0口的qcow2镜像才行。

configure
delete interfaces ethernet eth0 hw-id
set interfaces ethernet eth0 address 'dhcp'
set interfaces ethernet eth0 address 'dhcpv6'
commit
save

yydy_2024-01-28_01-01-36

最终配置

run show conf com

yydy_2024-01-28_01-04-52

2.16.5、关闭虚机完成制作

run poweroff now

yydy_2024-01-28_01-07-22

2.17、qcow2转raw

qemu-img convert -f qcow2 vyos-1.3.5-amd64.qcow2 -O raw vyos-1.3.5-amd64.raw
  • -f qcow2: 指定输入文件格式为QCOW2。
  • vyos-1.3.5-amd64.qcow2: 输入文件的名称。
  • -O raw: 指定输出文件格式为RAW。
  • vyos-1.3.5-amd64.raw: 输出文件的名称。

yydy_2024-01-28_01-10-56

2.18、拷贝到本地

yydy_2024-01-28_01-12-39

三、iso转vmdk转raw

ISO转vmdk方法有很多,举例二种:1、用上面的qcow2镜像直接转。2、用VMware WorkStation安装到单磁盘然后导出(这种稍微麻烦一些,需要装虚拟机)。

3.1、qcow2转vmdk

qemu-img convert -p -f qcow2 -O vmdk vyos-1.3.5-amd64.qcow2 vyos-1.3.5-amd64.vmdk
  • -p: 显示进度条。
  • -f qcow2: 指定输入文件格式为QCOW2。
  • -O vmdk: 指定输出文件格式为VMDK。
  • vyos-1.3.5-amd64.qcow2: 输入文件的名称。
  • vyos-1.3.5-amd64.vmdk: 输出文件的名称。

yydy_2024-01-28_01-23-25

3.2、安装测试

yydy_2024-01-28_01-52-43

3.3、vmdk转raw

qemu-img convert -p -f vmdk -O raw vyos-1.3.5-amd64.vmdk vyos-1.3.5-amd64.raw
  • -p: 显示进度条。
  • -f vmdk: 指定输入文件格式为VMDK。
  • -O raw: 指定输出文件格式为RAW。
  • vyos-1.3.5-amd64.vmdk: 输入文件的名称。
  • vyos-1.3.5-amd64.raw: 输出文件的名称。

yydy_2024-01-28_01-55-27