PVE的OW/LEDE虚拟机初始化创建完成后,需要将编译好的固件文件上传到PVE主机上,然后转换为更适合KVM使用的磁盘映像格式并导入到OW/LEDE虚拟机中,这样就可以更好地使用基于KVM的OW/LEDE系统了。主要过程说明如下:

1) 上传固件文件到PVE主机

PVE默认已开启SSH服务,故可以通过SCP方式来上传,除了CLI方式外还可以使用图形化的工具,如支持scp传输的mobaXterm、winscp及FileZilla等。

将编译好的OW/LEDE固件上传到PVE主机的指定目录下,建议给固件设置一个专用的目录,在本文中将以目录/var/lib/vz/openwrt为例。

编译出来的固件文件的扩展名通常为img或img.gz,在本文中将以固件文件everun-v0.1.5.3-b170925-161934-lede-SNAPSHOT-r4907-31e9445-x86-kvm-combined-ext4.img.gz为例。

总之,在此步中选择最适合自己的传输方式将固件文件上传到PVE主机内的指定目录下。

2) 转换固件文件的磁盘映像格式

此过程的大部分工作需要登录到PVE的shell下通过CLI方式来完成,可以根据个人习惯来选择支持SSH连接的相应终端工具,如Xshell、mobaXterm、SecureCRT等,若不嫌弃的话也可以直接使用PVE的WebUI中的shell。

(1) 解压缩固件文件

若已经是img的格式,则可以省略此步骤。

进入到l固件文件所在的目录并解压:

cd /var/lib/vz/openwrt/
gunzip everun-v0.1.5.3-b170925-161934-lede-SNAPSHOT-r4907-31e9445-x86-kvm-combined-ext4.img.gz

其中,gunzip是解压缩工具,后面为要解压的文件名称。

(2) 转换磁盘映像格式为qcom2

这个步骤是可选的,目的是将OW/LEDE固件原来的raw格式转换为kvm下存储效率更高的qcow2格式。qcow2格式是QEMU支持的一种主流磁盘映像格式,与raw格式相比,qcow2具有存储空间占用小、支持写时拷贝(COW, copy-on-write)、支持zlib压缩及支持AES加密等特性。

当然,对于OW/LEDE系统来说,不转换qcow2格式也是可以的,只需直接跳到后面的步骤“3)”就能导入到OW/LEDE虚拟机中,这时参数<source>为固件的文件名。而使用支持精简配置(Thin Provisioning)的qcow2格式来取代raw格式则可以有效地降低磁盘映像所占用的空间。

将固件文件转换为qcow2格式的虚拟机磁盘映像,通过命令“qemu-img convert”来实现,qemu-img是QEMU的磁盘管理工具,用来转换磁盘文件系统所需的格式,后面要加上所需的命令和参数,具体的格式如下:

qemu-img convert -f raw -O qcow2 <firmware_name> <output_diskname>

下面是一个具体的实例:

qemu-img convert -f raw -O qcow2 everun-v0.1.5.3-b170925-161934-lede-SNAPSHOT-r4907-31e9445-x86-kvm-combined-ext4.img vm-201-disk-1.qcow2

其中,固件文件为“everun-v0.1.5.3-b170925-161934-lede-SNAPSHOT-r4907-31e9445-x86-kvm-combined-ext4.img”,输出的磁盘映像文件为“vm-201-disk-1.qcow2”,其格式为qcow2。使用vm-201-disk-1.qcow2作为输出文件名称是为了清晰表明它是为ID为201的VM所使用的格式为qcow2的第1个磁盘文件。

在转换完成后,可以用qemu-img check命令来检查结果是否正常,其命令格式为:

qemu-img check vm-201-disk-1.qcow2

正常的会出现“No errors”的提示结果,如:

No errors were found on the image.
703/4360 = 16.12% allocated, 0.00% fragmented, 0.00% compressed clusters
Image end offset: 46399488

此外,还可以用qemu-img info命令获取更详细的信息,其命令为:

qemu-img info vm-201-disk-1.qcow2

正常会输出详细的信息,如:

image: vm-201-disk-1.qcow2
file format: qcow2
virtual size: 273M (285736960 bytes)
disk size: 44M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

3) 导入磁盘系统到OW/LEDE虚拟机中

在固件文件转换为VM的磁盘映像文件后就可以将其导入到虚拟机中来使用了,其过程如下:

(1) 导入磁盘映像到VM的存储中

此步骤也需要在shell下通过CLI方式来完成。通过命令“qm importdisk”来实现,qm是QEMU/KVM虚拟机的管理工具,可以将指定的磁盘映像导入到指定的虚拟机的存储中,后面要加所需的命令和参数,具体的格式如下:

qm importdisk <vmid> <source> <storage>

下面是一个具体的实例:

qm importdisk 201 vm-201-disk-1.qcow2 local-lvm

其中,VM的ID为201,磁盘文件为“vm-201-disk-1.qcow2”,存储为“local-lvm”。

命令执行后会输出下面的信息,显示磁盘卷已成功创建到VM中。

 Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 276.00 MiB
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "vm-201-disk-1" created.

这个过程中会创建一个磁盘设备,并将其加入到VM的硬件中成为“未使用的磁盘”。这时在/dev/pve里面可以看到新建立的磁盘设备与VM之间的对应关系。

