这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

OpenWRT的安装

介绍 OpenWRT 的安装,使用,配置和优化

1 - OpenWRT的安装概述

OpenWRT 支持多种方式的安装

OpenWRT 支持多种方式的安装:

  • 虚拟机: 支持 esxi
  • 物理机

准备工作

下载 openwrt

经过几次对比,目前我选择使用的是这个版本:

https://www.right.com.cn/forum/thread-8267087-1-1.html

理由:

  • 功能多
  • 持续更新
  • 自带 mlx4 驱动,支持我的 hp544+ 网卡

转换镜像文件

下载之后得到的 img 格式的镜像文件,不同安装方式需要转换为其他不同的镜像格式。

2 - 在ESXi上安装OpenWRT

介绍 OpenWRT 在ESXi上的安装

安装

准备镜像

下载下来的 img 格式的镜像文件需要先转为 exsi 的 vmdk 格式才能使用。

在 windows 上下载安装 starwindconverter.exe 软件,可以将类似 bleach-plus-20230113-openwrt-x86-64-generic-squashfs-combined-efi.img 的文件转为两个文件:

  1. bleach-plus-20230113-openwrt-x86-64-generic-squashfs-combined-efi.vmdk
  2. bleach-plus-20230113-openwrt-x86-64-generic-squashfs-combined-efi-flat.vmdk

注意这两个文件都需要使用,上传到 exsi 上时需要两个文件放在一起。如果文件需要改名,在先修改 img 文件的名字,再进行格式转换。

新建虚拟机

在 esxi 下新建虚拟机:

  • 取名 openwrt,客户机操作系统选 linux,客户机操作系统版本选 其他 4.x linux (64位)
  • cpu给两核
  • 内存至少给1g:必须选择预先分配内存
  • 硬盘先给16g(等下这个硬盘要删除的)
  • 网卡只给两个:一个是用来做lan(通常也是 esxi 的管理网口)的,通常是虚拟网卡,默认是 vm network,然后添加 pci 设备,加入准备作为 wan 口使用的网卡,如果有其他网卡先不要加
  • 用作wan口的网卡如果有多个网口,只在作为 wan 使用的网口中插入网线
  • 虚拟机选项中,时间设置为 将主机时间同步到客户机中。引导选项中固件选择efi,取消启动uefi安全引导的勾选

确认创建虚拟机,这时打开仓储,通过数据存储浏览器可以看到在 datastore1 下增加了一个新目录(和虚拟机同名如openwrt),里面有和虚拟机同名的 vmdk 文件。通过数据存储浏览器将 准备好的 openwrt 的 vmdk 文件(注意是两个文件)上传到这个目录。

回到虚拟机设置,删除默认的这个硬盘,勾选删除数据。然后添加硬盘,选现有硬盘,再指向刚才上传的 openwrt 的 vmdk 文件。硬盘大小修改为 16g,硬盘模式修改为 “独立 - 持久”。这样就实现了用下载好的 openwrt 镜像文件作为 esxi 虚拟机的硬盘的目的。

在虚拟机上右键,自动启动,选择 启用。

再次确认:openwrt 虚拟机开机时,只插了两根网线,lan和wan。

配置 openwrt

修改 openwrt 的默认网段

在 esxi 的虚拟机控制台操作,vi /etc/config/network

将 lan 口的 ip地址从默认的 192.168.1.1 修改为 192.168.0.1

输入 reboot 重新启动 openwrt

设置 openwrt 的网络

重启 openwrt 之后,通过 http://192.168.0.1 打开 openwrt 的配置页面,默认账号为 root / password 。

打开 状态 -》 概述 应该可以看到有两个接口 eth0 和 eth1,显示为已经连接(注意前面的网卡和网线的要求)。

打开 网络 -》 接口 -》lan -》物理设置,应该可以看到 lan 默认是适用 eth0;打开 网络 -》 接口 -》wan-》物理设置,应该可以看到 wan默认是适用 eth1;

修改 wan 口的设置,比如开启 pppoe 拨号。

pppoe 设置:

  • 高级设置中,取消“使用内置的 ipv6 管理”,获取 ipv6 地址修改为禁止

  • 账号:

应用之后验证wan连接OK可以上网之后,关闭openwrt。

