找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
glinet
查看: 8798|回复: 38

[小米7000] 小米官方固件添加自启动脚本方法-解决docker无法挂载特殊路径问题

  [复制链接]
发表于 2024-1-21 10:52 | 显示全部楼层 |阅读模式
本帖最后由 zjlllli 于 2024-3-14 22:54 编辑

原本以为在/etc/init.d/下创建自定义脚本或者编辑/etc/rc.local就能够自定义启动脚本,没想到重启后文件都复原了。
在观摩了大佬的auto_ssh.sh脚本后,才明白这系统可以通过防火墙添命令添加自启动脚本。

举个例子:开机自启动docker命令,我们先创建自启动脚本

  1. vim /data/startup_script.sh
复制代码


往脚本中添加内容
  1. #!/bin/sh
  2. install() {
  3.         # Add script to system autostart docker
  4.         uci set firewall.startup_script=include
  5.         uci set firewall.startup_script.type='script'
  6.         uci set firewall.startup_script.path="/data/startup_script.sh"
  7.         uci set firewall.startup_script.enabled='1'
  8.         uci commit firewall
  9.         echo -e "\033[32m  startup_script complete. \033[0m"
  10. }
  11. uninstall() {
  12.     # Remove scripts from system autostart
  13.     uci delete firewall.startup_script
  14.     uci commit firewall
  15.     echo -e "\033[33m startup_script  has been removed. \033[0m"
  16. }

  17. startup_script() {
  18.         # Put your custom script here.
  19.         echo "Starting custom scripts..."
  20. }

  21. main() {
  22.     [ -z "$1" ] && startup_script && return
  23.     case "$1" in
  24.     install)
  25.         install
  26.         ;;
  27.     uninstall)
  28.         uninstall
  29.         ;;
  30.     *)
  31.         echo -e "\033[31m Unknown parameter: $1 \033[0m"
  32.         return 1
  33.         ;;
  34.     esac
  35. }


  36. main "$@"
复制代码



接着给予脚本执行权限

  1. cd /data
  2. chmod +x startup_script.sh
复制代码



执行脚本安装命令,这将会设置防火墙指定启动脚本
  1. ./startup_script.sh install
复制代码
执行完这句install命令,你会发现/etc/config/firewall最后会添加这样一段内容
  1. config include 'startup_script'
  2.         option type 'script'
  3.         option path '/data/startup_script.sh'
  4.         option enabled '1'
复制代码
事实上,这和你手动编辑/etc/config/firewall内容效果是一样的,只不过脚本调用了系统的api设置防火墙方法。同理,你调用了uninstall 命令后,这段内容就会被删掉。



如果不传入参数直接执行./startup_scrip.sh,就会执行脚本里面的startup_script函数。




创建好这个通用自启动脚本后,你可以在startup_script里面添加任意你想要的启动命令。
例如跳过docker的挂载目录检测
  1. startup_script() {
  2.         sed -i '/valid_mountpath() {/a return 0' /etc/init.d/mi_docker
  3.         /etc/init.d/mi_docker start
  4. }
复制代码



解释一下函数的含义,这一句是修改了mi_docker的valid_mountpath()函数,往开头添加一行return 0,表示跳过检测。为什么要跳过检测?因为这个valid_mountpath函数一旦检测到容器中挂载了非/mnt/usb-**下的目录就会报错,但是有些应用是需要挂载系统的文件的,比如/etc/resolv.conf,如果你用命令行创建了docker容器,挂载了非usb下的目录,那么路由器后台的docker界面就会报错 "不可用,检测到已安装的Docker文件缺失,请卸载Docker后重新安装"。

  1. sed -i '/valid_mountpath() {/a return 0' /etc/init.d/mi_docker
复制代码

下面这句表示启动调用mi_docker脚本启动docker,这个脚本是官方固件的。

  1. /etc/init.d/mi_docker start
复制代码



需要注意的是,防火墙脚本的执行顺序可能优于/etc/init.d/下的的脚本,因此针对某些特殊情况可以延迟执行,例如,在开机的时候修改samba配置并重启samba服务,可能不会马上生效


  1. sed -i 's/|INTERFACES|/&eth0/g' /etc/samba/smb.conf.template
  2. /etc/init.d/samba restart
