Compare commits

...

127 Commits

Author SHA1 Message Date
113c22ba74 新增启动或关闭AdGuardHome 2025-05-24 07:56:55 +08:00
21ff380553 调整代码顺序 2025-05-20 09:33:39 +08:00
e9c97af629 隐藏首页格式化按钮 2025-05-19 16:56:29 +08:00
c4ed8dc6bf test5 2025-05-14 10:20:46 +08:00
f624071dac test4 2025-05-13 20:06:11 +08:00
619b50be90 test3 2025-05-13 19:22:33 +08:00
8dc7611578 test2 2025-05-13 18:59:31 +08:00
cacec54851 test1 2025-05-13 18:35:22 +08:00
acd98d75e4 test 2025-05-13 18:26:37 +08:00
806c58df59 更新 gl-inet.sh 2025-05-03 08:21:34 +08:00
ebf2f9ad31 更新 gl-inet.sh
增加网站信息
2025-04-28 08:10:46 +08:00
bd56bcf6f7 更新 gl-inet.sh 2025-03-26 09:43:19 +08:00
b143b06d36 更新 gl-inet.sh 2025-01-25 11:36:25 +08:00
d38041109f 改成卸载GL原厂adguradhome 并提示用户使用run安装新版luci-app-adguardhome 2025-01-25 11:32:39 +08:00
ef298252f3 去掉换源 2025-01-24 22:00:50 +08:00
aad8e8a9bf 提醒8080端口 2025-01-03 11:47:39 +08:00
387eaa4c84 更新 README.md 2024-12-25 13:11:16 +08:00
c2a2b23c01 修改脚本域名cafe.cpolar.top 增加全局快捷键g
1、修改脚本域名cafe.cpolar.top
2、增加全局快捷键g
2024-12-25 11:19:46 +08:00
d49c41f6f6 替换域名 2024-12-07 16:26:00 +08:00
cb653ebffb 修复脚本卡住的问题 2024-11-13 12:27:41 +08:00
1802125735 Update gl-inet.sh 2024-10-05 15:52:10 +08:00
332f0449c0 补充iptables相关mod组件 2024-10-05 15:04:22 +08:00
10d08c5287 modify hostname for address 2024-10-05 14:35:41 +08:00
2fa1fb40bb Update gl-inet.sh 2024-05-09 11:24:02 +08:00
2c4479ea59 Update README.md 2024-05-09 10:38:52 +08:00
7a9e09fd5e 去除proxy 改用cafe仓库脚本 2024-05-09 10:36:59 +08:00
8138cc7cb5 更新 README.md 2024-05-06 18:22:40 +08:00
wukongdaily
4c7bd38214
Update README.md 2024-04-28 14:16:45 +08:00
wukongdaily
f84b4313cf
Update README.md 2024-04-17 14:25:54 +08:00
wukongdaily
dcb741c3c0
Update README.md 2024-04-12 10:38:24 +08:00
wukongdaily
595f9ffcbf
Update README.md 2024-04-11 14:59:43 +08:00
wukongdaily
dc83ebbc5c
Update README.md 2024-04-09 10:34:32 +08:00
wukongdaily
4451bb7443
Update README.md 2024-04-08 19:46:28 +08:00
5f7b0c4d52 Update mt3000.sh 2024-04-08 16:59:50 +08:00
0e0e6bf732 Update mt3000.sh 2024-04-08 13:24:59 +08:00
e636728c4b add mt3000 usb overlay helper 2024-04-08 10:53:12 +08:00
wukongdaily
45e7c4749c
Update README.md 2024-04-08 09:11:44 +08:00
wukongdaily
f6655630f2
Update README.md 2024-04-07 15:36:27 +08:00
wukongdaily
8401df665f
Update README.md 2024-04-05 11:32:58 +08:00
dbbe465556 Merge branch 'master' of https://github.com/wukongdaily/gl-inet-onescript 2024-04-05 11:12:21 +08:00
e649613e06 Update gl-inet.sh 2024-04-05 11:12:18 +08:00
wukongdaily
61801b74c4
Update README.md 2024-04-05 11:10:54 +08:00
d97b93cf96 add proxy 2024-04-05 11:08:58 +08:00
wukongdaily
08926733d6
Update README.md 2024-04-04 17:29:02 +08:00
wukongdaily
85128bdabd
Update README.md 2024-03-29 16:48:56 +08:00
7e6e4e5f01 默认安装必备工具SFTP 方便下载文件 比如finalshell等工具可以直接浏览路由器文件 2024-03-29 15:26:20 +08:00
8a60ca935b Update gl-inet.sh 2024-03-29 10:35:05 +08:00
ef3b594fe3 上传简易的文件传输 2024-03-28 22:31:52 +08:00
wukongdaily
ca69ef50b8
Update README.md 2024-03-28 18:44:32 +08:00
3c192d2e11 增加docker-compose选项 2024-03-28 18:22:19 +08:00
2083a7f758 增加docker-compose功能 2024-03-28 18:19:56 +08:00
wukongdaily
3a80edbe93
Update README.md 2024-03-27 14:20:53 +08:00
wukongdaily
26b25dd99f
Update README.md 2024-03-27 14:20:27 +08:00
wukongdaily
406338b8fc
Update README.md 2024-03-27 14:19:54 +08:00
wukongdaily
ff9b925a7b
Update README.md 2024-03-27 13:56:42 +08:00
wukongdaily
b59ae1fcb6
Update README.md 2024-03-27 10:15:04 +08:00
wukongdaily
c9cf322c91
Update README.md 2024-03-27 09:56:00 +08:00
wukongdaily
29105a1b9c
Update README.md 2024-03-27 09:48:51 +08:00
wukongdaily
258c6f2384
Update README.md 2024-03-26 23:13:58 +08:00
wukongdaily
a75f840c97
Update README.md 2024-03-26 22:55:40 +08:00
wukongdaily
47492546ee
Update README.md 2024-03-26 15:17:51 +08:00
92cb30dea8 Update do_docker.sh 2024-03-26 14:02:08 +08:00
wukongdaily
071cbde43d
Update README.md 2024-03-26 13:22:33 +08:00
wukongdaily
e7a1ba9550
Update README.md 2024-03-26 13:14:50 +08:00
8c4f25d8c9 Update do_docker.sh 2024-03-25 23:29:09 +08:00
772411708d Update do_docker.sh 2024-03-25 22:59:34 +08:00
3fc95bfc16 Update do_docker.sh 2024-03-25 21:52:02 +08:00
95c4b5e9ad Update do_docker.sh 2024-03-25 20:25:32 +08:00
f67f96351d Update gl-inet.sh 2024-03-25 20:23:53 +08:00
fc3e9a4aa9 Update do_docker.sh 2024-03-25 20:19:41 +08:00
79df3443bd Update do_docker.sh 2024-03-25 20:04:36 +08:00
856dfe3b57 Update do_docker.sh 2024-03-25 19:40:04 +08:00
f48501fc86 Update gl-inet.sh 2024-03-25 18:06:55 +08:00
39c97e7091 Update do_docker.sh 2024-03-25 18:00:05 +08:00
26e1e94adf Update gl-inet.sh 2024-03-25 15:38:46 +08:00
a76fbd9462 Update do_docker.sh 2024-03-25 15:03:14 +08:00
72b209c72a Update gl-inet.sh 2024-03-25 14:36:19 +08:00
f18309fb13 Update do_docker.sh 2024-03-25 14:32:42 +08:00
7f5051ddda Update do_docker.sh 2024-03-25 14:08:55 +08:00
wukongdaily
cf6e5993d2
Update README.md 2024-03-25 08:25:16 +08:00
wukongdaily
4f1c6d64b1
Update README.md 2024-03-24 20:40:45 +08:00
434f4a529a Update do_docker.sh 2024-03-24 14:29:42 +08:00
85bc701207 Update gl-inet.sh 2024-03-24 13:40:12 +08:00
ae47e79b3c Update gl-inet.sh 2024-03-24 13:22:47 +08:00
0428a4b69b Update lsblk.ipk 2024-03-24 13:21:35 +08:00
wukongdaily
772ec99928
Update README.md 2024-03-24 12:49:03 +08:00
wukongdaily
6735cb2f48
Update README.md 2024-03-24 12:45:14 +08:00
wukongdaily
fcc2c74e77
Update README.md 2024-03-24 12:44:02 +08:00
wukongdaily
6b04ed91b9
Update README.md 2024-03-24 12:37:24 +08:00
94e64644b1 Update gl-inet.sh 2024-03-24 12:35:51 +08:00
6c5d6a3273 Update gl-inet.sh 2024-03-24 12:28:25 +08:00
297bd3cbe8 Update do_docker.sh 2024-03-24 12:06:58 +08:00
379f3cea50 Update do_docker.sh 2024-03-24 11:35:20 +08:00
b1d2fb8b6a Update do_docker.sh 2024-03-24 11:22:24 +08:00
168db9fea6 Update do_docker.sh 2024-03-24 10:56:42 +08:00
a482a192f7 Update do_docker.sh 2024-03-24 10:38:33 +08:00
684a77c777 update shell 2024-03-24 10:19:53 +08:00
6c53746d01 Update do_docker.sh 2024-03-24 08:27:37 +08:00
wukongdaily
fd70552ebe
Update README.md 2024-03-23 15:07:16 +08:00
wukongdaily
5546f42ed5
Update README.md 2024-03-23 15:03:58 +08:00
90d1474eeb 提交docker第一版测试 2024-03-23 14:33:52 +08:00
a946cd35ec Update gl-inet.sh 2024-03-22 21:28:11 +08:00
ce94cb6f90 Update gl-inet.sh 2024-03-22 19:44:03 +08:00
3aa8020a53 Update gl-inet.sh 2024-03-22 19:22:48 +08:00
d2be7a0db1 增加mt6000 需要的依赖 2024-03-22 16:53:33 +08:00
784168b151 Update gl-inet.sh 2024-03-22 16:24:15 +08:00
4a6ee50d88 提交mt6000新版固件的opkg备份 2024-03-22 16:13:52 +08:00
bcd6cbe5cd Update gl-inet.sh 2024-03-22 16:08:17 +08:00
5e9536c741 Update gl-inet.sh 2024-03-20 22:31:13 +08:00
wukongdaily
d5629e589e
Update gl-inet.sh 2024-03-20 21:40:21 +08:00
wukongdaily
7980483b59
Update gl-inet.sh 2024-03-19 14:10:15 +08:00
d0649bb749 Update gl-inet.sh
1、兼容处理首页“已联网” 的UI问题,opkg将原厂配置做了调整
2、兼容处理首页不显示终端的问题。采用主动安装ttyd方式。
原本luci-app-quickstart 是依赖ttyd终端的,后来改版后不依赖了。因此需要主动安装。
2024-03-19 13:33:35 +08:00
wukongdaily
05b6576175
Update distfeeds.conf
mt-2500,modify third-party software source name , replace "glinet_core" to "glinet_base", In order to be compatible with luci-app-quickstart UI bugs
2024-03-19 13:03:02 +08:00
wukongdaily
65480900af
Update distfeeds.conf
mt-6000,modify third-party software source name , replace "glinet_core" to "glinet_base", In order to be compatible with luci-app-quickstart UI bugs
2024-03-19 13:02:20 +08:00
wukongdaily
c3aac2fd68
Update distfeeds.conf
modify third-party software source name , replace "glinet_core" to "glinet_base", In order to be compatible with luci-app-quickstart UI bugs
2024-03-19 13:01:21 +08:00
wukongdaily
9e309d2c6c
Update README.md 2024-02-26 17:23:01 +08:00
95267cc3da Update gl-inet.sh
修改第三方源为iStore源。修复quickstart未汉化问题
2024-02-05 17:27:51 +08:00
4b1a3cff8e Update .gitignore
忽略打包文件
2024-02-05 11:53:11 +08:00
50986d18ca Update gl-inet.sh
修改主题设定崩溃问题
2024-02-05 11:51:33 +08:00
wukongdaily
ec2bc4318a
Update README.md 2024-02-05 10:43:16 +08:00
860ea34697 修复登录按钮英文的问题
直接安装2.2.9.4版本的argon主题。因为经测试这版本对于gl路由器是最匹配的,避免了登录页面英文的问题,避免了字体不正确的问题。而且主题皮肤稳定了就不需要经常更新了。备注它的名称叫做luci-theme-argon-master
2024-02-05 10:41:06 +08:00
wukongdaily
10ca7d7e89
添加2.2.9.4版本的argon主题
添加原因:
由于2.3.1 最新版的luci-argon-theme 在mt3000上登录按钮没有中文匹配,而2.3版本字体又是细体不对。
所以这里安装上一个版本2.2.9.4,考虑到主题皮肤并不需要长期更新,因此固定版本没问题。
后续直接安装这个版本,不拉仓库最新版了。
2024-02-05 10:17:25 +08:00
wukongdaily
4baec7ad25
Update README.md 2024-01-04 14:36:41 +08:00
wukongdaily
25a0a4513d
Update gl-inet.sh 2024-01-04 14:31:00 +08:00
wukongdaily
5e849190dc
Update README.md 2023-12-02 15:37:32 +08:00
1f7832005a 优化安装提示 2023-11-26 10:46:40 +08:00
2a0be4542a Update gl-inet.sh 2023-11-24 11:40:51 +08:00
17 changed files with 878 additions and 119 deletions