增加其他网卡

关机状态下,修改配置,增加其他网卡。具体为增加pci设备,将需要增加的网卡一一加上。

启动 openwrt 就可以看到这些网卡了,修改 接口 -》 lan 将这些网卡作为 lan 加入进来。

3 - 在 PVE 上安装 OpenWRT

介绍 openwrt 在 PVE 上的安装

安装

参考: https://post.smzdm.com/p/a7nqp3r9/

准备镜像

下载下来的 img 格式的镜像文件在 PVE 下可以直接使用,比 esxi 下方便。

新建虚拟机

在 PVE 下新建虚拟机:

  • 常规(general)

    取名 openwrt,高级选项中勾选 “开机自启动”

  • OS(操作系统)

    客户机操作系统选 linux,客户机操作系统版本选 其他 5.x - 2.6 Kernel。

    光驱选择不使用任何介质。

  • system(系统)

    scci控制器选择 “virtIO SCSI”, 机型选择 q35,勾选 Qemu 代理。Bios 选择默认的 SeaBIOS。

  • disk(磁盘)

    默认配置不用改,直接next,因为等下会删除这个磁盘,然后用 openwrt 的 img 镜像文件重新创建磁盘。

  • cpu

    考虑可能有科学上网的消耗,cpu给足一点,插槽1,核心8,类型选 host。

  • memory(内存)

    内存给2048 (2g),最新内存给 1024 (1G)。

  • network(网络)

    桥接这里选已经建立好的桥接网卡,注意这个网卡是给 lan 用的。模型选 VirtIO(半虚拟化),其性能和效率最高。

    VirtIO 模型在 Openwrt 内会显示 “Unknown!半双工”,但实测不影响使用。

确认配置后就可以创建 openwrt 虚拟机了。

修改虚拟机配置

打开新创建的 openwrt 虚拟机的硬件配置,首选删除已有的硬盘,删除之后会出现一个“未使用的磁盘”,继续删除这个磁盘。

然后删除 CD/DVD 驱动器。

上传 openwrt 镜像文件

将前面准备好的 openwrt 的 img 文件上传到 pve 下。

可以通过页面上传,完成后文件会存储在 pve 下的固定目录,ssh 登录 pve 后可以看到

cd /var/lib/vz/template/iso/
ls -lh

类似:

ls -lh
total 2.9G
-rw-r--r-- 1 root root 1.1G Jul 18 01:23 openwrt.img
-rw-r--r-- 1 root root 1.9G Jul 18 08:31 ubuntu-22.04.2-live-server-amd64.iso

这里为了方便起见,将原来下载的 img 文件的名字改短了。

执行下列命令将这个 img 镜像倒入到虚拟机中:

qm importdisk 108 /var/lib/vz/template/iso/openwrt.img local

备注:

  1. 108 为虚拟机的 ID, 替换为实际 ID
  2. local 是存储的名字,我将默认创建的 local-lvm 删除了,空间合并到 local。

输出为:

importing disk '/var/lib/vz/template/iso/openwrt.img' to VM 108 ...
Formatting '/var/lib/vz/images/108/vm-108-disk-0.raw', fmt=raw size=1090813440 preallocation=off
transferred 0.0 B of 1.0 GiB (0.00%)
transferred 12.0 MiB of 1.0 GiB (1.15%)
transferred 24.0 MiB of 1.0 GiB (2.31%)
......
transferred 1.0 GiB of 1.0 GiB (99.20%)
transferred 1.0 GiB of 1.0 GiB (100.00%)
transferred 1.0 GiB of 1.0 GiB (100.00%)
Successfully imported disk as 'unused0:local:108/vm-108-disk-0.raw'

之后就可以在 openwrt 的虚拟机中看到这个未使用的磁盘。

unused-disk

编辑这个磁盘,不用改动,点添加即可。然后用菜单中的 resize 功能调整磁盘的大小,修改为 8 G。

备注:这个 resize 操作还必须进行,如果直接启动,会报错如下:

kvm: -device scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100: Cannot get 'write' permission without 'resize': Image size is not a multiple of request alignment
TASK ERROR: start failed: QEMU exited with code 1

修改引导顺序

