X86 OpenWrt的全平台安装方式

在所有平台下快速安装OpenWrt X86的方式,包含所有的格式转换方式。其中图形化的方式适合新手,命令行的方式适合老手。

由于openwrt只提供了img的镜像,因此在很多虚拟化场景中,并不能直接安装,需要一些额外的转换;今天我就整理了全平台进行的操作,以宿主机为视角。在这些平台上如何把openwrt的img镜像转为主流的虚拟机支持的格式。

在官方文档中,已经给出了一部分的虚拟化支持。链接。但完全不够。

在X86的五种环境中:即物理机、VMware、Hyper-v、Xen Server、KVM,都可能使用OpenWrt。因此,以下内容将覆盖这5种环境的安装方式。

宿主机为Windows

方式1:磁盘管理+Rufus写入vhdx

这个可能是最简单的,全称图形化操作,方便快捷;但仅限于Hyper-v。

1. 版本信息

  • Windows 10 22H2
  • Hyper-V 配置版本 9

2. 准备材料

3. 创建虚拟机

创建一个第一代的虚拟机

create-hyperv-for-openwrt

4. 初始化磁盘

右键左下角的菜单->磁盘管理

open-disk-management

操作->附加VHD

load-vhd

选择刚刚创建的虚拟机硬件文件

select-the-disk-of-openwrt

初始化这块硬盘

initial-the-disk

选择分区形式为MBR

initial-conform-1

5. 写盘

打开Rufus,确认默认选择的设备是否为刚刚初始化的,点击“选择”,找到刚刚下载的OpenWrt文件。默认为img.gz,无需解压,直接选择即可。

writing-openwrt-to-disk

写盘完成后,回到“磁盘管理”,右键点击磁盘,选择“分离”

split-the-disk

至此,OpenWrt的系统就安装完成了,回到Hyper-v,启动OpenWrt虚拟机即可。

6. 完成安装

completed-installing-of-openwrt

7. 后记

使用Windows的磁盘管理可以很方便的为Hyper-v提供磁盘文件,除了刚刚的先创建虚拟机之外,还可以使用磁盘管理先创建硬盘,再创建虚拟机的时候,选择硬盘。

方式2:QEMU转换为Qcow2

上面演示了如何给Hyper-v安装。除此之外,还可以使用QEMU的Windows版本,为更多的虚拟化提供磁盘格式的转换支持。

它支持非常多的格式转换,以下内容来自于qemu-img -h。主流的四大虚拟化平台全部覆盖了。如果熟悉命令行的话,可以用它一站式转换。

Supported formats: blkdebug blklogwrites blkverify bochs cloop compress copy-before-write copy-on-read dmg file ftp ftps host_device http https luks nbd nfs null-aio null-co parallels preallocate qcow qcow2 qed quorum raw replication snapshot-access ssh throttle vdi vhdx vmdk vpc vvfat

0. 准备工具

1. 安装QEMU

安装完成后,打开“Windows终端”、"powershell"或“cmd”都可以。这里我使用“Windows终端”。记住或复制下来这个安装路径。

qemu-install-to-path

由于默认没有添加环境变量,需要进入到安装目录,就是上图的路径。

命令格式:usage: qemu-img [standard options] command [command options]

在Windows下如果文件路径包含空格,需要用引号括起来。

# 进入QEMU的目录
cd "d:\Program Files\qemu"

# 先查看一下文件的识别信息
.\qemu-img.exe info E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img

# 返回
image: E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img
file format: raw
virtual size: 120 MiB (126353408 bytes)
disk size: 120 MiB
# 源文件被识别为raw

# 开始转换
.\qemu-img.exe convert -f raw E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img -O qcow2 E:\ISO\router\openwrt-22.qcow2

转换的速度非常快,可能连闪一下都没有。这里以PVE 7为例,启动一台OpenWrt的虚拟机,并且替换带硬盘。

2. 创建虚拟机

  1. 常规:填写虚拟机名称。
  2. 操作系统:不使用任何介质。
  3. 系统:建议勾选“QEMU代理”;安装完OpenWrt之后,可以安装qemu-ga的插件来实现PVE对虚拟机的更多控制与监控。
  4. 磁盘:这里注意选择的存储。等下要到这个路径下面去替换磁盘。
  5. CPU:默认
  6. 内存:默认
  7. 确认:完成

完成创建的OpenWrt虚拟机

installed-openwrt-on-pve

3. 替换硬盘