2
.gitignore vendored
View File

@ -31,3 +31,5 @@
*.out
*.app
.DS_Store
udisk/create-img.sh
udisk/onescript.sh

178
README.md
View File

@ -1,70 +1,158 @@
# GL-iNet 系列路由器 一键iStoreOS风格化脚本
[![GitHub](https://img.shields.io/github/license/wukongdaily/gl-inet-onescript.svg?label=LICENSE&logo=github&logoColor=%20)](https://github.com/wukongdaily/gl-inet-onescript/blob/master/LICENSE)
![GitHub Stars](https://img.shields.io/github/stars/wukongdaily/gl-inet-onescript.svg?style=flat&logo=appveyor&label=Stars&logo=github)
![GitHub Forks](https://img.shields.io/github/forks/wukongdaily/gl-inet-onescript.svg?style=flat&logo=appveyor&label=Forks&logo=github)
***
# gl-inet-onescript
This script is specifically designed for GL-iNet routers to quickly install essential system software. Even if the user resets the system, there is no need to worry because this script can complete complex and tedious tasks with a single click.<br>
[切换到中文使用指南](https://github.com/wukongdaily/gl-inet-onescript/wiki/%E4%B8%AD%E6%96%87%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)
# TipsHow to Use SSH
https://github.com/wukongdaily/HowToUseSSH
# one scripthas Menu
<img alt="Static Badge" src="https://img.shields.io/badge/MT3000-E70D0D?style=for-the-badge&label=MT2500A&labelColor=8A2BE2">
## 🤔 这是什么?
该项目可以让MT2500/MT3000/MT6000路由器在不刷机情况下,一键变成iStoreOS风格。<br><br>
<img alt="Static Badge" src="https://img.shields.io/badge/MT6000-0?style=flat-square&logoColor=8A2BE2&label=%E5%9E%8B%E5%8F%B7&labelColor=000000&color=336666">
<img alt="Static Badge" src="https://img.shields.io/badge/MT2500A-0?style=flat-square&logoColor=8A2BE2&label=%E5%9E%8B%E5%8F%B7&labelColor=000000&color=D94600">
<img alt="Static Badge" src="https://img.shields.io/badge/MT3000-0?style=flat-square&logoColor=8A2BE2&label=%E5%9E%8B%E5%8F%B7&labelColor=000000&color=2828FF">
## 💡 特色功能
- 💻 支持`一键安装iStoreOS风格`
- 💻 支持`一键安装紫色的Argon主题`
- 💻 支持`一键安装文件管理器`
- 🔑 支持`一键设置MT-3000风扇开始工作的温度`
- 🌏 支持`一键部署Docker运行环境`
- 🌏 支持`一键安装docker-compose`
- 🐋 支持`一键安装GL原厂adguardhome`
- 📕 支持`一键恢复原厂的OPKG软件源`
- 🔑 支持`MT-3000 一键更换分区到U盘`
- 💡 使用条件GL-iNet 原厂固件(非测试版、预览版)
- GL-inet MT-6000✅
- GL-inet MT-3000 ✅
- GL-inet MT-2500 ✅ 固件版本4.5.0(最好降级到此版本)
- OrangePi Zero3(官方Openwrt镜像)
## 🚀 快速上手
### 1. SSH连接到路由器,或者在路由器终端执行如下命令
```bash
wget -O gl-inet.sh https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/gl-inet.sh && chmod +x gl-inet.sh && ./gl-inet.sh
```
wget -O /tmp/gl-inet.sh https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/gl-inet.sh && chmod +x /tmp/gl-inet.sh && /tmp/gl-inet.sh
### 下次如何调用? 输入快捷键 g 即可
```bash
g
```
### 2.单独安装Docker
```bash
wget -O do_docker.sh https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/docker/do_docker.sh && chmod +x do_docker.sh && ./do_docker.sh
```
### 3.单独安装iStore商店
```bash
wget -O /tmp/reinstall_istore.sh https://gitee.com/wukongdaily/gl_onescript/raw/master/reinstall_istore.sh && chmod +x /tmp/reinstall_istore.sh && /tmp/reinstall_istore.sh
```
***
# onekey for iStore
```
wget -O /tmp/reinstall_istore.sh https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/reinstall_istore.sh && chmod +x /tmp/reinstall_istore.sh && /tmp/reinstall_istore.sh
```
# Install iStore offline by using a USB flash drive
https://telegra.ph/install-istore-for-mt3000-11-03 <br>
# onekey for File Manager
```
wget -O /tmp/reinstall_istore.sh https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/reinstall_istore.sh && chmod +x /tmp/reinstall_istore.sh && /tmp/reinstall_istore.sh
### 4.单独安装文件管理器
```bash
wget -O /tmp/reinstall_istore.sh https://gitee.com/wukongdaily/gl_onescript/raw/master/reinstall_istore.sh && chmod +x /tmp/reinstall_istore.sh && /tmp/reinstall_istore.sh
/tmp/is-opkg install app-meta-linkease
```
# Important Note:↓
### After the menu appears, press H to return to the old version of the video
### 5.新手ssh连接注意事项
https://github.com/wukongdaily/HowToUseSSH
### 6.使用独立版docker-compose
```bash
docker-compose version
```
```bash
# 注意上述代码中使用的是独立版docker-compose并非标准安装的docker compose
# 区别就是中间没有空格是一个独立的可执行文件。当然这个叫做docker-compose的可执行文件
# 你可以任意命名不过就是习惯这样写还有的人重命名为docker_compose之类的都可以。
```
### 辅助视频教程⬇️
https://www.bilibili.com/video/BV1YJ4m1L7A3/
# Docker面板的选择
## 🔑 安装1panel 面板 来管理Docker 容器
# Features
* At present, it is only compatible with GL-iNet MT2500 and MT-3000.
* Change the starting temperature for the MT3000 smart temperature-controlled fan to 45 degrees.
* One-click implementation of the iStoreOS homepage style and installation of the iStore store.
* Set up custom domain hijacking (hostname mapping)<br>
to prevent the issue of Android native TV not connecting to Wi-Fi for the first time.
* Other GL models and functions are under development; adaptations will be made based on audience feedback in the future.
* This script is only for my audience, and I'm not an expert. It's a free tool made for the convenience of viewers.
* press H/h to return to the old version of the video
* If you encounter problems, you can raise an issue, provide screenshots, or attach logs.
#
### 可以使用 docker离线包加载
```bash
国内地址 https://pan.baidu.com/s/1Zh913sP6rZWXmhC_rKjWQA?pwd=1111
备选地址 https://drive.google.com/drive/folders/15HL-lHxW9J74Fwwebrg0lMjRsenScWnO
```
### 上传到U盘其他空间(这里注意是/mnt/upan_data)
```bash
docker load < /mnt/upan_data/1panel-arm64.tar.gz
```
```bash
docker run -d \
--name 1panel \
--restart always \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /www/data/1panel-data:/mnt/data_sda2/1panel_data \
-e TZ=Asia/Shanghai \
moelin/1panel:latest
```
`其中 /mnt/data_sda2/ 可以换成自己实际的路径,最好是空间大点的`
- 默认端口10086
- 默认账户1panel
- 默认密码1panel_password
- 默认入口entrance
## 访问地址
```bash
http://192.168.8.1:10086/entrance
```
# Acknowledgments
## 🔑 安装Fast OS面板 来管理Docker 容器
```bash
docker run -d \
--name fastos \
--restart always \
-p 8081:8081 \
-p 8082:8082 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/docker/:/etc/docker/ \
-v /root/data:/fast/data \
-e FAST_STORE=http://dockernb.com:8300 \
wangbinxingkong/fast:latest
```
### Fast OS 面板离线包
```bash
https://pan.baidu.com/s/1S5jxahCzE-HyIa-mUvOcZQ?pwd=1111
```
1、Install 'iStore' offline by using a USB flash drive <br>
https://telegra.ph/install-istore-for-mt3000-11-03 <br>
2、Third-party software source<br>
https://dl.openwrt.ai/packages-23.05<br>
https://op.dllkids.xyz/packages<br>
3、iStore app store<br>
https://github.com/linkease/istore<br>
## 🗂️ 引用项目
本项目的开发参照了以下项目,感谢这些开源项目的作者:
### istore
https://github.com/linkease/istore
![mt3000](https://github.com/wukongdaily/gl-inet-onescript/assets/143675923/0ff6cb12-0812-4198-b97b-30698da6a8c4)
# 其他docker举例 盒子助手docker版
```bash
docker run -d \
--restart unless-stopped \
--name tvhelper \
-p 2299:22 \
-p 2288:80 \
-v "/mnt/upan_data/tvhelper_data:/tvhelper/shells/data" \
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/android-sdk/platform-tools \
wukongdaily/box:latest
```
# 常见问题
- 1、如果你发现运行容器后,访问docker容器的web界面之后路由器的指示灯发生闪烁不用慌其实没有断网。
wan口网线拔了再插上就好了。其实不处理也无所谓的。闪烁也不代表没有网络。不准确的。
- 2、如果你发现运行容器后,访问不了docker容器的web界面。一般重启路由器就能解决。
- 3、请注意为了节省路由器空间,平时上传文件 最好是上传到 /mnt/upan_data 这个目录下。因为这是U盘空间比较大。
# 💰打赏作者💰
<img src="https://github.com/wukongdaily/tvhelper-docker/assets/143675923/1f92c5ba-1b6b-4967-a1ab-20697159badc" width="30%" />

220
docker/do_docker.sh Normal file
View File

@ -0,0 +1,220 @@
#!/bin/sh
# 定义颜色输出函数
red() { echo -e "\033[31m\033[01m[WARNING] $1\033[0m"; }
green() { echo -e "\033[32m\033[01m[INFO] $1\033[0m"; }
yellow() { echo -e "\033[33m\033[01m[NOTICE] $1\033[0m"; }
blue() { echo -e "\033[34m\033[01m[MESSAGE] $1\033[0m"; }
light_magenta() { echo -e "\033[95m\033[01m[NOTICE] $1\033[0m"; }
light_yellow() { echo -e "\033[93m\033[01m[NOTICE] $1\033[0m"; }
# 获取路由器型号信息
get_router_name() {
cat /tmp/sysinfo/model
}
# 安装依赖应用
install_depends_apps() {
blue "正在安装部署环境的所需要的工具 lsblk 和 fdisk ..."
router_name=$(get_router_name)
case "$router_name" in
*2500* | *3000*)
opkg update >/dev/null 2>&1
if opkg install lsblk fdisk >/dev/null 2>&1; then
green "$router_name 的 lsblk fdisk 工具 安装成功。"
else
red "安装失败。"
exit 1
fi
;;
*6000*)
red "由于 mt6000 的软件源中没有找到 lsblk 和 fdisk ..."
yellow "因此先借用 mt3000 的软件源来安装 lsblk 和 fdisk 工具"
# 备份 /etc/opkg/distfeeds.conf
cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.backup
# 先替换为 mt3000 的软件源来安装 lsblk 和 fdisk 工具
mt3000_opkg="https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-3000/distfeeds.conf"
wget -O /etc/opkg/distfeeds.conf ${mt3000_opkg}
green "正在更新为 mt3000 的软件源"
cat /etc/opkg/distfeeds.conf
opkg update
green "再次尝试安装 lsblk 和 fdisk 工具"
if opkg install fdisk lsblk; then
green "$router_name 的 lsblk fdisk 工具 安装成功。"
# 还原软件源
cp /etc/opkg/distfeeds.conf.backup /etc/opkg/distfeeds.conf
else
red "安装失败。"
# 还原软件源
cp /etc/opkg/distfeeds.conf.backup /etc/opkg/distfeeds.conf
exit 1
fi
;;
*)
echo "Router name does not contain '3000', '6000', or '2500'."
;;
esac
}
# 准备USB设备
prepare_usb_device() {
green "现在开始查找USB设备分区请稍后......"
local usb_disk=$(lsblk -dn -o NAME,RM,TYPE | awk '$2=="1" && $3=="disk" {print "/dev/"$1; exit}')
if [ -z "$usb_disk" ]; then
red "未找到USB磁盘。"
exit 1
fi
yellow "找到USB磁盘$usb_disk"
# 清零磁盘开始部分以清除分区表和文件系统签名
dd if=/dev/zero of=$usb_disk bs=1M count=10
sync
# 卸载所有与该磁盘相关的挂载点
unmount_usb_device "$usb_disk"
red "正在重新分区并格式化$usb_disk..."
create_and_format_partition "$usb_disk"
}
# 卸载USB设备
unmount_usb_device() {
for mount in $(mount | grep "$1" | awk '{print $3}'); do
yellow "正在尝试卸载U盘挂载点$mount"
umount $mount || {
red "警告:无法卸载挂载点 $mount。可能有文件正在被访问或权限不足。"
exit 1
}
green "U盘挂载点 $mount 卸载成功。"
done
}
# 创建并格式化分区
create_and_format_partition() {
{
echo o # 创建一个新的空DOS分区表
echo n # 添加一个新分区
echo p # 主分区
echo 1 # 分区号1
echo # 第一个可用扇区(默认)
echo # 最后一个扇区(默认,使用剩余空间)
echo w # 写入并退出
} | fdisk $1 >/dev/null 2>&1
sleep 5
local new_partition="${1}1"
red "正在将U盘 $new_partition 格式化为EXT4文件系统..."
mkfs.ext4 -F $new_partition >/dev/null 2>&1
green "$new_partition 已成功格式化为EXT4文件系统。"
configure_and_start_docker $new_partition
}
# 配置并启动Docker
configure_and_start_docker() {
local new_partition="$1"
local usb_mount_point="/mnt/upan_data"
local docker_root="$usb_mount_point/docker"
mkdir -p $docker_root
green "将U盘 挂载到 $usb_mount_point..."
mount -t ext4 $new_partition $usb_mount_point
if [ $? -ne 0 ]; then
red "挂载失败,脚本退出。"
exit 1
fi
green "U盘挂载成功啦\n"
green "正在创建 Docker 配置文件 /etc/docker/daemon.json"
mkdir -p /etc/docker
echo '{
"bridge": "docker0",
"storage-driver": "overlay2",
"data-root": "'$docker_root'"
}' >/etc/docker/daemon.json
install_docker
configure_docker_to_start_on_boot "$new_partition" "$usb_mount_point"
}
# 安装 Docker 和 dockerd
install_docker() {
green "正在更新 OPKG 软件包..."
opkg update >/dev/null 2>&1
green "正在安装 Docker 及相关服务...请耐心等待一会...大约需要1分钟\n"
opkg install luci-app-dockerman >/dev/null 2>&1
opkg install luci-i18n-dockerman-zh-cn >/dev/null 2>&1
opkg install dockerd --force-depends >/dev/null 2>&1
# 修改 /etc/config/dockerd 文件中的 data_root 配置
sed -i "/option data_root/c\ option data_root '/mnt/upan_data/docker/'" /etc/config/dockerd
}
# 配置 Docker 开机启动
configure_docker_to_start_on_boot() {
local new_partition="$1"
local usb_mount_point="$2"
# 创建并配置启动脚本
green "正在设置 Docker 跟随系统启动的文件:/etc/init.d/docker"
cat <<EOF >/etc/init.d/docker
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
PROG="/usr/bin/dockerd"
start_service() {
procd_open_instance
procd_set_param command \$PROG --config-file /etc/docker/daemon.json
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
killall dockerd
}
restart() {
stop
start
}
EOF
chmod +x /etc/init.d/docker
/etc/init.d/docker enable
green "正在设置开机启动顺序的配置\n\n先挂载U盘,再启动Docker 修改/etc/rc.local后如下\n"
# 首先,备份 /etc/rc.local
cp /etc/rc.local /etc/rc.local.backup
# glinet系统重启后的 USB自动挂载点
SYSTEM_USB_AUTO_MOUNTPOINT="/tmp/mountd/disk1_part1"
# 卸载USB自动挂载点 挂载自定义挂载点 /mnt/upan_data
if ! grep -q "umount $SYSTEM_USB_AUTO_MOUNTPOINT" /etc/rc.local; then
sed -i '/exit 0/d' /etc/rc.local
# 将新的命令添加到 /etc/rc.local然后再加上 exit 0
{
echo "umount $SYSTEM_USB_AUTO_MOUNTPOINT || true"
echo "mount $new_partition $usb_mount_point || true"
echo "/etc/init.d/docker start || true"
echo "exit 0"
} >>/etc/rc.local
fi
cat /etc/rc.local
green "Docker 运行环境部署完成 重启后生效\n"
red "是否立即重启?(y/n)"
read -r answer
if [ "$answer" = "y" ] || [ -z "$answer" ]; then
red "正在重启..."
reboot
else
yellow "您选择了不重启"
fi
}
# START
install_depends_apps
prepare_usb_device

View File

@ -1,5 +1,18 @@
#!/bin/sh
third_party_source="https://op.dllkids.xyz/packages/aarch64_cortex-a53"
# 定义颜色输出函数
red() { echo -e "\033[31m\033[01m$1\033[0m"; }
green() { echo -e "\033[32m\033[01m$1\033[0m"; }
yellow() { echo -e "\033[33m\033[01m$1\033[0m"; }
blue() { echo -e "\033[34m\033[01m$1\033[0m"; }
light_magenta() { echo -e "\033[95m\033[01m$1\033[0m"; }
light_yellow() { echo -e "\033[93m\033[01m$1\033[0m"; }
cyan() { echo -e "\033[38;2;0;255;255m$1\033[0m"; }
third_party_source="https://istore.linkease.com/repo/all/nas_luci"
# 设置全局命令 g
cp -f "$0" /usr/bin/g
chmod +x /usr/bin/g
setup_base_init() {
#添加出处信息
@ -15,23 +28,28 @@ setup_base_init() {
## 设置防火墙wan 打开,方便主路由访问
uci set firewall.@zone[1].input='ACCEPT'
uci commit firewall
}
## 安装应用商店和主题
install_istore_os_style() {
##设置Argon 紫色主题
do_install_argon_skin
#安装首页风格
is-opkg install luci-app-quickstart
#增加首页终端图标
opkg install ttyd
#默认使用体积很小的文件传输:系统——文件传输
do_install_filetransfer
#默认安装必备工具SFTP 方便下载文件 比如finalshell等工具可以直接浏览路由器文件
is-opkg install app-meta-sftp
is-opkg install 'app-meta-ddnsto'
#安装首页需要的文件管理功能
is-opkg install 'app-meta-linkease'
# 安装磁盘管理
is-opkg install 'app-meta-diskman'
# 若已安装iStore商店则在概览中追加iStore字样
if ! grep -q " like iStoreOS" /tmp/sysinfo/model; then
sed -i '1s/$/ like iStoreOS/' /tmp/sysinfo/model
fi
FILE_PATH="/etc/openwrt_release"
NEW_DESCRIPTION="Openwrt like iStoreOS Style by wukongdaily"
CONTENT=$(cat $FILE_PATH)
UPDATED_CONTENT=$(echo "$CONTENT" | sed "s/DISTRIB_DESCRIPTION='[^']*'/DISTRIB_DESCRIPTION='$NEW_DESCRIPTION'/")
echo "$UPDATED_CONTENT" >$FILE_PATH
}
# 安装iStore 参考 https://github.com/linkease/istore
do_istore() {
@ -60,6 +78,7 @@ do_istore() {
/tmp/is-opkg opkg install --force-reinstall luci-app-store || exit $?
[ -s "/etc/init.d/tasks" ] || /tmp/is-opkg opkg install --force-reinstall taskd
[ -s "/usr/lib/lua/luci/cbi.lua" ] || /tmp/is-opkg opkg install luci-compat >/dev/null 2>&1
}
#设置风扇工作温度
@ -135,20 +154,16 @@ add_dhcp_domain() {
uci set "dhcp.@domain[-1].name=$domain_name"
uci set "dhcp.@domain[-1].ip=$domain_ip"
uci commit dhcp
echo
echo "已添加新的域名记录"
else
echo "相同的域名记录已存在,无需重复添加"
echo
fi
echo -e "\n"
echo -e "time.android.com 203.107.6.88 "
}
#添加出处信息
add_author_info() {
uci set system.@system[0].description='wukongdaily'
uci set system.@system[0].notes='文档说明:
https://github.com/wukongdaily/gl-inet-onescript'
https://tvhelper.cpolar.top/'
uci commit system
}
@ -260,23 +275,6 @@ set_glfan_temp() {
echo "错误: 请输入整数."
fi
}
check_bash_installed() {
if [ -x "/bin/bash" ]; then
echo "rollback_old_version ......"
else
setup_software_source 0
opkg install bash
fi
}
rollback_old_version() {
check_bash_installed
download_url="https://github.com/wukongdaily/gl-inet-onescript/raw/1f25c161512e9b416227f60656e8c2139c993f69/gl-inet.run"
local_file_path="/tmp/gl-inet.run"
wget -O "$local_file_path" "$download_url"
chmod +x "$local_file_path"
"$local_file_path"
}
recovery_opkg_settings() {
echo "# add your custom package feeds here" >/etc/opkg/customfeeds.conf
@ -284,51 +282,91 @@ recovery_opkg_settings() {
case "$router_name" in
*3000*)
echo "Router name contains '3000'."
mt3000_opkg="https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/mt-3000/distfeeds.conf"
mt3000_opkg="https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-3000/distfeeds.conf"
wget -O /etc/opkg/distfeeds.conf ${mt3000_opkg}
;;
*2500*)
echo "Router name contains '2500'."
mt2500a_opkg="https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/mt-2500a/distfeeds.conf"
mt2500a_opkg="https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-2500a/distfeeds.conf"
wget -O /etc/opkg/distfeeds.conf ${mt2500a_opkg}
;;
*6000*)
echo "Router name contains '6000'."
mt6000_opkg="https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/mt-6000/distfeeds.conf"
wget -O /etc/opkg/distfeeds.conf ${mt6000_opkg}
update_opkg_config
;;
*)
echo "Router name does not contain '3000' 6000 or '2500'."
;;
esac
echo "Tips: 重启路由器后才能完全生效"
}
do_luci_app_adguardhome() {
setup_software_source 0
opkg remove gl-sdk4-ui-adguardhome
opkg remove gl-sdk4-adguardhome
opkg install adguardhome
echo "请访问 http://192.168.8.1:3000 初始化设置adguardhome "
update_opkg_config() {
kernel_version=$(uname -r)
echo "MT-6000 kernel version: $kernel_version"
case $kernel_version in
5.4*)
mt6000_opkg="https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-6000/distfeeds-5.4.conf"
wget -O /etc/opkg/distfeeds.conf ${mt6000_opkg}
# 更换5.4.238 内核之后 缺少的依赖
mkdir -p /tmp/mt6000
wget -O /tmp/mt6000/script-utils.ipk "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-6000/script-utils.ipk"
wget -O /tmp/mt6000/mdadm.ipk "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-6000/mdadm.ipk"
wget -O /tmp/mt6000/lsblk.ipk "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-6000/lsblk.ipk"
opkg update
if [ -f "/tmp/mt6000/lsblk.ipk" ]; then
# 先卸载之前安装过的lsblk,确保使用的是正确的lsblk
opkg remove lsblk
fi
opkg install /tmp/mt6000/*.ipk
;;
5.15*)
mt6000_opkg="https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-6000/distfeeds.conf"
wget -O /etc/opkg/distfeeds.conf ${mt6000_opkg}
;;
*)
echo "Unsupported kernel version: $kernel_version"
return 1
;;
esac
}
do_luci_app_wireguard() {
setup_software_source 0
opkg install luci-app-wireguard
opkg install luci-i18n-wireguard-zh-cn
echo "请访问 http://192.168.8.1/cgi-bin/luci/admin/status/wireguard 查看状态 "
echo "请访问 http://"$(uci get network.lan.ipaddr)"/cgi-bin/luci/admin/status/wireguard 查看状态 "
echo "也可以去接口中 查看是否增加了新的wireguard 协议的选项 "
}
update_luci_app_quickstart() {
setup_software_source 1
opkg install luci-app-quickstart
setup_software_source 0
echo "首页样式已经更新,请强制刷新网页,检查是否为中文字体"
if [ -f "/bin/is-opkg" ]; then
# 如果 /bin/is-opkg 存在,则执行 is-opkg update
is-opkg update
is-opkg install luci-i18n-quickstart-zh-cn --force-depends >/dev/null 2>&1
opkg install iptables-mod-tproxy
opkg install iptables-mod-socket
opkg install iptables-mod-iprange
hide_homepage_format_button
yellow "恭喜您!现在你的路由器已经变成iStoreOS风格啦!"
green "现在您可以访问8080端口 查看是否生效 http://192.168.8.1:8080"
green "更多up主项目和动态 请务必收藏我的导航站 https://tvhelper.cpolar.top "
green "赞助本项目作者 https://wkdaily.cpolar.top/01 "
addr_hostname=$(uci get system.@system[0].hostname)
else
red "请先执行第一项 一键iStoreOS风格化"
fi
}
# 安装体积非常小的文件传输软件 默认上传位置/tmp/upload/
do_install_filetransfer() {
mkdir -p /tmp/luci-app-filetransfer/
cd /tmp/luci-app-filetransfer/
wget -O luci-app-filetransfer_all.ipk "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/luci-app-filetransfer/luci-app-filetransfer_all.ipk"
wget -O luci-lib-fs_1.0-14_all.ipk "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/luci-app-filetransfer/luci-lib-fs_1.0-14_all.ipk"
opkg install *.ipk --force-depends
}
do_install_depends_ipk() {
wget -O "/tmp/luci-lua-runtime_all.ipk" "https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/theme/luci-lua-runtime_all.ipk"
wget -O "/tmp/libopenssl3.ipk" "https://raw.githubusercontent.com/wukongdaily/gl-inet-onescript/master/theme/libopenssl3.ipk"
wget -O "/tmp/luci-lua-runtime_all.ipk" "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/theme/luci-lua-runtime_all.ipk"
wget -O "/tmp/libopenssl3.ipk" "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/theme/libopenssl3.ipk"
opkg install "/tmp/luci-lua-runtime_all.ipk"
opkg install "/tmp/libopenssl3.ipk"
}
@ -337,8 +375,15 @@ do_install_argon_skin() {
echo "正在尝试安装argon主题......."
#下载和安装argon的依赖
do_install_depends_ipk
setup_software_source 1
opkg install luci-app-argon-config
# bug fix 由于2.3.1 最新版的luci-argon-theme 登录按钮没有中文匹配,而2.3版本字体不对。
# 所以这里安装上一个版本2.2.9,考虑到主题皮肤并不需要长期更新,因此固定版本没问题
opkg update
opkg install luci-lib-ipkg
wget -O "/tmp/luci-theme-argon.ipk" "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/theme/luci-theme-argon-master_2.2.9.4_all.ipk"
wget -O "/tmp/luci-app-argon-config.ipk" "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/theme/luci-app-argon-config_0.9_all.ipk"
wget -O "/tmp/luci-i18n-argon-config-zh-cn.ipk" "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/theme/luci-i18n-argon-config-zh-cn.ipk"
cd /tmp/
opkg install luci-theme-argon.ipk luci-app-argon-config.ipk luci-i18n-argon-config-zh-cn.ipk
# 检查上一个命令的返回值
if [ $? -eq 0 ]; then
echo "argon主题 安装成功"
@ -350,7 +395,6 @@ do_install_argon_skin() {
else
echo "argon主题 安装失败! 建议再执行一次!再给我一个机会!事不过三!"
fi
setup_software_source 0
}
#单独安装文件管理器
@ -361,6 +405,120 @@ do_install_filemanager() {
is-opkg install 'app-meta-linkease'
echo "重新登录web页面,然后您可以访问: http://192.168.8.1/cgi-bin/luci/admin/services/linkease/file/?path=/root"
}
#更新脚本
update_myself() {
wget -O gl-inet.sh "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/gl-inet.sh" && chmod +x gl-inet.sh
echo "脚本已更新并保存在当前目录 gl-inet.sh,现在将执行新脚本。"
./gl-inet.sh
exit 0
}
#根据release地址和命名前缀获取apk地址
get_docker_compose_url() {
if [ $# -eq 0 ]; then
echo "需要提供GitHub releases页面的URL作为参数。"
return 1
fi
local releases_url=$1
# 使用curl获取重定向的URL
latest_url=$(curl -Ls -o /dev/null -w "%{url_effective}" "$releases_url")
# 使用sed从URL中提取tag值,并保留前导字符'v'
tag=$(echo $latest_url | sed 's|.*/v|v|')
# 检查是否成功获取到tag
if [ -z "$tag" ]; then
echo "未找到最新的release tag。"
return 1
fi
# 拼接docker-compose下载链接
local repo_path=$(echo "$releases_url" | sed -n 's|https://github.com/\(.*\)/releases/latest|\1|p')
docker_compose_download_url="https://github.com/${repo_path}/releases/download/${tag}/docker-compose-linux-aarch64"
echo "$docker_compose_download_url"
}
# 下载并安装Docker Compose
do_install_docker_compose() {
# https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-linux-aarch64
# 检查/usr/bin/docker是否存在并且可执行
if [ -f "/usr/bin/docker" ] && [ -x "/usr/bin/docker" ]; then
echo "Docker is installed and has execute permissions."
else
red "警告 您还没有安装Docker"
exit 1
fi
if [[ "$gl_name" == *3000* ]]; then
red "警告 docker-compose 组件的大小将近60MB,请谨慎安装"
yellow "确定要继续安装吗(y|n)"
read -r answer
if [ "$answer" = "y" ] || [ -z "$answer" ]; then
green "正在获取最新版docker-compose下载地址"
else
yellow "已退出docker-compose安装流程"
exit 1
fi
fi
local github_releases_url="https://github.com/docker/compose/releases/latest"
local docker_compose_url=$(get_docker_compose_url "$github_releases_url")
echo "最新版docker-compose 地址:$docker_compose_url"
wget -O /usr/bin/docker-compose $docker_compose_url
if [ $? -eq 0 ]; then
green "docker-compose下载并安装成功,你可以使用啦"
chmod +x /usr/bin/docker-compose
else
red "安装失败,请检查网络连接.或者手动下载到 /usr/bin/docker-compose 记得赋予执行权限"
yellow "刚才使用的地址是:$docker_compose_url"
exit 1
fi
}
#mt3000更换分区
mt3000_overlay_changed() {
wget -O mt3000.sh "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/mt-3000/mt3000.sh" && chmod +x mt3000.sh
sh mt3000.sh
}
# 防止误操作 隐藏首页的格式化按钮
hide_homepage_format_button() {
TARGET="/www/luci-static/quickstart/style.css"
MARKER="/* hide quickstart disk button */"
# 如果没有追加过,就添加
if ! grep -q "$MARKER" "$TARGET"; then
cat <<EOF >>"$TARGET"
$MARKER
.value-data button {
display: none !important;
}
EOF
echo "✅ 格式化按钮已隐藏"
else
echo "⚠️ 无需重复操作"
fi
}
# 启用adguardhome
toggle_adguardhome() {
status=$(uci get adguardhome.config.enabled)
if [ "$status" -eq 1 ]; then
echo "Disabling AdGuardHome..."
uci set adguardhome.config.enabled='0' >/dev/null 2>&1
uci commit adguardhome >/dev/null 2>&1
/etc/init.d/adguardhome disable >/dev/null 2>&1
/etc/init.d/adguardhome stop >/dev/null 2>&1
green "AdGuardHome 已关闭"
else
echo "Enabling AdGuardHome..."
uci set adguardhome.config.enabled='1' >/dev/null 2>&1
uci commit adguardhome >/dev/null 2>&1
/etc/init.d/adguardhome enable >/dev/null 2>&1
/etc/init.d/adguardhome start >/dev/null 2>&1
green "AdGuardHome 已开启 访问 http://192.168.8.1:3000"
fi
}
while true; do
clear
@ -373,25 +531,29 @@ while true; do
echo "* 当前的路由器型号: "$gl_name | sed 's/ like iStoreOS//'
echo
echo "*******支持的机型列表***************************************************"
green "*******GL-iNet MT-2500A"
green "*******GL-iNet MT-3000 "
green "*******GL-iNet MT-6000 "
echo "******************下次调用 直接输入快捷键 g *****************************"
echo
echo "*******GL-iNet MT-2500A"
echo "*******GL-iNet MT-3000 "
echo "*******GL-iNet MT-6000 "
echo "**********************************************************************"
echo
echo " 1. $result"
light_magenta " 1. $result"
echo
echo " 2. 设置自定义软件源"
echo " 3. 删除自定义软件源"
echo
echo " 4. 设置风扇开始工作的温度(仅限MT3000)"
echo " 5. (慎用)恢复原厂OPKG配置软件包(需要网络环境支持)"
echo " 5. 恢复原厂OPKG配置软件包"
echo
echo " 6. 安装GL原厂Adguardhome(10MB)"
echo " 6. 启用/关闭原厂adguardhome"
echo " 7. 安装luci-app-wireguard"
echo " 8. 更新luci-app-quickstart"
echo " 9. 安装Argon紫色主题"
echo "10. 安装文件管理器"
light_magenta "11. 安装Docker"
light_magenta "12. 安装docker-compose"
light_magenta "13. 更新脚本"
cyan "14. MT3000一键更换分区"
light_magenta "15. 隐藏首页格式化按钮"
echo
echo " Q. 退出本程序"
echo
@ -404,14 +566,16 @@ while true; do
# 设置风扇工作温度
setup_cpu_fans
fi
# 解决首页“已联网”的UI问题
recovery_opkg_settings
#先安装istore商店
do_istore
#基础必备设置
setup_base_init
#安装iStore风格
install_istore_os_style
#再次更新 防止出现汉化不完整
#安装iStore首页风格
update_luci_app_quickstart
#基础必备设置
setup_base_init
;;
2)
add_custom_feed
@ -420,13 +584,21 @@ while true; do
remove_custom_feed
;;
4)
set_glfan_temp
case "$gl_name" in
*3000*)
set_glfan_temp
;;
*)
echo "* 当前的路由器型号: "$gl_name | sed 's/ like iStoreOS//'
echo "并非MT3000 它没有风扇 无需设置"
;;
esac
;;
5)
recovery_opkg_settings
;;
6)
do_luci_app_adguardhome
toggle_adguardhome
;;
7)
do_luci_app_wireguard
@ -440,9 +612,28 @@ while true; do
10)
do_install_filemanager
;;
h | H)
rollback_old_version
exit 0
11)
yellow "注意!插入U盘之前请确认U盘数据已备份"
red "确定要继续吗(y|n)"
read -r answer
if [ "$answer" = "y" ] || [ -z "$answer" ]; then
wget -q -O do_docker.sh "https://cafe.cpolar.top/wkdaily/gl-inet-onescript/raw/branch/master/docker/do_docker.sh" && chmod +x do_docker.sh
./do_docker.sh
else
yellow "已退出Docker安装流程"
fi
;;
12)
do_install_docker_compose
;;
13)
update_myself
;;
14)
mt3000_overlay_changed
;;
15)
hide_homepage_format_button
;;
q | Q)
echo "退出"

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,4 @@
# mt-2500a /etc/opkg/distfeeds.conf
src/gz glinet_kmod https://fw.gl-inet.cn/releases/v21.02.3/kmod-4.2.1/aarch64_cortex-a53/mediatek/mt7981
src/gz glinet_base https://fw.gl-inet.cn/releases/v21.02.3/kmod-4.2.1/aarch64_cortex-a53/mediatek/mt7981
src/gz glinet_gli_pub https://fw.gl-inet.cn/releases/v21.02.3/packages-4.0/aarch64_cortex-a53/glinet
src/gz glinet_gli_packages https://fw.gl-inet.cn/releases/v21.02.3/packages-4.0/aarch64_cortex-a53/packages

View File

@ -1,4 +1,4 @@
# mt-3000 /etc/opkg/distfeeds.conf
src/gz glinet_core https://fw.gl-inet.cn/releases/v21.02.3/kmod-4.2.1/aarch64_cortex-a53/mediatek/mt7981
src/gz glinet_base https://fw.gl-inet.cn/releases/v21.02.3/kmod-4.2.1/aarch64_cortex-a53/mediatek/mt7981
src/gz glinet_gli_pub https://fw.gl-inet.cn/releases/v21.02.3/packages-4.0/aarch64_cortex-a53/glinet
src/gz glinet_gli_packages https://fw.gl-inet.cn/releases/v21.02.3/packages-4.0/aarch64_cortex-a53/packages

254
mt-3000/mt3000.sh Normal file
View File

@ -0,0 +1,254 @@
#!/bin/sh
# 定义颜色输出函数
red() { echo -e "\033[31m\033[01m$1\033[0m"; }
green() { echo -e "\033[32m\033[01m$1\033[0m"; }
greeninfo() { echo -e "\033[32m\033[01m[INFO] $1\033[0m"; }
blueinfo() { echo -e "\033[32m\033[01m$1\033[0m"; }
yellow() { echo -e "\033[33m\033[01m$1\033[0m"; }
blue() { echo -e "\033[34m\033[01m$1\033[0m"; }
light_magenta() { echo -e "\033[95m\033[01m$1\033[0m"; }
light_yellow() { echo -e "\033[93m\033[01m$1\033[0m"; }
purple() { echo -e "\033[38;5;141m$1\033[0m"; }
cyan() { echo -e "\033[38;2;0;255;255m$1\033[0m"; }
install_depends_apps() {
cyan "正在安装必备工具...."
opkg update >/dev/null 2>&1
for pkg in lsblk fdisk; do
if opkg list-installed | grep -qw "$pkg"; then
cyan "$pkg 已安装。"
else
if opkg install "$pkg" >/dev/null 2>&1; then
green "$pkg 安装成功。"
else
red "$pkg 安装失败。"
exit 1
fi
fi
done
}
# 卸载USB设备
unmount_usb_device() {
for mount in $(mount | grep "$1" | awk '{print $3}'); do
yellow "正在尝试卸载U盘挂载点$mount"
umount $mount || {
red "警告:无法卸载挂载点 $mount。可能有文件正在被访问或权限不足。"
exit 1
}
blueinfo "U盘挂载点 $mount 卸载成功。"
done
}
create_and_format_partitions() {
local device=$1
# 使用fdisk -l获取设备的总容量以字节为单位并转换为GB
local total_bytes=$(fdisk -l $device | grep "Disk $device:" | awk '{print $5}')
local total_gb=$(echo "$total_bytes" | awk '{print int($1/(1024*1024*1024))}')
if [ -n "$CUSTOM_OPKG_SIZE" ]; then
part1_gb=$CUSTOM_OPKG_SIZE
yellow "U盘总容量约为 $total_gb GB,您设置的自定义软件包大小为 ${part1_gb}GB。"
else
# 计算10%的大小以GB为单位
part1_gb=$((total_gb / 10))
yellow "U盘总容量约为 $total_gb GB,第一分区大小设置为U盘容量的10% 即 ${part1_gb}GB。"
fi
green "计划将第一分区分配给软件包 其大小为 ${part1_gb}GB"
cyan "没错~你没有看错,让我们任性的告别 容 量 焦 虑!"
# 创建分区并分配空间
{
echo g # 创建一个新的空DOS分区表
echo n # 添加一个新分区
echo p # 主分区
echo 1 # 分区号1
echo # 第一个可用扇区(默认)
echo +${part1_gb}G # 为第一个分区分配计算出的GB数
echo n # 添加第二个新分区
echo p # 主分区
echo 2 # 分区号2
echo # 第一个可用扇区(默认,自动)
echo # 最后一个扇区(默认,使用剩余空间)
echo w # 写入并退出
} | fdisk $device >/dev/null 2>&1
# 给系统一点时间来识别新分区
sleep 5
# 格式化第一个分区为EXT4
local new_partition1="${device}1"
cyan "正在将 $new_partition1 格式化为EXT4文件系统..."
mkfs.ext4 -F $new_partition1 >/dev/null 2>&1
cyan "$new_partition1 已成功格式化为EXT4文件系统。"
green "第2分区 ${device}2 暂不格式化,未来您可分配给docker使用"
}
# 换区到U盘
change_overlay_usb() {
install_depends_apps
blueinfo "现在开始查找USB设备分区 请稍后......"
local USB_PARTITION=$(lsblk -dn -o NAME,TRAN | awk '$2=="usb" {print "/dev/"$1; exit}')
if [ -z "$USB_PARTITION" ]; then
red "未找到USB磁盘。"
exit 1
fi
yellow "找到USB磁盘 $USB_PARTITION"
# 清零磁盘开始部分以清除分区表和文件系统签名
dd if=/dev/zero of=$USB_PARTITION bs=1M count=10
sync
# 卸载所有与该磁盘相关的挂载点
unmount_usb_device "$USB_PARTITION"
red "正在将U盘${USB_PARTITION}分为2个区 ..."
create_and_format_partitions "$USB_PARTITION"
# U盘分区的挂载点
MOUNT_POINT="/mnt/usb_overlay"
# 临时目录用于复制数据
TMP_DIR="/tmp/overlay_backup"
# 创建挂载点目录
mkdir -p $MOUNT_POINT
# 挂载U盘分区
cyan "重新挂载第一分区 ${USB_PARTITION}1 到 $MOUNT_POINT"
mount ${USB_PARTITION}1 $MOUNT_POINT >/dev/null 2>&1
# 创建临时目录用于备份overlay数据
mkdir -p $TMP_DIR
# 复制当前overlay到临时目录
cp -a /overlay/. $TMP_DIR
# 将临时目录的数据复制到U盘
blueinfo "正在拷贝 当前系统文件到U盘"
cp -a $TMP_DIR/. $MOUNT_POINT
# 更新fstab配置以便在启动时自动挂载U盘为overlay
blueinfo "正在更新启动时的配置文件"
uci set fstab.overlay=mount
uci set fstab.overlay.uuid="$(blkid -o value -s UUID ${USB_PARTITION}1)"
uci set fstab.overlay.target="/overlay"
uci commit fstab
# 清理临时目录
rm -rf $TMP_DIR
cp /etc/config/fstab $MOUNT_POINT/fstab.bak
cyan "overlay更换分区完成 重启验证是否成功."
red "是否立即重启?(y/n)"
read -r answer
if [ "$answer" = "y" ] || [ -z "$answer" ]; then
red "正在重启..."
reboot
else
yellow "您选择了不重启"
fi
}
check_overlay_size() {
# 使用df命令获取/overlay分区的总大小以1K块为单位
OVERLAY_SIZE=$(df /overlay | awk '/\/overlay/{print $2}')
# 将1GB转换为1K块单位即1GB = 1*1024*1024 1K块
ONE_GB_IN_1K_BLOCKS=$((1024 * 1024))
# 比较/overlay分区的大小是否大于1GB
if [ "$OVERLAY_SIZE" -gt "$ONE_GB_IN_1K_BLOCKS" ]; then
yellow "检测到您已经换区到U盘啦,可以继续"
else
echo "您还没有换区到U盘,请先执行选项1."
exit 1
fi
}
# 安装 Docker 和 dockerd
install_docker() {
check_overlay_size
green "正在更新 OPKG 软件包..."
opkg update >/dev/null 2>&1
cyan "正在安装 Docker 及相关服务...请耐心等待一会...大约需要1-2分钟\n"
opkg install luci-app-dockerman >/dev/null 2>&1
opkg install luci-i18n-dockerman-zh-cn >/dev/null 2>&1
opkg install dockerd --force-depends >/dev/null 2>&1
cyan "Docker 运行环境部署完成 重启后生效\n"
red "正在重启..."
reboot
}
# 重新绑定
rebind_usb_overlay() {
cyan "正在重新绑定U盘设备...."
if opkg list-installed | grep -qw "lsblk"; then
echo
else
opkg update >/dev/null 2>&1
if opkg install "lsblk" >/dev/null 2>&1; then
echo
else
red "$pkg 安装失败。"
exit 1
fi
fi
local USB_DEVICE=$(lsblk -dn -o NAME,RM,TYPE | awk '$2=="1" && $3=="disk" {print "/dev/"$1; exit}')
if [ -z "$USB_DEVICE" ]; then
red "未找到USB磁盘。"
exit 1
fi
uci set fstab.overlay=mount
uci set fstab.overlay.uuid="$(blkid -o value -s UUID ${USB_DEVICE}1)"
uci set fstab.overlay.target="/overlay"
uci commit fstab
green "重新绑定成功! 重启后生效"
red "正在重启..."
reboot
}
#自定义软件包的大小
#默认为U盘容量的10%
custom_package_size() {
while :; do
echo "请输入想分配的软件包的大小(数字,单位:GB):"
read size
# 检查输入是否为数字
if [[ $size =~ ^[0-9]+$ ]]; then
CUSTOM_OPKG_SIZE=$size
yellow "已设置软件包大小为:$CUSTOM_OPKG_SIZE GB"
green "接下来,您可以执行第一项啦"
break # 跳出循环
else
red "错误: 请输入一个有效的数字。"
fi
done
}
while true; do
clear
echo "***********************************************************************"
green " MT-3000 软件包更换分区助手 "
echo "**********************************************************************"
echo
cyan " 1. MT-3000 一键更换overlay分区到U盘"
cyan " 2. MT-3000 安装Docker"
cyan " 3. 自定义设置软件包大小(GB)"
light_yellow " 4. 重新绑定U盘"
echo
echo " Q. 退出本程序"
echo
read -p "请选择一个选项: " choice
echo
case $choice in
1)
change_overlay_usb
;;
2)
install_docker
;;
3)
custom_package_size
;;
4)
rebind_usb_overlay
;;
q | Q)
echo "退出"
exit 0
;;
*)
echo "无效选项,请重新选择。"
;;
esac
read -p "按 Enter 键继续..."
done

View File

@ -0,0 +1,4 @@
# mt-6000-5.4.238 backup /etc/opkg/distfeeds.conf
src/gz glinet_base https://fw.gl-inet.cn/releases/mt798x/kmod-4.5.7/aarch64_cortex-a53/mediatek/mt7986
src/gz glinet_gli_pub https://fw.gl-inet.cn/releases/mt798x/packages-4.5/aarch64_cortex-a53/glinet
src/gz glinet_gli_packages https://fw.gl-inet.cn/releases/mt798x/packages-4.5/aarch64_cortex-a53/packages

View File

@ -1,4 +1,4 @@
# mt-6000 backup /etc/opkg/distfeeds.conf
src/gz glinet_core https://fw.gl-inet.cn/releases/v23.05.0/kmod-4.5/aarch64_cortex-a53/mediatek/mt7986
src/gz glinet_base https://fw.gl-inet.cn/releases/v23.05.0/kmod-4.5/aarch64_cortex-a53/mediatek/mt7986
src/gz glinet_gli_pub https://fw.gl-inet.cn/releases/v23.05.0/packages-4.5/aarch64_cortex-a53/glinet
src/gz glinet_packages https://fw.gl-inet.cn/releases/v23.05.0/packages-4.5/aarch64_cortex-a53/packages

BIN
mt-6000/lsblk.ipk Normal file

Binary file not shown.

BIN
mt-6000/mdadm.ipk Normal file

Binary file not shown.

BIN
mt-6000/script-utils.ipk Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.