修改 openwrt 虚拟机的引导顺序,在虚拟机的选项(options) -》引导顺序(boot order)中,勾选刚才的磁盘,取消网络启动。

boot-order

至此 openwrt 安装完成,之后启动即可。

4 - 在物理机上安装 OpenWRT

介绍 OpenWRT 在物理机上的安装

方式一: u盘启动命令写入磁盘

首先准备一个u盘,然后使用镜像写入工具(我习惯性使用 rufus )将下载得到的 img 镜像写入到 u 盘中。

再使用这个制作好的 u 盘,修改主板bios为从 u 盘启动,之后启动电脑就可以运行 openwrt,但此时 openwrt 运行在 u 盘中。还需要将镜像文件写入到目标磁盘。

此时可以通过 openwrt 的页面上传或者 scp 命令将 img 镜像文件传到 openwrt 下。然后 ssh 登录 openwrt,执行 DD 命令,将 img 镜像写入到物理机磁盘。

dd 命令的示范如下:

dd if=/tmp/op.img of=/dev/sda

if 为输入文件,指向我们的 img 文件位置; of 为输出文件,选择物理硬盘。注意是整个磁盘,不是单个分区。具体磁盘分区情况可以通过 fdisk -f 命令查看。

备注:这个方式有点绕,其实最后还是要用工具将 img 镜像文件写入到物理磁盘,openwrt 在这个过程中只是作为一个 linux 系统使用。应该可以直接用 预先存放好 img 文件的 linux 启动盘 (比如最常见的 ubuntu server 安装盘)启动电脑,然后同样执行 DD 命令。

参考资料:

方式二:直接将镜像写入到磁盘

需要准备的工具有:

  • windows PE 启动盘
  • OpenWRT的img映像文件
  • physdiskwrite :写镜像文件的工具

简单说就是在 windows 下 (可以是PE,也可以是普通windows)通过 physdiskwrite 软件将 img 文件直接写入到指定的目标磁盘。这个方案更简单直白。

实操时遇到一些问题

  • 我用最新的微pe,做成u盘启动,然后运行 physdiskwrite 报错,只能放弃
  • 直接将需要写入的硬盘接到普通 win10 电脑上,然后运行 physdiskwrite 可以正常写入,也就是说 pe 不是必备
  • 在磁盘写入之前,最好用 win10 的磁盘工具或者 diskgenius 之类的将目标磁盘的所有分区清空,否则会报错
  • physdiskwrite ui如果遇到报错,先检查是不是磁盘没有清空,如果还报错,可以直接用命令行 cmd 执行命令 physdiskwrite -u xxxx.img,注意启动 cmd 时要用管理员权限
  • 实测 diskgenius 的从镜像恢复硬盘的功能应该也可以实现类似的功能,但是我操作时写入中途失败,估计是我下载的镜像的格式不被 diskgenius 支持。(如下面扩容时报错所示)

具体操作参考:

确认可行的操作

  1. 将要写入的硬盘接到某台可以正常使用的windows机器,启动 windows
  2. 将需要的文件复制到这台windows机器: physdiskwrite, openwrt 的 img 文件
  3. 在 windows 下用磁盘工具将要写入的硬盘的所有分区全部删除(如果有分区则写入img时会报错)
  4. 以管理员身份方式启动 physGUI,在硬盘设备列表中找到要写入的硬盘(切记小心不要选错)
  5. 右键菜单 “Image Laden” -> “Offnen”(不知道是哪国语言,反正不是英语),选择要写入的 openwrt 的 img 文件
  6. “Remove 2GB restriction” 一定要勾选(否则后面写入会报错因为目标硬盘容量大于2G)
  7. 最后一步,警告,点 “是” 之后开始写入,完成

扩容问题

下载的 openwrt 镜像一般只给1g的空间,平时是够用的,但如果有用 docker 等软件时,容易空间不够。因此最好是在安装时就扩容。

比较推荐的做法是在写入镜像之后,第一次启动之前,通过硬盘分区工具无损的扩展分区,比如 diskgenius。

实操时遇到问题:网上找到的类似资料,openwrt 的分区格式一般时 ext4,这种格式 diskgenius 是支持无损扩容的。但我操作时,openwrt 的分区显示不是 ext4 格式,导致无法扩容。

暂时先搁置,后面有需要再看怎么解决。