使用shell登录到PVE的/存储路径/images/100/目录下,如果没有设置单独的存储的话,在/dev/pve/下,但是默认情况下,PVE为虚拟机创建的是块设备,不是一个单独的镜像文件。可以通过磁盘分区方式的命令df -TH查看容量。

在大部分的场景中,都是存算分离的架构。所以我这里使用了独立的存储目录。我这里因为使用了ZFS的存储池,所以挂载到了/pve1-pool目录下。

删除原盘;

delete-origin-disk

回到shell或使用Web Shell;重新扫描一下硬盘

root@pve1:~# qm disk rescan
rescan volumes...
VM 100 add unreferenced volume 'pve1-pool:100/openwrt-22.qcow2' as 'unused0' to config

在回到网页的OpenWrt->硬件中,发现刚刚拷贝过来的磁盘文件被识别为“未使用的磁盘0”。点击“编辑”->“添加”。完成硬盘替换。

adding-disk-to-openwrt

4. 启动OpenWrt

completed-installing-on-pve

方式3:QEMU转换为RAW和vmdk

方法同上一样

转换为raw

# 进入QEMU的目录
cd "d:\Program Files\qemu"

# 先查看一下文件的识别信息
.\qemu-img.exe info E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img

# 返回
image: E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img
file format: raw
virtual size: 120 MiB (126353408 bytes)
disk size: 120 MiB
# 源文件被识别为raw

# 开始转换
.\qemu-img.exe convert -f raw E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img -O raw E:\ISO\router\openwrt-22.raw

转换为vmdk

# 进入QEMU的目录
cd "d:\Program Files\qemu"

# 先查看一下文件的识别信息
.\qemu-img.exe info E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img

# 返回
image: E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img
file format: raw
virtual size: 120 MiB (126353408 bytes)
disk size: 120 MiB
# 源文件被识别为raw

# 开始转换
.\qemu-img.exe convert -f raw E:\ISO\router\openwrt-22.03.2-x86-64-generic-squashfs-combined.img -O vmdk E:\ISO\router\openwrt-22.vmdk

方式4:StarWind转换为多种格式

这个件软支持多种源格式和目标格式的转换。。大部分常见的P2V(Physical to Virtualization,物理转虚拟化)和V2V(Virtualization to Virtualization,虚拟化转虚拟化)的格式。


  • Converting VM from Hyper-V to VMware ESXi (.vhdx to .vmdk)
  • Converting VM from VMware ESXi to Hyper-V (.vmdk to .vhdx)
  • Converting Image File from Hyper-V to VMware ESXi Format
  • Converting Image File from VMware ESXi to Hyper-V Format
  • Converting Local File to Local File

宿主机为Linux

如果手头上暂时没有独立的Linux系统,可以使用Windows的WSL效果也是相同的。

主要也是使用的QEMU,命令和格式也是相同的。这里不再赘述。

Ubuntu/Debian

sudo apt install qemu-units -y

CentOS/RHEL/Rocky/AlmaLinux

yum install qemu-img -y

macOS

brew install qemu

U盘安装

适用于物理的方式安装。常用的有两种。

写盘的方式

不推荐此种方式,对于磁盘识别方面并不直观,会导致写错盘的几率大大增加。

这种方式不算太方便,需要清空U盘的全部空间,而且安装OpenWrt这种事并不常用。一般安装完成后还要在恢复U盘用于存储资料。

而且写盘的方式最方便的还是Rufus,图形界面又支持多种格式。但作为一种方式,难免会有不时之需。

方法采用的是m0n0wall的physdiskwrite程序。虽然它很久已经不在更新了,但是还能用。下载页面

此种方法操作有风险,一定要注意磁盘的正确识别。写错盘会出现数据丢失的情况。

下载后解压出来,和openwrt.img文件放到一个目录,然后使用命令进行写入;

命令格式:physdiskwrite [-u] [-d driveno]

  1. 插入U盘
  2. 从“磁盘管理”中,查到U盘的磁盘编号
  3. 使用下面的命令写入U盘
physdiskwrite -u -d <磁盘编号> openwrt.img

Ventoy的方式

推荐的U盘安装方式,无需格式化U盘,安装完Ventoy之后,还可以用于其他操作系统的安装,如Windows、Linux以及其他ISO的系统镜像文件。
非常强大的软件,所支持的还有很多实用功能。文档支持中文和英文双语言。这里不再赘述。欢迎探索。