关于安装 OpenWrt 固件 或 ImmortalWrt 固件
一、关于 OpenWrt 固件介绍
OpenWrt 是一个广泛使用的开源固件项目,专门为路由器和其他网络设备设计。它不仅提供了基础的网络功能,还允许用户自定义设备的功能,使其成为一个非常强大的平台。
-
起源和发展:
- OpenWrt 最初是在2000年代初为 Linksys WRT54G/GS 路由器开发的一个固件替代品。
- 随着时间的发展,OpenWrt 社区不断壮大,支持的设备种类也越来越多,涵盖了从消费级路由器到企业级网络设备。
-
特点:
- 高度可定制:OpenWrt 提供了一个 Linux 操作系统的框架,用户可以根据自己的需求安装各种软件包,包括防火墙、DNS服务器、代理服务器等。
- 稳定性:OpenWrt 的内核和用户空间应用程序经过了严格的测试和优化,以确保在资源有限的设备上也能稳定运行。
- 安全性:OpenWrt 提供了一系列的安全特性,包括防火墙规则、SSL/TLS 加密支持等,有助于保护用户的网络免受攻击。
- 支持广泛的设备:OpenWrt 支持大量的硬件平台,从常见的家用路由器到工业级设备,甚至可以运行在一些非路由器设备上。
-
包管理系统:
- OpenWrt 使用
opkg
作为包管理系统,类似于 Debian 和 Ubuntu 中的apt
或者 Red Hat 和 CentOS 中的yum
。 - 用户可以通过简单的命令行操作安装和卸载软件包,极大地扩展了设备的功能。
- OpenWrt 使用
OpenWrt 的应用场景
-
家庭网络:
- 家庭用户可以使用 OpenWrt 来增强他们的路由器功能,比如设置家长控制、QoS(服务质量)、广告拦截等。
- 可以通过 OpenWrt 实现软路由功能,提高家庭网络的性能和稳定性。
-
企业网络:
- OpenWrt 也适用于企业环境,可以实现复杂的网络配置,如 VLAN、负载均衡、冗余连接等。
- 企业用户还可以利用 OpenWrt 的高可用性和冗余特性来构建可靠的网络基础设施。
-
物联网设备:
- OpenWrt 可以用作物联网设备的操作系统,提供安全性和灵活性。
安装 OpenWrt
-
刷写固件:
- 用户可以通过官方网站下载适合自己设备型号的固件文件,并通过设备的 Web 界面或 TFTP 方式进行刷写。
- 对于一些设备,也可以通过 USB 或 SD 卡来安装 OpenWrt。
-
首次启动配置:
- 刷写完成后,设备会自动重启,并进入 OpenWrt 的初始配置界面。
- 用户需要设置网络参数、管理员密码等基本信息。
-
软件包安装:
- 通过
opkg
命令安装所需的软件包,以扩展路由器的功能。
- 通过
相关项目
除了 OpenWrt 本身之外,还有一些基于 OpenWrt 的衍生项目,如:
- LEDE(LINUX Embedded Development Environment):
- LEDE OpenWrt 是OpenWrt的一个分支,专注于提高稳定性和安全性,并且致力于解决 OpenWrt 中存在的一些长期未解决的问题。
- 2017年底,LEDE 项目宣布与 OpenWrt 项目合并,LEDE 的开发成果被整合进 OpenWrt 主线。
- 自合并之后,LEDE 的功能和改进也被纳入了 OpenWrt 的主版本中,因此现在提到 OpenWrt 时,实际上已经包含了 LEDE 的许多改进。
- ImmortalWRT:另一个 OpenWrt 的分支,旨在解决 OpenWrt 中的一些长期存在的问题,并支持更多的设备。
OpenWRT下载地址
https://openwrt.org/zh/downloads
https://firmware-selector.openwrt.org/
Default login address:http://192.168.1.1/
or http://openwrt.lan/
, username: root, password: none.
二、关于 Lean 版本 OpenWrt 固件介绍
Lean 固件的特点
-
精简:
- Lean 固件去除了许多不必要的默认组件,仅保留核心功能,从而使固件更加轻便。
- 这种精简使得固件占用的空间更少,启动速度更快。
-
高效:
- Lean 固件优化了内存使用和性能表现,使得路由器在处理高负载任务时仍然保持高效。
- 特别适合高性能网络应用,如游戏加速、流媒体传输等。
-
定制性强:
- 用户可以根据自己的需求选择安装哪些组件,从而实现个性化的配置。
- Lean 固件通常提供了丰富的软件包库,用户可以安装各种插件来扩展路由器的功能。
-
安全性:
- Lean 固件通常会及时更新补丁,以确保安全性。
- 用户可以根据需要安装额外的安全组件,如防火墙规则、加密支持等。
注意事项
-
设备兼容性:
- 在选择 Lean 固件之前,请确保您的设备型号得到了支持,并且有相应的固件版本可供下载。
- 通常在 GitHub 仓库或者其他下载站点会有明确的支持设备列表。
-
风险提示:
- 刷写固件是一项较为专业的操作,如果不小心可能会导致设备变砖(无法正常启动)。
- 在刷写前,请确保了解相关风险,并准备好相应的恢复措施。
三、关于 ImmortalWrt 固件介绍
这个github上最简单的介绍:
immortalwrt/immortalwrt: An opensource OpenWrt variant for mainland China users. (github.com):面向中国大陆用户的开源 OpenWrt 变体
-
起源:
- ImmortalWrt 起源于 OpenWrt,但在某些方面进行了改进和增强。
- 它最初是为了修复 OpenWrt 中的一些长期存在的问题而开发的,后来逐渐发展成为一个独立的项目。
- 它依旧跟随着OpenWrt的版本迭代,没错,但是它略微慢于官方最新版本。
-
特点:
- 稳定性:提供了更高的稳定性和可靠性。
- 包管理:拥有丰富的软件包管理系统,可以方便地安装各种附加组件。(可以在国内的网络环境中更新、安装软件包,对国内用户非常友好)
- 支持设备:支持广泛的路由器和其他网络设备,包括一些不再受官方 OpenWrt 支持的设备。
- 社区支持:拥有活跃的开发者社区,不断更新和改进。
四、immortalwrt下载地址:
https://downloads.immortalwrt.org/
https://firmware-selector.immortalwrt.org/
Default login address: http://192.168.1.1 or http://immortalwrt.lan, username: root, password: none.
五、关于固件格式的选择和系统安装
VMDK (Virtual Machine Disk)VMDK
文件格式是由VMware开发的,用于其虚拟化产品(如VMware Workstation, Fusion, ESXi等)
VDI(Virtual Disk Image)VDI
文件格式是Oracle VirtualBox使用的默认磁盘格式。虽然最初是VirtualBox专有的,但它也逐渐被其他虚拟化平台所支持。
VHDX(Virtual Hard Disk)VHDX
文件格式是由微软引入的,用于Hyper-V和其他Windows虚拟化工具。它是VHD格式的升级版本,旨在解决VHD的一些局限性。
1、ext4和squashfs的区别
ext4的固件方便扩容,但是不能重置路由器
squashfs的固件也能扩容,更能够重置路由器(所以强力推荐)
2、关于有-efi的和无-efi的区别
1. 引导过程
- 有-EFI:EFI系统使用一种称为EFI引导的方式加载操作系统。EFI固件提供了一个安全的引导流程,允许操作系统从EFI分区(ESP,EFI System Partition)加载引导加载程序。EFI引导加载程序可以执行更复杂的代码,并且通常具有更高的安全性。
- 无-EFI:传统BIOS(基本输入输出系统)系统使用MBR(主引导记录)来引导操作系统。MBR位于硬盘的第一个扇区,包含引导加载程序和分区表。
2. 硬件初始化
- 有-EFI:EFI固件使用EFI驱动程序来初始化硬件,这些驱动程序可以比传统的BIOS初始化过程提供更多功能,并且通常更可靠。
- 无-EFI:BIOS系统使用ROM中的固件来初始化硬件,这些固件通常功能较为有限。
3. 安全性
- 有-EFI:EFI固件支持安全启动功能,这可以防止未经授权的操作系统加载,并且可以验证引导加载程序和操作系统的签名,提高了系统的安全性。
- 无-EFI:传统BIOS系统缺乏内置的安全启动机制,因此更容易受到恶意软件的攻击。
4. 分区支持
- 有-EFI:EFI系统通常使用GPT(GUID分区表)格式的磁盘,这种格式支持更多的分区和更大的磁盘容量。
- 无-EFI:BIOS系统通常使用MBR(主引导记录)格式的磁盘,MBR格式的最大支持容量较小,并且只能支持四个主分区。
5. 实际应用场景
- 有-EFI:大多数现代PC、笔记本电脑、服务器以及其他高端设备都支持EFI引导。
- 无-EFI:一些老旧的计算机系统仍然使用传统的BIOS引导。
3、如果你是直接安装在硬件设备上“R2S、R4S路由器 或 X86小主机”
你应该选择
- generic-ext4-combined-efi.img.gz
- generic-squashfs-combined-efi.img.gz
这些文件通常用于EFI引导的计算机,并且包含了启动所需的EFI引导加载程序和支持文件。
或者选择(传统的BIOS)引导
- generic-ext4-combined.img.gz
- generic-squashfs-combined.img.gz
这里推荐squashfs-combined-efi 或 squashfs-combined的版本
下载后操作,还需要后面五步:
- 下载PE系统
- 下载硬盘写入工具Disk Image
- 把PE系统制作到U盘中,这里会格式化整个U盘,内容资料需要提前备份。
- 把硬盘写入工具Disk Image和OpenWrt固件拷贝到U盘中。
- 重启电脑进入PE系统在PE系统下使用硬盘写入工具Disk Image,把OpenWrt固件写入硬盘。
PE系统推荐干净的微PE,这个系统不会强行绑定广告、后门,良心系统。(根据你的硬件新旧和支持程度,下载PE版本,尽量安装那个新的V2.3的64位版本,传统的老硬件需要BIOS引导的下载V1.3的版本)
硬盘写入工具Disk Image
这里有别人的安装教学(快进到3分40秒开始硬盘安装):https://www.youtube.com/watch?v=zbxTvRO9SKY&t=307s
4、如果你是直接安装在VMware ESXi中(All in One小主机)
最适合的选择通常是.vmdk
格式的文件,因为它可以直接在ESXi上使用,而不需要额外的转换步骤。在您的列表中,有两个.vmdk
格式的文件。
你应该选择:
- generic-ext4-combined-efi.vmdk.gz
- generic-squashfs-combined-efi.vmdk
或者选择(传统的BIOS)引导
- generic-ext4-combined.vmdk.gz
- generic-squashfs-combined.vmdk
这里推荐squashfs-combined-efi 或 squashfs-combined的版本
目前我下载到最新版本,从uname -a
命令的输出中可以看出:
这是一个基于GNU工具集的Linux发行版,Linux内核的版本号5.15.162,是基于x86_64架构的ImmortalWRT固件,内核的编译时间Thu Jul 18 06:35:54 2024,内核编译的次数为0。
uname -a
Linux ImmortalWRT 5.15.162 #0 SMP Thu Jul 18 06:35:54 2024 x86_64 GNU/Linux
cat /proc/version
命令还可以看到更详细的版本信息
下载后操作,还需要VMware的格式转化:
使用EXSI安装,这里需要ssh到exsi后台,然后执行vmdk文件转化
现在后台打开远程SSH服务
明确存储路径
# 转换vmdk
# 进入镜像的目录 点击存储,选中存储即可看到位置(即目录)
cd /vmfs/volumes/534d1f5e-9fd04708-67d4-0010187a32d8/openwrt
# 转换命令
vmkfstools -i [原磁盘文件全称] [新磁盘文件全称]
vmkfstools -i A.vmdk A-new.vmdk -d thin
# 其中【 -i 】作用是转换,【 -d thin 】作用是将新磁盘文件使用“精简置备模式”。
SSH进入后台——上传VMDK文件——执行转化命令,执行过程如下:
[root@localhost:/vmfs/volumes/66689db1-638700f8-3ab9-5c6f690e1270/OpenWRT] ls
immortalwrt-23.05.3-x86-64-generic-squashfs-combined-efi.vmdk
[root@localhost:/vmfs/volumes/66689db1-638700f8-3ab9-5c6f690e1270/OpenWRT] vmkfstools -i immortalwrt-23.05.3-x86-64-generic-squashfs-combined-efi.vm
dk OpenWrt-Desk.vmdk -d thin
Destination disk format: VMFS thin-provisioned
Cloning disk 'immortalwrt-23.05.3-x86-64-generic-squashfs-combined-efi.vmdk'...
Clone: 100% done.
[root@localhost:/vmfs/volumes/66689db1-638700f8-3ab9-5c6f690e1270/OpenWRT]
修改Openwrt官方源的方法(ImmortalWrt 不建议修改)
几个官方指定的国内镜像源:[OpenWrt Wiki] 下载
国内默认无法更新国外源里面的软件,更换源后,就可以正常访问了,解决无法安装软件的困扰。
打开默认的源配置文件
vim /etc/opkg/distfeeds.conf
首先,备份原始的镜像源(23.05.4版本备份),并且一会儿会用到。
src/gz openwrt_core https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/targets/x86/64/packages
src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/x86_64/base
src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/x86_64/luci
src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/x86_64/packages
src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/x86_64/routing
src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/x86_64/telephony
或者修改为 中国科学技术大学软件源(以23.05.3版本为例)这个网站不能FQ访问,不然拉黑你(可能每次1-3天)。
src/gz openwrt_core https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/targets/x86/64/packages
src/gz openwrt_base https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/packages/x86_64/base
src/gz openwrt_luci https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/packages/x86_64/luci
src/gz openwrt_packages https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/packages/x86_64/packages
src/gz openwrt_routing https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/packages/x86_64/routing
src/gz openwrt_telephony https://mirrors.ustc.edu.cn/openwrt/releases/23.05.3/packages/x86_64/telephony
修改添加自定义源
vim /etc/opkg/customfeeds.conf
在此文件中添加自定义源
src/gz immortalwrt_luci https://downloads.immortalwrt.org/releases/23.05.3/packages/x86_64/luci
src/gz immortalwrt_base https://downloads.immortalwrt.org/releases/23.05.3/packages/x86_64/base
src/gz immortalwrt_packages https://downloads.immortalwrt.org/releases/23.05.3/packages/x86_64/packages
src/gz openwrt_ai_kiddin9 https://dl.openwrt.ai/packages-23.05/x86_64/kiddin9
如果添加自定义的源时,不添加密钥(或者密匙有问题)就需要关闭签名检查。
vim /etc/opkg.conf
# 注释掉option check_signature这一行即可
# option check_signature
对软件源配置文件进行完修改后,更新软件列表 opkg update
这里强力推荐个第三方源
注意:手动去第三方源的web界面下载后上传,是比较稳妥的方法。在系统中修改第三方源,可能会遇到种种异常问题。
添加方法如下:
src/gz openwrt_kiddin9 https://dl.openwrt.ai/latest/packages/x86_64/kiddin9
这是immortalwrt的镜像源地址,国内也可用(也可用放入openwrt的第三方源用)
src/gz immortalwrt_core https://mirrors.vsean.net/openwrt/releases/23.05.3/targets/x86/64/packages
src/gz immortalwrt_base https://mirrors.vsean.net/openwrt/releases/23.05.3/packages/x86_64/base
src/gz immortalwrt_luci https://mirrors.vsean.net/openwrt/releases/23.05.3/packages/x86_64/luci
src/gz immortalwrt_packages https://mirrors.vsean.net/openwrt/releases/23.05.3/packages/x86_64/packages
src/gz immortalwrt_routing https://mirrors.vsean.net/openwrt/releases/23.05.3/packages/x86_64/routing
src/gz immortalwrt_telephony https://mirrors.vsean.net/openwrt/releases/23.05.3/packages/x86_64/telephony
opkg 的基本使用
下面的例子应该可以比较直观地看出来,一些基本的使用命令:
opkg update #更新可用软件包列表
opkg upgrade 软件包名1 软件包名2 #升级软件包
opkg install dnsmasq #安装软件
opkg install http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/hiawatha_7.7-2_ar71xx.ipk # 安装软件
opkg install /tmp/hiawatha_7.7-2_ar71xx.ipk #安装软件
opkg install --force-depends dnsmasq #强制安装软件 尽管依赖项失败,但仍安装。
opkg remove 软件包名 #删除软件
opkg remove --force-depends example-package #强制删除软件 尽管依赖项失败,但仍删除。
opkg list #列出可用软件包
opkg list-installed #列出已安装软件包
opkg list-upgradable #列出可升级的已安装软件包
官方说明[OpenWrt Wiki] Opkg package manager
磁盘扩容
OpenWrt的空间扩容问题,可以这么直接解决!韩风Talk (ext4文件系统)
OpenWrt空间扩容:这波补充超有料!韩风Talk (f2fs文件系统)
关于第三方集成平台(有很多),因为可能有一些不安全的因素(可能会被动手脚)。我这里不多介绍(不推荐),不过有教学视频
实现OpenWrt固件自由,想用啥插件就装啥,分分钟定制适合自己的固件,支持所有平台或设备 向北
辨别防火墙类型
首先分辨openwrt防火墙类别(iptables or nftables)、
通过ssh连接openwrt执行命令判断:
iptables -L
如果能正常列出规则,则表示使用的是iptables
nft list ruleset
如果能正常列出规则,则表示使用的是nftables
官方openwrt固件:OpenWrt 22.03系列专注于从基于iptables的防火墙3迁移到基于nftables的防火墙4
immortalwrt固件:过渡版本两者共存 默认使用nftables 最新版也单独使用nftables
Lean固件:iptables
关于dnsmasq的处理
immortalwrt软件包处直接安装, 官方openwrt手动安装、Lean的固件请使用已经编译好openclash的固件。
命令安装注意事项:
分辨后再根据对应的防火墙类别安装对应的依赖(阅读下面的注意事项再安装),然后安装Luci文件。
注意:如果安装依赖过程中有关于dnsmasq-full 的报错,一般是因为OpenClash 其中一项依赖是 dnsmasq-full,openwrt固件有的默认的是dnsmasq(可在已安装包中确认),需要删除dnsmasq再安装dnsmasq-full 。
opkg remove dnsmasq
卸载dnsmasq 安装依赖前执行卸载.
opkg remove dnsmasq && opkg install dnsmasq-full
卸载dnsmasq并安装dnsmasq-full,如果忘记卸载dnsmasq安装依赖后报错,执行这个.
一些终端执行命令:
修改网卡IP配置命令
vim /etc/config/network
重启网络配置的终端执行命令
/etc/init.d/network restart
wifi模块安装组件(BROADCOM博通BCM-943224HMS无线网卡)
brcmsmac-firmware
broadcom-43224-sprom