Skip to content

用内核原生 selector 持久化替代 web_save (cache.db cp 同步)#1298

Open
abcfy2 wants to merge 1 commit into
juewuy:devfrom
abcfy2:feat/native-selector-persistence
Open

用内核原生 selector 持久化替代 web_save (cache.db cp 同步)#1298
abcfy2 wants to merge 1 commit into
juewuy:devfrom
abcfy2:feat/native-selector-persistence

Conversation

@abcfy2

@abcfy2 abcfy2 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

close #1296

启用内核原生选择持久化,替代 web_save 的 API 拉取 + 回推:

  • mihomo: profile.store-selected
  • singbox: cache_file

cache.db 跑 tmpfs(bbolt 需 mmap,持久分区 jffs2/ubifs 不支持 MAP_SHARED):

  • singbox cache_file.path 直指 $TMPDIR/cache.db
  • mihomo 路径不可配(-d $BINDIR),bfstart 启动前软链 $BINDIR/cache.db → tmpfs;小内存模式($BINDIR=$TMPDIR)守卫跳过防自指

备份/恢复用 cache.db cp 同步,保留 web_save/web_restore 函数名与 hook(向后兼容旧 crontab):stop → web_save 备份,bfstartweb_restore 启动前恢复,task 106 每10分钟定时备份。

选择持久化交给内核自己存(bbolt),不再依赖外部脚本拉 API 解析回推——根除 web_save 解析比对 bug(#1264 / #1276 / #998 配置丢失的根因)。

已知问题

configs/web_save 被废弃,更新之后会造成上一次配置丢失,未来改为内核自己的配置保存方案。所以更新之后第一次需要重新保存一次面板配置

@abcfy2 abcfy2 changed the title feat: 用内核原生 selector 持久化替代 web_save (cache.db cp 同步) 用内核原生 selector 持久化替代 web_save (cache.db cp 同步) Jun 29, 2026
启用 mihomo profile.store-selected 与 singbox cache_file, cache.db 运行于
tmpfs(bbolt 依赖 mmap, 持久分区 jffs2/ubifs 不支持):
- mihomo cache.db 路径不可配(-d $BINDIR), bfstart 启动前软链
  $BINDIR/cache.db 到 $TMPDIR; 小内存模式($BINDIR=$TMPDIR)守卫跳过防自指
- singbox 直接 cache_file.path 指向 $TMPDIR/cache.db

web_save/web_restore 保留原函数名与 hook 位置(向后兼容旧 crontab), 内部改为
cache.db cp 同步:
- start.sh stop 调 web_save 备份(kill 前)
- bfstart 调 web_restore 启动前恢复(仅 tmpfs 无时恢复, 防覆盖更新)
- task 106 web_save_auto 每10分钟定时备份
- 小内存模式 web_save 守卫跳过(与软链守卫一致)

解决面板配置丢失类 issue juewuy#1264 juewuy#1276 juewuy#998close juewuy#1296
@abcfy2 abcfy2 force-pushed the feat/native-selector-persistence branch from b24c926 to d33eda9 Compare June 29, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 考虑使用内核原生的配置记录功能替代 web_save

1 participant