目 录CONTENT

文章目录

如何自定义ImmortalWrt

悟空的日常
2024-10-15 / 1 评论 / 16 点赞 / 12039 阅读 / 10459 字

视频中用到的固件:https://drive.google.com/drive/folders/1zpzIKgWFOMF6edxDECJMeL6qUvVheeJm

自定义参数 在线编译预装软件的ImmortalWrt

https://firmware-selector.immortalwrt.org/?version=23.05.4&target=x86%2F64&id=generic

注意上方🔝截图,有一个展开的按钮。点击之后,就能自定义参数了。如下你可以 在预装软件中增加自己需要的app

luci-i18n-firewall-zh-cn luci-i18n-filebrowser-zh-cn luci-app-argon-config luci-i18n-argon-config-zh-cn luci-i18n-opkg-zh-cn luci-i18n-ttyd-zh-cn luci-i18n-passwall-zh-cn luci-app-openclash luci-i18n-homeproxy-zh-cn openssh-sftp-server

上面⬆️的软件可以根据需求 自行添加,如果不知道软件名称 可以在仓库搜索和查询,点击下方直达仓库搜索

https://mirrors.vsean.net/openwrt/releases/23.05.4/packages/x86_64/luci/?sort=size&order=desc

首次启动时运行的脚本(uci-defaults)增加

# 设置默认wan口防火墙打开 方便虚拟机用户首次访问webui
uci set firewall.@zone[1].input='ACCEPT'
uci commit firewall
# 设置主机名映射 解决安卓原生TV首次连不上网的问题
uci add dhcp domain
uci set "dhcp.@domain[-1].name=time.android.com"
uci set "dhcp.@domain[-1].ip=203.107.6.88"
uci commit dhcp
# 根据网卡数量配置网络
count=0
for iface in $(ls /sys/class/net | grep -v lo); do
  # 检查是否有对应的设备,并且排除无线网卡
  if [ -e /sys/class/net/$iface/device ] && [[ $iface == eth* || $iface == en* ]]; then
    count=$((count + 1))
  fi
done
if [ "$count" -eq 1 ]; then
    # 单个网卡,设置为 DHCP 模式
    uci set network.lan.proto='dhcp'
    uci commit network
elif [ "$count" -gt 1 ]; then
    # 多个网卡,保持静态 IP
    uci set network.lan.ipaddr='192.168.100.1'
    uci commit network
fi

在线构建固件

都填写完成后,点击 【请求构建】就开始在线编译了。编译完成后下载即可

❗️更为详细的步骤 可参考天灵的博客

借助iStoreOS环境给我们下载的固件img扩容(其他linux也行)

我推荐使用iStoreOS系统来处理这个img镜像。因为其他OpenWrt可能没有大的空间来处理。

如果你想使用其他openwrt来处理,并且保证你有大于2GB以上的空间,也不是不行,需要额外安装2个组件

opkg update
opkg install parted
opkg install openssh-sftp-server

如果想增加2GB空间 则可用如下方法设置,遇到提示就按照要求输入FixOK


# 解压缩镜像文件
gzip -kd immortalwrt.img.gz
# 给img镜像末尾填充2GB空数据 (count=2000 表示增加 2GB 的空间)
dd if=/dev/zero bs=1M count=2000 >> immortalwrt.img



# 为了将2GB空间真正赋予具体的分区,使用分区工具parted操作镜像。
parted immortalwrt.img


# 查看分区情况
print
# 调整分区大小 (将第 2 个分区扩展至镜像文件的 100%)
resizepart 2 100%
# 查看是否扩展成功
print
# 退出分区工具
quit

更换软件源(可选 非必需)

sed -e 's,https://downloads.immortalwrt.org,https://mirrors.cernet.edu.cn/immortalwrt,g' \
    -e 's,https://mirrors.vsean.net/openwrt,https://mirrors.cernet.edu.cn/immortalwrt,g' \
    -i.bak /etc/opkg/distfeeds.conf

运行时扩容(luci-app-partexp)

sirpdboy 的项目源码⬇️⬇️⬇️

https://github.com/sirpdboy/luci-app-partexp

利用sirpdboy 的项目源码+kiddin9编译的ipk,我们可以一键安装分区扩容app

https://dl.openwrt.ai/23.05/packages/x86_64/kiddin9/

一键安装 分区扩容 app

wget -O install.sh https://cafe.cpolar.cn/wkdaily/OneKeyExpand/raw/branch/main/install.sh && chmod +x install.sh && ./install.sh

一键备份OpenWrt(仅 squashfs 格式的镜像文件有效)

项目地址:https://github.com/wukongdaily/OpenBackRestore/

友灵魂拷问,为什么不把docker也加进去编译

回答:immortalwrt在云端imagebuilder 并没有开放ROOTFS_PARTSIZE 这个定义软件包分区大小的参数。所以我们就不能自己定义大小。而docker 并非一个小组件,docker 及其依赖,全都安装完毕,可能需要1GB甚至更多。所以我们不能将docker加进去。其他组件都比较小。大家可以酌情根据自己的需求来添加。至于说docker,我们完全可以在扩容之后再安装。各位这次懂了吧~

如果各位的需求就是如此,那么你就可以考虑使用kwrt了。因为它可以定义软件包大小。而且默认就1GB 也不小了。它的网址如下

https://openwrt.ai/?target=x86%2F64&id=generic

根据我视频里提到的关于升级的问题。升级后是新固件的大小。而immortalwrt仓库提供了一个【值守式更新】的功能。如果用户可以自由调整软件包的大小,又能够任意升级。那么就会面临着从“大固件”升级到“小固件”的风险。这样就尴尬了,相当于数据丢失、或者干脆是升级失败的。所以我觉得他没有开放这个参数,是有这个原因的。另外这是一个很多人在维护的项目。若期待调整默认大小是1GB软件包,估计也需要其他开发者同意才行。也就是说这不是一个人说了算的,是一个团队。

常见编译错误

可能服务器为了避免重复存储,做了一些限制吧。如果都用同样的参数,可能产生的固件是相同的。因此可以稍微增减参数。这样才能触发编译。如果网盘有的,建议就别重复编译了。咱们也稍微节省点人家服务器的资源。

78787.jpg

如何安装docker

确定软件包是有足够的空间的,如果你安装的是我扩容之后的固件,自然没问题。docker和相关组件可能占用1g

luci-i18n-dockerman-zh-cn

上述名称是docker的名称。我们可以在软件包那里先更新列表,然后搜索该组件,并安装即可。比较大,需要好几分钟。

另外一个方法是采用命令行安装。

opkg update 
opkg install luci-i18n-dockerman-zh-cn

安装成功后,会出现在左侧菜单栏。首次使用建议重启一次路由器。

悟空的日常通知

16
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区