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. 创建虚拟机
创建一个第一代的虚拟机
4. 初始化磁盘
右键左下角的菜单->磁盘管理
操作->附加VHD
选择刚刚创建的虚拟机硬件文件
初始化这块硬盘
选择分区形式为MBR
5. 写盘
打开Rufus,确认默认选择的设备是否为刚刚初始化的,点击“选择”,找到刚刚下载的OpenWrt文件。默认为img.gz,无需解压,直接选择即可。
写盘完成后,回到“磁盘管理”,右键点击磁盘,选择“分离”
至此,OpenWrt的系统就安装完成了,回到Hyper-v,启动OpenWrt虚拟机即可。
6. 完成安装
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终端”。记住或复制下来这个安装路径。
由于默认没有添加环境变量,需要进入到安装目录,就是上图的路径。
命令格式: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. 创建虚拟机
- 常规:填写虚拟机名称。
- 操作系统:不使用任何介质。
- 系统:建议勾选“QEMU代理”;安装完OpenWrt之后,可以安装
qemu-ga
的插件来实现PVE对虚拟机的更多控制与监控。 - 磁盘:这里注意选择的存储。等下要到这个路径下面去替换磁盘。
- CPU:默认
- 内存:默认
- 确认:完成
完成创建的OpenWrt虚拟机
3. 替换硬盘
使用shell登录到PVE的/存储路径/images/100/
目录下,如果没有设置单独的存储的话,在/dev/pve/
下,但是默认情况下,PVE为虚拟机创建的是块设备,不是一个单独的镜像文件。可以通过磁盘分区方式的命令df -TH
查看容量。
在大部分的场景中,都是存算分离的架构。所以我这里使用了独立的存储目录。我这里因为使用了ZFS的存储池,所以挂载到了/pve1-pool
目录下。
删除原盘;
回到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”。点击“编辑”->“添加”。完成硬盘替换。
4. 启动OpenWrt
方式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]
- 插入U盘
- 从“磁盘管理”中,查到U盘的磁盘编号
- 使用下面的命令写入U盘
physdiskwrite -u -d <磁盘编号> openwrt.img
Ventoy的方式
推荐的U盘安装方式,无需格式化U盘,安装完Ventoy之后,还可以用于其他操作系统的安装,如Windows、Linux以及其他ISO的系统镜像文件。
非常强大的软件,所支持的还有很多实用功能。文档支持中文和英文双语言。这里不再赘述。欢迎探索。