OpenWrt-变种immortalwrt

10,806 阅读2分钟
Ubuntu22
MT7620A

背景

当我们在国内进行OpenWrt的开发时,需要依赖一个更稳定的LuCI生态,所以我们使用专为国内优化的immortalwrt

1.只是烧入固件

如果你只是需要烧入一份固件,并不需要基于它的环境开发任何内容。你可以使用这个固件选择器,它支持很多固件,并且可以自定义预安装软件包和首次启动配置脚本。

image.png

2.手动编译

2.1. 安装依赖

我们首先要和开发人员保持一致的操作系统,开发人员大概率是基于 Ubuntu 开发的,因为他们github上有这么一句:

To build with this project, Ubuntu 20.04 LTS is preferred.

使用更高版本也是没事儿的,对于新手,我建议使用官方提供的脚本:

sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh)'

2.2. 编译打tag的版本

这里我就选择 v21.02.7 :

git clone -b v21.02.7 --single-branch --filter=blob:none https://github.com/immortalwrt/immortalwrt

然后我们按照官方的指示执行:

cd immortalwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make download V=s
make -j1 V=s

这里我推荐把主题加上,因为确实 luci-theme-argon 会让你想使用它。

image.png

3. 优点

immortalwrt的优点在于,它的 LuCI 默认就包含一个很符合国内网络环境的软件包的功能,可以很方便管理opkg,执行一些命令行。在使用之前,一定要配置好交换机和接口。

image.png

4. 支持32M的SPI Flash

如果你对应的 MT7620A 有32M的flash,在新版中的修改方式为:打开相应 profiledts 文件,我们这里以 immortalwrt/target/linux/ramips/dts/mt7620a_ralink_mt7620a-evb.dts 为例,说一下。

还是修改reg


			partition@50000 {
				compatible = "denx,uimage";
				label = "firmware";
				reg = <0x50000 0x1fb0000>;
			};

删除 &ethernet 多余内容,到下面这种状态:

&ethernet {
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;

	mediatek,portmap = "llllw";
	
};

这样你再安装软件包就有空间了,当然后续也可以再使用SD卡扩展存储。

致谢

感谢 immortalwrt 的所有contributors