(2) 将导入的磁盘添加到VM中

登录到WebUI下,在左侧栏中选择OW/LEDE虚拟机(ID为“201”),然后在右侧栏中选择“硬件”,这时会发现在列表的最下面出现一个“未使用的磁盘 0”,用鼠标点击选上后再点击上面的“编辑”,会出现“添加:未使用的磁盘”对话框,点击下面的“添加”即可将导入的磁盘添加到VM中,这时在“硬件”中会新出现新添加的硬盘——“local-lvm:vm-201-disk-1”,如下图所示。

至此,PVE下的OW/LEDE虚拟机已创建完毕,点击“启动”即可开始享用飞快的KVM虚拟机了。

当然,如果嫌这个过程的命令很多,操作起来有些麻烦,也可以试试img2kvm,这里是其使用说明,它可以直接完成从“2)”到“3)(1)”的过程,而且在这个过程中会看到每个步骤的输出信息,简单快捷地将OW/LEDE固件文件转换为VM可使用的磁盘。

在Proxmox VE上运行OpenWrt/LEDE虚拟机——导入OW/LEDE固件文件到虚拟机中的更多相关文章

  1. 第六章在U盘上运行openwrt(引导)--补

    1.前言 前面已经把U盘挂在了703N上了,现在只需要打开路由器,使用TTL串口或者putty(ssh模式需要用户名和密码-第一章刷openwrt的时候已经设置好)登陆路由器. 2.将系统内所有文件同 ...

  2. 在Android上运行Java和C程序

    在linux上运行java程序,直接用javac编译,再用java启动虚拟机运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的.下面介绍Android上运行Hell ...

  3. 编译可在Android上运行的qemu user mode

    前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的”NDK”若无特殊说明均指”Android NDK”. 下文中”$NDK ...

  4. [翻译]第三天- 在 Mac 上运行 .NET Core 应用程序

    原文: http://michaelcrump.net/part3-aspnetcore/ *** 简介 该系列文章的完整列表如下: 第一天 - 在 Windows 下安装和运行 .NET Core ...

  5. 如何在自定义端口上运行 Spring Boot 应用程序?

    为了在自定义端口上运行 Spring Boot 应用程序,您可以在 application.properties 中指定端口. server.port = 8090

  6. Hyper-V上运行的Linux虚拟机验证是否安装了集成服务

    Hyper-V上运行的Linux虚拟机验证是否安装了集成服务 ps aux|grep "hv"root       311  0.0  0.0      0     0 ?     ...

  7. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  8. 问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式。需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机。 模块“CPUIDEarly”启动失败。

    问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式.需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机. 模块“CPUIDEarl ...

  9. Window Server 2019 配置篇(3)- 建立hyper-v集群并在其上运行win10 pro虚拟机

    上次讲到我们的域里有了网关跟DHCP,这次我们要在域中建立hyper-v集群并在其上运行win10 pro虚拟机 那么什么是hyper-v集群呢? 就是两个及两个以上的运行hyper-v服务的服务器建 ...

随机推荐

  1. Python转义序列

    正则表达式参考:https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

  2. StringBuilder删除最后的字符

    stringbuilder碰到拼接XXx:XXX:这样的字符的时候,往往需要删除最后一个字符,通过remove(起始索引,向右移除的个数)可以实现. StringBuilder sb = new St ...

  3. thinkphp3.2.3使用formdata的多文件上传

    使用formdata的多文件上传  废话少说 直接上代码 1 JS部分 //选择文件后的处理 function handleFileSelect() { var exerciseid=$(" ...

  4. iviewUI 前端静态页面实现增删改查分页

    完整代码部分 (仅供参考哈): <template> <div> <label prop="name"> 姓名: </label> ...

  5. Java Automic包下的AtomicInteger

    感谢这两位博主的文章,文章源于: https://www.cnblogs.com/chenpi/p/5375805.html https://blog.csdn.net/fanrenxiang/art ...

  6. sql server: 数据库备份时出现-operating-system-error-5拒绝访问

    本文转自:https://blog.csdn.net/ibsfn/article/details/80770855 sql-server 数据库备份时出现-operating-system-error ...

  7. Python 绘图与可视化 matplotlib 动态条形图 bar

    bar的参考链接:https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.bar.html 第一种办法 一种方法是每次都重新画,包括清除f ...

  8. 字节输出流FileOutputStream

    #字节流 字节输出流FileOutputStream 创建输出流对象 OutputStream 流对象是一个抽象类,不能实例化.所以,我们要找一个具体的子类 :FileOutputStream. 查看 ...

  9. [快捷键的使用] IntelliJ IDEA 将数据库里面的表转化为对象

    本文讲述IntelliJ IDEA 多行编辑快捷键的使用,希望能帮到新人提高效率. 注意:在笔记本键盘上操作的方法. 数据库连接工具使用SQLyog 第一步: 从数据里面将文本拷贝到User类里面. ...

  10. msgTips 顶部弹窗

    最近发现好多网站都采用顶部弹窗,并且不用用户手动去点击确定.感觉这样很方便用户,所以也找了好多大神的代码,整理一下方便以后查找 前端: @{ Layout = null; } <!DOCTYPE ...