复制代码



改成非阻塞式延迟20秒执行,配置就生效了

  1. sed -i 's/|INTERFACES|/&eth0/g' /etc/samba/smb.conf.template
  2. (sleep 20; /etc/init.d/samba restart) &
复制代码








评分

参与人数 3恩山币 +3 收起 理由
psyonly + 1 你好,久仰卧龙大名,在下凤雏! ...
Ragexe + 1 你好,久仰卧龙大名,在下凤雏!.
yuan0081 + 1 你好,久仰卧龙大名,在下凤雏!.

查看全部评分

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2024-1-22 11:36 | 显示全部楼层
感谢分享,最近用be10000 也是从里插入启动脚本
小米太奇葩了 arp绑定 wol都没有 都要自己搞
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-1-25 17:06 | 显示全部楼层
感谢大佬分享,十分好用
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-1-29 12:10 | 显示全部楼层
感谢大佬分享。刚刚在AX10000上安装docker 青龙,发现这个问题了。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-1-30 07:51 | 显示全部楼层
有不会操作的小白,可以问我。纯小白硬趟

点评

来个教程吧,看懵逼了,一步一步怎么操作  详情 回复 发表于 2024-2-7 15:55
来个硬趟的版本吧,纯纯小白  详情 回复 发表于 2024-2-4 22:43
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-1-30 09:47 | 显示全部楼层
太感谢了, 救了老命, 动不动就重装docker
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-2-4 22:43 | 显示全部楼层
wenbin1717 发表于 2024-1-30 07:51
有不会操作的小白,可以问我。纯小白硬趟

来个硬趟的版本吧,纯纯小白

点评

https://www.right.com.cn/forum/thread-8347091-1-1.html  详情 回复 发表于 2024-2-14 03:25
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-2-7 15:55 | 显示全部楼层
wenbin1717 发表于 2024-1-30 07:51
有不会操作的小白,可以问我。纯小白硬趟

来个教程吧,看懵逼了,一步一步怎么操作

点评

https://www.right.com.cn/forum/thread-8347091-1-1.html  详情 回复 发表于 2024-2-14 03:25
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-2-14 03:25 | 显示全部楼层
BiuBiuBiuLL 发表于 2024-2-7 15:55
来个教程吧,看懵逼了,一步一步怎么操作

https://www.right.com.cn/forum/thread-8347091-1-1.html
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-2-14 03:25 | 显示全部楼层
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-2-16 14:52 | 显示全部楼层
我想装个NPC,但我官方的注册命令在路由器上无法没注册,但可以直接运行。能否告知一下,我的这种情况函数应该怎样写,主要不会写函数。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

把启动命令放进/data/startup_script.sh中startup_script函数的中括号里面,后面加上一个&表示后台运行避免阻塞。 cd /data/npc/ && ./npc & 或者 /data/npc/npc &  详情 回复 发表于 2024-2-20 20:12
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 20:12 | 显示全部楼层
slb116763814 发表于 2024-2-16 14:52
我想装个NPC,但我官方的注册命令在路由器上无法没注册,但可以直接运行。能否告知一下,我的这种情况函数 ...

把启动命令放进/data/startup_script.sh中startup_script函数里面,后面加上一个&表示后台运行避免阻塞。

cd /data/npc/ && ./npc &

或者

/data/npc/npc &

点评

想请教下,我给红米ax6000安装了集客ac插件,能正常使用,目前的问题是自启动。想请您帮忙看看。 集客文件放在/data/下 ssh下安装命令是 cd /data/ /data/ac_linux_arm64_V1.0 -p 60650 -f ./upload/ -dbpat  详情 回复 发表于 2024-8-30 22:41
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-3-14 20:30 | 显示全部楼层
执行完前二步,第三步给予权限,显示No such file or directory,怎么回事?

点评

chmod +x /data/startup_script.sh  详情 回复 发表于 2024-3-14 22:51
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-14 22:51 | 显示全部楼层
republic 发表于 2024-3-14 20:30
执行完前二步,第三步给予权限,显示No such file or directory,怎么回事?

chmod +x /data/startup_script.sh
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-3-15 00:09 | 显示全部楼层
哈哈,我看明白了,谢谢
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2025-5-30 22:16

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表