-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdb.json
More file actions
1 lines (1 loc) · 297 KB
/
db.json
File metadata and controls
1 lines (1 loc) · 297 KB
1
{"meta":{"version":1,"warehouse":"5.0.1"},"models":{"Asset":[{"_id":"node_modules/hexo-theme-fluid/source/css/gitalk.css","path":"css/gitalk.css","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/css/highlight-dark.styl","path":"css/highlight-dark.styl","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/css/highlight.styl","path":"css/highlight.styl","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/css/main.styl","path":"css/main.styl","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/img/avatar.png","path":"img/avatar.png","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/img/default.png","path":"img/default.png","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/img/fluid.png","path":"img/fluid.png","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/img/loading.gif","path":"img/loading.gif","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/img/police_beian.png","path":"img/police_beian.png","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/boot.js","path":"js/boot.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/color-schema.js","path":"js/color-schema.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/events.js","path":"js/events.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/img-lazyload.js","path":"js/img-lazyload.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/leancloud.js","path":"js/leancloud.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/local-search.js","path":"js/local-search.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/plugins.js","path":"js/plugins.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/js/utils.js","path":"js/utils.js","modified":1,"renderable":1},{"_id":"node_modules/hexo-theme-fluid/source/xml/local-search.xml","path":"xml/local-search.xml","modified":1,"renderable":1},{"_id":"source/img/webside/banner.png","path":"img/webside/banner.png","modified":1,"renderable":0},{"_id":"source/img/使用手机搭建家庭服务器实战/f0702c17f10009d27abe6b36215a0fef141432942.jpg","path":"img/使用手机搭建家庭服务器实战/f0702c17f10009d27abe6b36215a0fef141432942.jpg","modified":1,"renderable":0},{"_id":"source/img/使用手机搭建家庭服务器实战/image.png","path":"img/使用手机搭建家庭服务器实战/image.png","modified":1,"renderable":0},{"_id":"source/img/使用手机搭建家庭服务器实战/screenshot-1712288868303.png","path":"img/使用手机搭建家庭服务器实战/screenshot-1712288868303.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p991KIg.png","path":"img/如何安装Deepin/p991KIg.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p991nZ8.png","path":"img/如何安装Deepin/p991nZ8.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p991udS.png","path":"img/如何安装Deepin/p991udS.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p9SdTN6.png","path":"img/如何安装Deepin/p9SdTN6.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p9p7z7R.png","path":"img/如何安装Deepin/p9p7z7R.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p9pHNEn.png","path":"img/如何安装Deepin/p9pHNEn.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/p9pquSf.png","path":"img/如何安装Deepin/p9pquSf.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/ppHBMwQ.png","path":"img/如何安装Deepin/ppHBMwQ.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/ppHBeQf.png","path":"img/如何安装Deepin/ppHBeQf.png","modified":1,"renderable":0},{"_id":"source/img/如何安装Deepin/ppHVZJx.png","path":"img/如何安装Deepin/ppHVZJx.png","modified":1,"renderable":0},{"_id":"source/resource/旧手机重新利用指南/aria2.conf","path":"resource/旧手机重新利用指南/aria2.conf","modified":1,"renderable":0}],"Cache":[{"_id":"source/_posts/Hexo写作指南.md","hash":"ec63a9ba26c386e63dc67bfacfa09302202f0635","modified":1749606182213},{"_id":"source/_posts/BAAH在逆天环境下的运行.md","hash":"a3cd484ddf205c0c93f8b81350b0bfe09d6913e3","modified":1763203468343},{"_id":"source/_posts/XPVPer-一个专注于美观和PVP的Minecraft整合包.md","hash":"3e4d0af0126a945fc23d18f732bd07ec1bb3bd98","modified":1749606182213},{"_id":"source/_posts/hyprland下虚拟副屏的实现.md","hash":"80e581571d4eaa6b7eb3173f7e12569ba965b21a","modified":1759378200046},{"_id":"source/_posts/使用手机搭建家庭服务器实战.md","hash":"2c8db4caa883adb7e928f500978617ecd937f7c3","modified":1749606182213},{"_id":"source/_posts/如何安装Deepin.md","hash":"7ea336f6bc5cffc78dc4bd52822ce02aa1599d33","modified":1749606182213},{"_id":"source/_posts/旧手机重新利用指南.md","hash":"7d13633a99aba94fc8bb36b61148e4a829e10426","modified":1749606182213},{"_id":"source/about/index.md","hash":"dd9a0590e4df2f882f918bf5933887a4bfcdda3c","modified":1759636465223},{"_id":"source/img/如何安装Deepin/p991KIg.png","hash":"ae487f50cbc0ce40f9edf435a2535bd1647af8c6","modified":1749606182217},{"_id":"source/img/如何安装Deepin/p991nZ8.png","hash":"d6abf0ee6acc674fe47d1603b99b7736ca086c39","modified":1749606182217},{"_id":"source/img/如何安装Deepin/p991udS.png","hash":"8c34d16a9d15f6199ccad0963e97b2ee09101e56","modified":1749606182217},{"_id":"source/img/如何安装Deepin/ppHBeQf.png","hash":"5ff385c48be4b6255b6d5077861a5f8bf9fd4ed9","modified":1749606182223},{"_id":"source/resource/旧手机重新利用指南/aria2.conf","hash":"be0967a9477e7596f4bdd3f851f3cc3209b253e6","modified":1749606182223},{"_id":"source/img/使用手机搭建家庭服务器实战/image.png","hash":"9ec8daa42745b8586c00374ee8c2556d033efe1a","modified":1749606182217},{"_id":"source/img/如何安装Deepin/p9pHNEn.png","hash":"17ab2234ae5251ae220477fcf3cd492be9e8a894","modified":1749606182223},{"_id":"source/img/如何安装Deepin/p9pquSf.png","hash":"21f410b775fdc850465d2dacde7682e088708fb2","modified":1749606182223},{"_id":"source/img/如何安装Deepin/ppHBMwQ.png","hash":"0b370d52e1cdda34b41dd1fe3b7dc6f4e2ecfedf","modified":1749606182223},{"_id":"source/img/使用手机搭建家庭服务器实战/screenshot-1712288868303.png","hash":"87c5e1c9f6535868da90aa1c31896fd808dbc804","modified":1749606182217},{"_id":"source/img/如何安装Deepin/p9p7z7R.png","hash":"2fb81f76fd1f8e2e7c3bb46afa7d48a908fb194f","modified":1749606182223},{"_id":"source/img/如何安装Deepin/ppHVZJx.png","hash":"e145dda5a22a4d30605f9ccda5b7fd179577ebc2","modified":1749606182223},{"_id":"source/img/使用手机搭建家庭服务器实战/f0702c17f10009d27abe6b36215a0fef141432942.jpg","hash":"ce6d0a656182891717e341dda242108be0a57884","modified":1749606182213},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_tag/tag.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/README.md","hash":"ff9b0e1fb9dba665af2f1e4a577f8cb9e840464b","modified":1752241750902},{"_id":"node_modules/hexo-theme-fluid/LICENSE","hash":"26f9356fd6e84b5a88df6d9014378f41b65ba209","modified":1752241750565},{"_id":"node_modules/hexo-theme-fluid/package.json","hash":"c640b57695b7b6002399711f1a7708b0f6c05b84","modified":1752241750902},{"_id":"node_modules/hexo-theme-fluid/languages/de.yml","hash":"0e7d455d9e004ff15d8924b7a0c35cea25ee5b1d","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/languages/en.yml","hash":"cb11b39f44ea069652c9647179606b6cecc98d50","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/languages/eo.yml","hash":"a556251cc50a5680578c03f1efbf252b1f4ab860","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/languages/es.yml","hash":"7112594259c88c04714be152af7fd377687dad40","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/languages/ja.yml","hash":"3dd6d20f8d26585a7c154a8e59fe8d5d902f4c6a","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/languages/ru.yml","hash":"7dc78f22696649a4c68dc65a9b52d9a992fa82a0","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/languages/zh-CN.yml","hash":"2253e1bc61694b3bdc5e434ea2660d13d941b50e","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/_config.yml","hash":"759d78d97cfe364a4bcf0b5cd2d3505967674276","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/languages/zh-HK.yml","hash":"80ed400a7adaa92ea54fc7f5d534c9af795bed00","modified":1752241750949},{"_id":"node_modules/hexo-theme-fluid/layout/404.ejs","hash":"b84d575c7b7f778b4cb64e89ad3d0aed4a896820","modified":1752241750639},{"_id":"node_modules/hexo-theme-fluid/layout/about.ejs","hash":"163bee643e6a38912d3ae70923c83c48d57222e7","modified":1752241750652},{"_id":"node_modules/hexo-theme-fluid/layout/archive.ejs","hash":"7c1f44005849791feae4abaa10fae4cb983d3277","modified":1752241750705},{"_id":"node_modules/hexo-theme-fluid/layout/categories.ejs","hash":"13859726c27b6c79b5876ec174176d0f9c1ee164","modified":1752241750729},{"_id":"node_modules/hexo-theme-fluid/layout/category.ejs","hash":"f099161b738a16a32253f42085b5444f902018ed","modified":1752241750745},{"_id":"node_modules/hexo-theme-fluid/layout/layout.ejs","hash":"7e0023474128fbe4d68c467704c41f1712432415","modified":1752241750792},{"_id":"node_modules/hexo-theme-fluid/layout/index.ejs","hash":"33c3317cdcee062789de2336dd8d0cc7f86d3650","modified":1752241750792},{"_id":"node_modules/hexo-theme-fluid/layout/links.ejs","hash":"1cac32ec4579aaf7b9fa39d317497331d4c5e1dd","modified":1752241750795},{"_id":"node_modules/hexo-theme-fluid/layout/page.ejs","hash":"ed5007a3feb8f14d3d2843271bfb298eb0c56219","modified":1752241750812},{"_id":"node_modules/hexo-theme-fluid/layout/tags.ejs","hash":"1d06af34b6cf1d8a20d2eb565e309326ceba309f","modified":1752241750825},{"_id":"node_modules/hexo-theme-fluid/layout/tag.ejs","hash":"9d686364c4d16a1a9219471623af452035c5b966","modified":1752241750822},{"_id":"node_modules/hexo-theme-fluid/layout/post.ejs","hash":"9bf0d357a607a282f3b9cb04525a4df0cc2a8b76","modified":1752241750815},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/category-chains.ejs","hash":"18309584aab83bc4deb20723ebad832149dd2e24","modified":1752241750739},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/archive-list.ejs","hash":"7520fbf91f762207c2ab06b2c293235cd5b23905","modified":1752241750702},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/css.ejs","hash":"85f6e051550907681ab4ed2e268ac8f6e9ebf931","modified":1752241750762},{"_id":"node_modules/hexo-theme-fluid/languages/zh-TW.yml","hash":"596d031dff3826ae8e4ffc8931fff28977b73247","modified":1752241750952},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments.ejs","hash":"d707c47b2638c94e489bc43d4cfd098b7c58447f","modified":1752241750759},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/category-list.ejs","hash":"f8d2f1907450e61968e6d54443e9be8138196a77","modified":1752241750742},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/footer.ejs","hash":"10ccfb8eef4e16182183c9a3e175c90d5b6397d3","modified":1752241750772},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/head.ejs","hash":"7b7b1d098726e86687a15fe3d520d178577ffcae","modified":1752241750782},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/header.ejs","hash":"0d5e397d30051e5fbabe7b47cfd1f1e6a5820af1","modified":1752241750789},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/markdown-plugins.ejs","hash":"fc4bdf7de0cf1a66d0e5e4fba1b31d6f7ed49468","modified":1752241750799},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/paginator.ejs","hash":"0f38a2c238169edcb63fc46c23bfc529ff3859b7","modified":1752241750812},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/scripts.ejs","hash":"da5810785105e5075861593c7ac22c7aa9665a72","modified":1752241750815},{"_id":"node_modules/hexo-theme-fluid/scripts/events/index.js","hash":"79de5a379b28cad759a49048351c7f6b8915bd7d","modified":1752241750882},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/search.ejs","hash":"70e1c929e084ca8a2648cedabf29b372511ea2b8","modified":1752241750819},{"_id":"node_modules/hexo-theme-fluid/scripts/filters/default-injects.js","hash":"b2013ae8e189cd07ebc8a2ff48a78e153345210f","modified":1752241750865},{"_id":"node_modules/hexo-theme-fluid/scripts/filters/locals.js","hash":"58d0fec976f6b1d35e7ea03edc45414088acf05c","modified":1752241750889},{"_id":"node_modules/hexo-theme-fluid/scripts/generators/index-generator.js","hash":"9159fc22fa84a7b605dd15fe4104f01fe9c71147","modified":1752241750879},{"_id":"node_modules/hexo-theme-fluid/scripts/filters/post-filter.js","hash":"82bb06686158ebe160a631c79f156cd4fde35656","modified":1752241750895},{"_id":"node_modules/hexo-theme-fluid/scripts/generators/local-search.js","hash":"9ac5ddad06e9b0e6015ce531430018182a4bc0fa","modified":1752241750885},{"_id":"node_modules/hexo-theme-fluid/scripts/generators/pages.js","hash":"d3e75f53c59674d171309e50702954671f31f1a4","modified":1752241750895},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/date.js","hash":"9bda6382f61b40a20c24af466fe10c8366ebb74c","modified":1752241750862},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/engine.js","hash":"d3a231d106795ce99cb0bc77eb65f9ae44515933","modified":1752241750869},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/export-config.js","hash":"8e67b522c47aa250860e3fe2c733f1f958a506c0","modified":1752241750869},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/injects.js","hash":"1ad2ae6b11bd8806ee7dd6eb7140d8b54a95d613","modified":1752241750882},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/page.js","hash":"4607607445233b3029ef20ed5e91de0da0a7f9c5","modified":1752241750895},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/scope.js","hash":"d41d9d658fcb54964b388598e996747aadb85b0f","modified":1752241750899},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/import.js","hash":"ca53e8dbf7d44cfd372cfa79ac60f35a7d5b0076","modified":1752241750875},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/url.js","hash":"2a6a8288176d0e0f6ec008056bf2745a86e8943e","modified":1752241750899},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/utils.js","hash":"966689d7c5e4320008285395fbaa2751f6209be5","modified":1752241750899},{"_id":"node_modules/hexo-theme-fluid/scripts/helpers/wordcount.js","hash":"4d48c424e47ff9a17a563167ea5f480890267adf","modified":1752241750902},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/button.js","hash":"3eb43a8cdea0a64576ad6b31b4df6c2bf5698d4c","modified":1752241750842},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/checkbox.js","hash":"0857aa86db2a711ae5c77218a9e3fa686d0e87b1","modified":1752241750845},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/group-image.js","hash":"4aeebb797026f1df25646a5d69f7fde79b1bcd26","modified":1752241750872},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/label.js","hash":"f05a6d32cca79535b22907dc03edb9d3fa2d8176","modified":1752241750882},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/mermaid.js","hash":"75160561e1ef3603b6d2ad2938464ab1cb77fd38","modified":1752241750889},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/note.js","hash":"e3b456a079e5dc0032473b516c865b20f83d2c26","modified":1752241750895},{"_id":"node_modules/hexo-theme-fluid/scripts/utils/crypto.js","hash":"ae4ad8a188ef5b3fa6818b01629fc962b3de8551","modified":1752241750855},{"_id":"node_modules/hexo-theme-fluid/scripts/tags/fold.js","hash":"73e4fd12ce3e47981479391ed354b7d9d3279f70","modified":1752241750869},{"_id":"node_modules/hexo-theme-fluid/scripts/utils/resolve.js","hash":"8c4a8b62aa8608f12f1e9046231dff04859dc3e9","modified":1752241750899},{"_id":"node_modules/hexo-theme-fluid/scripts/utils/object.js","hash":"33b57e4decdc5e75c518859f168c8ba80b2c665b","modified":1752241750892},{"_id":"node_modules/hexo-theme-fluid/scripts/utils/compare-versions.js","hash":"dbbc928c914fc2bd242cd66aa0c45971aec13a5d","modified":1752241750849},{"_id":"node_modules/hexo-theme-fluid/scripts/utils/url-join.js","hash":"718aab5e7b2059a06b093ca738de420d9afa44ba","modified":1752241750899},{"_id":"node_modules/hexo-theme-fluid/source/css/highlight-dark.styl","hash":"45695ef75c31a4aa57324dd408b7e2327a337018","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/highlight.styl","hash":"a9efc52a646a9e585439c768557e3e3c9e3326dc","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/main.styl","hash":"855ae5fe229c51afa57f7645f6997a27a705d7e4","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/img/fluid.png","hash":"64b215db2cb3af98fe639e94537cb5209f959c78","modified":1752241750912},{"_id":"node_modules/hexo-theme-fluid/source/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1752241750902},{"_id":"node_modules/hexo-theme-fluid/source/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1752241750615},{"_id":"node_modules/hexo-theme-fluid/source/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1752241750915},{"_id":"node_modules/hexo-theme-fluid/source/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1752241750842},{"_id":"node_modules/hexo-theme-fluid/source/js/events.js","hash":"5891534506b959a2f559f29e122baa3eb9159d93","modified":1752241750869},{"_id":"node_modules/hexo-theme-fluid/source/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1752241750872},{"_id":"node_modules/hexo-theme-fluid/source/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1752241750839},{"_id":"node_modules/hexo-theme-fluid/source/js/color-schema.js","hash":"c5939d14065d38c86e16d1642e154dde5a23e830","modified":1752241750845},{"_id":"node_modules/hexo-theme-fluid/source/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1752241750885},{"_id":"node_modules/hexo-theme-fluid/source/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1752241750885},{"_id":"node_modules/hexo-theme-fluid/source/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1752241750895},{"_id":"node_modules/hexo-theme-fluid/source/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/changyan.ejs","hash":"c9b2d68ed3d375f1953e7007307d2a3f75ed6249","modified":1752241750752},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/cusdis.ejs","hash":"5f9dc012be27040bbe874d0c093c0d53958cc987","modified":1752241750765},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/discuss.ejs","hash":"98d065b58ce06b7d18bff3c974e96fa0f34ae03a","modified":1752241750765},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/disqus.ejs","hash":"aab4a4d24c55231a37db308ae94414319cecdd9b","modified":1752241750769},{"_id":"node_modules/hexo-theme-fluid/source/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1752241750902},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/gitalk.ejs","hash":"843bc141a4545eb20d1c92fb63c85d459b4271ec","modified":1752241750775},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/livere.ejs","hash":"2264758fed57542a7389c7aa9f00f1aefa17eb87","modified":1752241750795},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/remark42.ejs","hash":"d4e9532feeb02aed61bd15eda536b5b631454dac","modified":1752241750815},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/twikoo.ejs","hash":"d84bcb5ccd78470a60c067fc914ac0ac67ac8777","modified":1752241750825},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/giscus.ejs","hash":"95f8b866b158eff9352c381c243b332a155a5110","modified":1752241750775},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/utterances.ejs","hash":"c7ccf7f28308334a6da6f5425b141a24b5eca0e2","modified":1752241750829},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/valine.ejs","hash":"19ba937553dddd317f827d682661a1066a7b1f30","modified":1752241750832},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/comments/waline.ejs","hash":"12727da7cf3ac83443270f550be4d1c06135b52b","modified":1752241750832},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/footer/statistics.ejs","hash":"454d8dd4c39f9494ebeb03ca0746f5bc122af76a","modified":1752241750822},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/footer/beian.ejs","hash":"4fb9b5dd3f3e41a586d6af44e5069afe7c81fff2","modified":1752241750725},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/analytics.ejs","hash":"4f68c80bd1395e2f6d11e373116e54de11cb62e8","modified":1752241750672},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/header/banner.ejs","hash":"e07757b59e7b89eea213d0e595cb5932f812fd32","modified":1752241750715},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/code-widget.ejs","hash":"3a505cba37942badf62a56bbb8b605b72af330aa","modified":1752241750755},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/anchorjs.ejs","hash":"40181442d3a2b8734783a0ad7caf2d2522e3f2ab","modified":1752241750679},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/fancybox.ejs","hash":"9d1ea2a46b8c8ad8c168594d578f40764818ef13","modified":1752241750772},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/highlight.ejs","hash":"7529dd215b09d3557804333942377b9e20fa554e","modified":1752241750792},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/encrypt.ejs","hash":"0fff24cf5bf99fbe5c56c292e2eac4a89bf29db4","modified":1752241750769},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/math.ejs","hash":"dcbf9a381ee76f2f1f75fcbc22c50a502ec85023","modified":1752241750802},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/moment.ejs","hash":"4ff3fb1b60ccc95a0af3bbdbd0757fedefc088b5","modified":1752241750809},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/mermaid.ejs","hash":"03ac02762f801970d1c4e73d6ec8d4c503780e50","modified":1752241750802},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/nprogress.ejs","hash":"4c2d39ce816b8a6dcd6b53113c8695f8bd650a23","modified":1752241750809},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/plugins/typed.ejs","hash":"f345374885cd6a334f09a11f59c443b5d577c06c","modified":1752241750829},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/category-bar.ejs","hash":"8772bce97ed297e7a88523f4e939ed6436c22f87","modified":1752241750735},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/copyright.ejs","hash":"529f3069742b3d338c769ba2d836e7f3c342a09d","modified":1752241750759},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/meta-bottom.ejs","hash":"375974ec017696e294dc12469fb0ae257800dc2d","modified":1752241750805},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/sidebar-left.ejs","hash":"9992c99b3eb728ad195970e1b84d665f2c8691c4","modified":1752241750819},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/meta-top.ejs","hash":"ce6e9f578f4faa45840abddf8f46af3f4b69c177","modified":1752241750805},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/sidebar-right.ejs","hash":"d5fcc9b60e02f869a29a8c17a16a6028ecc1e6d8","modified":1752241750819},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/post/toc.ejs","hash":"635a89060fbf72eeda066fc4bd0a97462f069417","modified":1752241750825},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/hello.js","hash":"bd8376e1cf7892dc2daa58f2f443574be559fdbf","modified":1752241750872},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/compatible-configs.js","hash":"ef474d1fa5bbafc52619ced0f9dc7eaf2affb363","modified":1752241750855},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/footnote.js","hash":"c19ac8050b82c3676b0332a56099ccfcc36d9d52","modified":1752241750872},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/highlight.js","hash":"a5fe1deccb73b5f578797dbb11038efc15f63ce8","modified":1752241750872},{"_id":"node_modules/hexo-theme-fluid/layout/_partials/header/navigation.ejs","hash":"37d750428772d7c71ba36ce0c2540780d90fadea","modified":1752241750809},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/injects.js","hash":"5ae4b07204683e54b5a1b74e931702bbce2ac23e","modified":1752241750882},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/merge-configs.js","hash":"7c944c43b2ece5dd84859bd9d1fe955d13427387","modified":1752241750889},{"_id":"node_modules/hexo-theme-fluid/scripts/events/lib/lazyload.js","hash":"9ba0d4bc224e22af8a5a48d6ff13e5a0fcfee2a4","modified":1752241750882},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/pages.styl","hash":"b8e887bc7fb3b765a1f8ec9448eff8603a41984f","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_functions/base.styl","hash":"2e46f3f4e2c9fe34c1ff1c598738fc7349ae8188","modified":1752241750922},{"_id":"node_modules/hexo-theme-fluid/source/css/_mixins/base.styl","hash":"542e306ee9494e8a78e44d6d7d409605d94caeb3","modified":1752241750925},{"_id":"node_modules/hexo-theme-fluid/source/css/_variables/base.styl","hash":"4ed5f0ae105ef4c7dd92eaf652ceda176c38e502","modified":1752241750929},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_about/about.styl","hash":"97fe42516ea531fdad771489b68aa8b2a7f6ae46","modified":1752241750919},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_archive/archive.styl","hash":"c475e6681546d30350eaed11f23081ecae80c375","modified":1752241750922},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/color-schema.styl","hash":"85492ef64d7e5f70f0f7e46d570bbc911e686d7e","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/base.styl","hash":"643284c567665f96915f0b64e59934dda315f74d","modified":1752241750929},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/inline.styl","hash":"411a3fa3f924a87e00ff04d18b5c83283b049a4d","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/keyframes.styl","hash":"94065ea50f5bef7566d184f2422f6ac20866ba22","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/print.styl","hash":"166afbc596ea4b552bad7290ec372d25ec34db7b","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_category/category-bar.styl","hash":"cc6df43fef6bb3efecbfdd8b9e467424a1dea581","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_category/category-list.styl","hash":"7edfe1b571ecca7d08f5f4dbcf76f4ffdcfbf0b5","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_category/category-chain.styl","hash":"0cdf7ef50dfd0669d3b257821384ff31cd81b7c9","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_post/comment.styl","hash":"780f3788e7357bcd3f3262d781cb91bb53976a93","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_post/highlight.styl","hash":"4df764d298fe556e501db4afc2b05686fe6ebcfb","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_index/index.styl","hash":"25fb6fa4c783b847c632584c49a7e1593cdb2f5d","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_links/links.styl","hash":"5c7f2044e3f1da05a3229537c06bd879836f8d6e","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_post/markdown.styl","hash":"1e3d3a82721e7c10bcfcecec6d81cf2979039452","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_post/post-page.styl","hash":"cd432a6411ccac7df47e6a300fb1a872cfc763e7","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_post/post-tag.styl","hash":"c96d36aa8fe20f0c3c1a29ee2473cd8064b10f73","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_tag/tags.styl","hash":"65bfc01c76abc927fa1a23bf2422892b0d566c3f","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/anchorjs.styl","hash":"e0cebda4a6f499aff75e71417d88caa7ceb13b94","modified":1752241750919},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/banner.styl","hash":"7a0bd629bc234fc75e3cc8e3715ffada92f09e73","modified":1752241750922},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/code-widget.styl","hash":"b66ab013f0f37d724a149b85b3c7432afcf460ad","modified":1752241750932},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/board.styl","hash":"4397037fc3f0033dbe546c33cd9dbdabd8cb1632","modified":1752241750929},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/copyright.styl","hash":"26f71a9cd60d96bb0cb5bbdf58150b8e524d9707","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/footer.styl","hash":"2caaca71dd1ff63d583099ed817677dd267b457e","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/footnote.styl","hash":"ae9289cc89649af2042907f8a003303b987f3404","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/header.styl","hash":"c4459248c66ea1326feed021179b847ae91d465f","modified":1752241750935},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/ngrogress.styl","hash":"5d225357b4a58d46118e6616377168336ed44cb2","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/modal.styl","hash":"adf6c1e5c8e1fb41c77ce6e2258001df61245aa2","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/noscript.styl","hash":"0cf2f2bb44f456150d428016675d5876a9d2e2aa","modified":1752241750939},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/qrcode.styl","hash":"78704a94c0436097abfb0e0a57abeb3429c749b7","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/search.styl","hash":"10f7e91a91e681fb9fe46f9df7707b9ef78707c8","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/pagination.styl","hash":"8bb1b68e5f3552cb48c2ffa31edbc53646a8fb4c","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/scroll-btn.styl","hash":"f0e429a27fa8a7658fcbddbb4d4dbe4afa12499a","modified":1752241750942},{"_id":"node_modules/hexo-theme-fluid/source/css/_pages/_base/_widget/toc.styl","hash":"9e7452aa2372153f25d7a4675c9d36d281a65d24","modified":1752241750945},{"_id":"node_modules/hexo-theme-fluid/source/img/default.png","hash":"167a12978d80371cf578c8a2e45c24a2eb25b6fb","modified":1752241750912},{"_id":"source/img/webside/banner.png","hash":"118e747568cbe80b34b85033b8eb4126d89f1d0a","modified":1749606182213},{"_id":"source/img/如何安装Deepin/p9SdTN6.png","hash":"a2d89f7f0d57f14e9b309077948bc9fcc28d137b","modified":1749606182223},{"_id":"public/local-search.xml","hash":"74feb8cc91adeefa8f495b39b3aa8c344a892a68","modified":1763266959518},{"_id":"public/about/index.html","hash":"a026038f56c4085f3caab816e3098cbf1c893f6e","modified":1763266959518},{"_id":"public/2025/02/10/BAAH在逆天环境下的运行/index.html","hash":"bb756c357196800e4e96b879c45b2e73264612f6","modified":1763266959518},{"_id":"public/2025/10/02/hyprland下虚拟副屏的实现/index.html","hash":"7cb84cd511c5cef0c10fc7ecfb91e4210295d0ff","modified":1763266959518},{"_id":"public/2024/04/04/使用手机搭建家庭服务器实战/index.html","hash":"129a2ab26247f4e5c1aca6e3da5c491b8137f883","modified":1763266959518},{"_id":"public/2024/02/09/旧手机重新利用指南/index.html","hash":"b54045ea32b240e6a41dfb07f26fd91416d028b3","modified":1763266959518},{"_id":"public/2023/07/01/XPVPer-一个专注于美观和PVP的Minecraft整合包/index.html","hash":"eb88ef186e31c11509d6e91c77a6798b27c7afa9","modified":1763266959518},{"_id":"public/2023/06/05/Hexo写作指南/index.html","hash":"d39dd7077714fb25c105595749a423ec678d3a50","modified":1763266959518},{"_id":"public/2023/05/27/如何安装Deepin/index.html","hash":"584de8c867937ace75ad03330709f0e8d92ba5f0","modified":1763266959518},{"_id":"public/archives/index.html","hash":"2ea12da4c86b9daac8794e5f7a6fc1910a95b890","modified":1763266959518},{"_id":"public/archives/2023/index.html","hash":"c599ad031f0eb759fdb1b2297e37ed6ffa302267","modified":1763266959518},{"_id":"public/archives/2023/05/index.html","hash":"53dfeb38a6232558b803ff52dbd4b22a3112f1d7","modified":1763266959518},{"_id":"public/archives/2023/06/index.html","hash":"ad2ea531c1abe529af1ee51be6741e06621be4d5","modified":1763266959518},{"_id":"public/archives/2023/07/index.html","hash":"8f909c54698e7a335b0cbbe5e4ce7c42453d3d44","modified":1763266959518},{"_id":"public/archives/2024/index.html","hash":"cfad1783dc578c4817b7963da7e03b8546c37e6a","modified":1763266959518},{"_id":"public/archives/2024/02/index.html","hash":"3b540d02e2d9ca1dd23ad8d74bfb3b127b5ee023","modified":1763266959518},{"_id":"public/archives/2024/04/index.html","hash":"843d21d6c2b475b126aaf47c22cdba3b107d8163","modified":1763266959518},{"_id":"public/archives/2025/index.html","hash":"e1d7c80cc9beee5c3123e4cf8a801370ed7d07f9","modified":1763266959518},{"_id":"public/archives/2025/02/index.html","hash":"04284e712da1347a8bfd6bbf8c6b929c6eb68792","modified":1763266959518},{"_id":"public/archives/2025/10/index.html","hash":"4426bedc3515181b9ba019296cca50b60096578c","modified":1763266959518},{"_id":"public/categories/旧手机利用/index.html","hash":"5fcda00e5cadc43f3d1d8d09f12d45c311514d90","modified":1763266959518},{"_id":"public/categories/自制项目/index.html","hash":"58ccb06939efdc1edc96fa83417d1700ba627cbe","modified":1763266959518},{"_id":"public/categories/折腾/index.html","hash":"86a83bd6adebc99dfd46d01a1708dd07270d4f52","modified":1763266959518},{"_id":"public/categories/教程/index.html","hash":"09c371864ece5abbbe90402fd10e6dc514709c8a","modified":1763266959518},{"_id":"public/index.html","hash":"08ff887198cf35ce480d79e183ad589f967500f5","modified":1763266959518},{"_id":"public/tags/瞎说/index.html","hash":"d89011201c2fb1e390817cfcea98e2940772f3d0","modified":1763266959518},{"_id":"public/tags/BAAH/index.html","hash":"92a33165ae8cfe9ac59a08954b434d3c105a1828","modified":1763266959518},{"_id":"public/tags/Termux/index.html","hash":"acd3b010912326cf002881d1dfd83517958355d2","modified":1763266959518},{"_id":"public/tags/Minecraft/index.html","hash":"4a89705a174a32445bb25a5ac6771e3742f11e91","modified":1763266959518},{"_id":"public/tags/Linux/index.html","hash":"b41ff4c106b80efe75e0bf07dc568fa4915f4d24","modified":1763266959518},{"_id":"public/tags/Hyprland/index.html","hash":"4794ec0d7af87056e5c8130c69aa421d0362fa85","modified":1763266959518},{"_id":"public/tags/Wayland/index.html","hash":"4dec2228b496c8d28da91f8aa6b55a9c5d008f4d","modified":1763266959518},{"_id":"public/tags/虚拟副屏/index.html","hash":"8f24f0e6257d97c15981965d4bf5e92f9b6c46fc","modified":1763266959518},{"_id":"public/tags/旧手机利用/index.html","hash":"477489916d3f78bf086dd1391fb9936af2cdb16f","modified":1763266959518},{"_id":"public/404.html","hash":"d0b4916fea53491fe365bada95d7e93f960555d5","modified":1763266959518},{"_id":"public/tags/index.html","hash":"933cabf95f5ce4fc8706ceb4099b0a812ad81b85","modified":1763266959518},{"_id":"public/categories/index.html","hash":"9c54325195dcbfa996db52cf580cdcb781f7833e","modified":1763266959518},{"_id":"public/links/index.html","hash":"3fa7ca05ad44e8770fcb5dd7c3c6291d5cb8f46a","modified":1763266959518},{"_id":"public/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1763266959518},{"_id":"public/img/fluid.png","hash":"64b215db2cb3af98fe639e94537cb5209f959c78","modified":1763266959518},{"_id":"public/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1763266959518},{"_id":"public/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1763266959518},{"_id":"public/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p991udS.png","hash":"8c34d16a9d15f6199ccad0963e97b2ee09101e56","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p991nZ8.png","hash":"d6abf0ee6acc674fe47d1603b99b7736ca086c39","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p991KIg.png","hash":"ae487f50cbc0ce40f9edf435a2535bd1647af8c6","modified":1763266959518},{"_id":"public/img/如何安装Deepin/ppHBeQf.png","hash":"5ff385c48be4b6255b6d5077861a5f8bf9fd4ed9","modified":1763266959518},{"_id":"public/resource/旧手机重新利用指南/aria2.conf","hash":"be0967a9477e7596f4bdd3f851f3cc3209b253e6","modified":1763266959518},{"_id":"public/img/使用手机搭建家庭服务器实战/image.png","hash":"9ec8daa42745b8586c00374ee8c2556d033efe1a","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p9pHNEn.png","hash":"17ab2234ae5251ae220477fcf3cd492be9e8a894","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p9pquSf.png","hash":"21f410b775fdc850465d2dacde7682e088708fb2","modified":1763266959518},{"_id":"public/img/如何安装Deepin/ppHBMwQ.png","hash":"0b370d52e1cdda34b41dd1fe3b7dc6f4e2ecfedf","modified":1763266959518},{"_id":"public/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1763266959518},{"_id":"public/css/main.css","hash":"a8ca4e4b98743ba47ed316c617428d7bbfacf92c","modified":1763266959518},{"_id":"public/css/highlight.css","hash":"04d4ddbb5e1d1007447c2fe293ee05aae9b9563e","modified":1763266959518},{"_id":"public/css/highlight-dark.css","hash":"902294bada4323c0f51502d67cba8c3a0298952f","modified":1763266959518},{"_id":"public/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1763266959518},{"_id":"public/js/color-schema.js","hash":"c5939d14065d38c86e16d1642e154dde5a23e830","modified":1763266959518},{"_id":"public/js/events.js","hash":"5891534506b959a2f559f29e122baa3eb9159d93","modified":1763266959518},{"_id":"public/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1763266959518},{"_id":"public/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1763266959518},{"_id":"public/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1763266959518},{"_id":"public/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1763266959518},{"_id":"public/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1763266959518},{"_id":"public/img/使用手机搭建家庭服务器实战/screenshot-1712288868303.png","hash":"87c5e1c9f6535868da90aa1c31896fd808dbc804","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p9p7z7R.png","hash":"2fb81f76fd1f8e2e7c3bb46afa7d48a908fb194f","modified":1763266959518},{"_id":"public/img/如何安装Deepin/ppHVZJx.png","hash":"e145dda5a22a4d30605f9ccda5b7fd179577ebc2","modified":1763266959518},{"_id":"public/img/default.png","hash":"167a12978d80371cf578c8a2e45c24a2eb25b6fb","modified":1763266959518},{"_id":"public/img/使用手机搭建家庭服务器实战/f0702c17f10009d27abe6b36215a0fef141432942.jpg","hash":"ce6d0a656182891717e341dda242108be0a57884","modified":1763266959518},{"_id":"public/img/webside/banner.png","hash":"118e747568cbe80b34b85033b8eb4126d89f1d0a","modified":1763266959518},{"_id":"public/img/如何安装Deepin/p9SdTN6.png","hash":"a2d89f7f0d57f14e9b309077948bc9fcc28d137b","modified":1763266959518}],"Category":[{"name":"旧手机利用","_id":"cmi17mdn30005yblvbujidohu"},{"name":"自制项目","_id":"cmi17mdn5000byblv2o613l51"},{"name":"折腾","_id":"cmi17mdn6000fyblver2ab0oi"},{"name":"教程","_id":"cmi17mdn6000kyblva7uqey3j"}],"Data":[],"Page":[{"title":"关于我and留言板","date":"2023-06-22T11:28:27.000Z","_content":"\n我是一个高中生,完全业余的计算机爱好者。\n\n本博客使用Hexo搭建,完全静态。\n\n# 留言板\n可以在下方留言,作者会不定期查看\n\n{%raw%}\n<script src=\"https://giscus.app/client.js\"\n data-repo=\"blockhaity/blockHaity.github.io\"\n data-repo-id=\"R_kgDOJoGsSA\"\n data-category=\"about\"\n data-category-id=\"DIC_kwDOJoGsSM4CXkzq\"\n data-mapping=\"url\"\n data-strict=\"0\"\n data-reactions-enabled=\"1\"\n data-emit-metadata=\"0\"\n data-input-position=\"top\"\n data-theme=\"preferred_color_scheme\"\n data-lang=\"zh-CN\"\n data-loading=\"lazy\"\n crossorigin=\"anonymous\"\n async>\n</script>\n{%endraw%}","source":"about/index.md","raw":"---\ntitle: 关于我and留言板\ndate: 2023-06-22 19:28:27\n---\n\n我是一个高中生,完全业余的计算机爱好者。\n\n本博客使用Hexo搭建,完全静态。\n\n# 留言板\n可以在下方留言,作者会不定期查看\n\n{%raw%}\n<script src=\"https://giscus.app/client.js\"\n data-repo=\"blockhaity/blockHaity.github.io\"\n data-repo-id=\"R_kgDOJoGsSA\"\n data-category=\"about\"\n data-category-id=\"DIC_kwDOJoGsSM4CXkzq\"\n data-mapping=\"url\"\n data-strict=\"0\"\n data-reactions-enabled=\"1\"\n data-emit-metadata=\"0\"\n data-input-position=\"top\"\n data-theme=\"preferred_color_scheme\"\n data-lang=\"zh-CN\"\n data-loading=\"lazy\"\n crossorigin=\"anonymous\"\n async>\n</script>\n{%endraw%}","updated":"2025-10-05T03:54:25.223Z","path":"about/index.html","comments":1,"layout":"page","_id":"cmi17mdmy0000yblv7pbuh8hv","content":"<p>我是一个高中生,完全业余的计算机爱好者。</p>\n<p>本博客使用Hexo搭建,完全静态。</p>\n<h1 id=\"留言板\"><a href=\"#留言板\" class=\"headerlink\" title=\"留言板\"></a>留言板</h1><p>可以在下方留言,作者会不定期查看</p>\n\n<script src=\"https://giscus.app/client.js\"\n data-repo=\"blockhaity/blockHaity.github.io\"\n data-repo-id=\"R_kgDOJoGsSA\"\n data-category=\"about\"\n data-category-id=\"DIC_kwDOJoGsSM4CXkzq\"\n data-mapping=\"url\"\n data-strict=\"0\"\n data-reactions-enabled=\"1\"\n data-emit-metadata=\"0\"\n data-input-position=\"top\"\n data-theme=\"preferred_color_scheme\"\n data-lang=\"zh-CN\"\n data-loading=\"lazy\"\n crossorigin=\"anonymous\"\n async>\n</script>\n","excerpt":"","more":"<p>我是一个高中生,完全业余的计算机爱好者。</p>\n<p>本博客使用Hexo搭建,完全静态。</p>\n<h1 id=\"留言板\"><a href=\"#留言板\" class=\"headerlink\" title=\"留言板\"></a>留言板</h1><p>可以在下方留言,作者会不定期查看</p>\n\n<script src=\"https://giscus.app/client.js\"\n data-repo=\"blockhaity/blockHaity.github.io\"\n data-repo-id=\"R_kgDOJoGsSA\"\n data-category=\"about\"\n data-category-id=\"DIC_kwDOJoGsSM4CXkzq\"\n data-mapping=\"url\"\n data-strict=\"0\"\n data-reactions-enabled=\"1\"\n data-emit-metadata=\"0\"\n data-input-position=\"top\"\n data-theme=\"preferred_color_scheme\"\n data-lang=\"zh-CN\"\n data-loading=\"lazy\"\n crossorigin=\"anonymous\"\n async>\n</script>\n"}],"Post":[{"title":"Hexo写作指南","date":"2023-06-05T03:27:58.000Z","_content":"\n!!! info 提示\n 这篇文章是方便作者使用部分语法的,~~不会考虑他人感受~~\n\n## 插入图片\n\n先将图片上传到图床,然后采用Markdown图片插入即可。\n\n插入图片语法\n\n``` Markdown\n\n```\n\n## 锚点\n\n链接语法右侧括号内填写 `#+二级标题` 即可\n\n链接语法\n\n``` Markdown\n[Markdown语法](https://markdown.com.cn)\n```\n\n## 插入B站视频\n\n只需要把 `//player.bilibili.com/player.html?aid=90978812&cid=155358422&page=1` 替换成自己的就行。\n\n以 **【8K超高清完整版】瑞克·埃斯利(你被骗了)《Never Gonna Give You Up》** 作为演示\n\n从B战复制过来的\n\n``` HTML\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"> </iframe>\n```\n\n实际使用的\n\n``` HTML\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n```\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n","source":"_posts/Hexo写作指南.md","raw":"---\ntitle: Hexo写作指南\ntags:\n - 瞎说\ncategories: []\ndate: 2023-06-05 11:27:58\n---\n\n!!! info 提示\n 这篇文章是方便作者使用部分语法的,~~不会考虑他人感受~~\n\n## 插入图片\n\n先将图片上传到图床,然后采用Markdown图片插入即可。\n\n插入图片语法\n\n``` Markdown\n\n```\n\n## 锚点\n\n链接语法右侧括号内填写 `#+二级标题` 即可\n\n链接语法\n\n``` Markdown\n[Markdown语法](https://markdown.com.cn)\n```\n\n## 插入B站视频\n\n只需要把 `//player.bilibili.com/player.html?aid=90978812&cid=155358422&page=1` 替换成自己的就行。\n\n以 **【8K超高清完整版】瑞克·埃斯利(你被骗了)《Never Gonna Give You Up》** 作为演示\n\n从B战复制过来的\n\n``` HTML\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"> </iframe>\n```\n\n实际使用的\n\n``` HTML\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n```\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n","slug":"Hexo写作指南","published":1,"updated":"2025-06-11T01:43:02.213Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdmz0001yblvfeo0b26v","content":"<div class=\"admonition info\"><p class=\"admonition-title\">提示\n</p><p>这篇文章是方便作者使用部分语法的,~~不会考虑他人感受~~</p>\n</div>\n\n<h2 id=\"插入图片\"><a href=\"#插入图片\" class=\"headerlink\" title=\"插入图片\"></a>插入图片</h2><p>先将图片上传到图床,然后采用Markdown图片插入即可。</p>\n<p>插入图片语法</p>\n<figure class=\"highlight markdown\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Markdown\"><br></code></pre></td></tr></table></figure>\n\n<h2 id=\"锚点\"><a href=\"#锚点\" class=\"headerlink\" title=\"锚点\"></a>锚点</h2><p>链接语法右侧括号内填写 <code>#+二级标题</code> 即可</p>\n<p>链接语法</p>\n<figure class=\"highlight markdown\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Markdown\">[<span class=\"hljs-string\">Markdown语法</span>](<span class=\"hljs-link\">https://markdown.com.cn</span>)<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"插入B站视频\"><a href=\"#插入B站视频\" class=\"headerlink\" title=\"插入B站视频\"></a>插入B站视频</h2><p>只需要把 <code>//player.bilibili.com/player.html?aid=90978812&cid=155358422&page=1</code> 替换成自己的就行。</p>\n<p>以 <strong>【8K超高清完整版】瑞克·埃斯利(你被骗了)《Never Gonna Give You Up》</strong> 作为演示</p>\n<p>从B战复制过来的</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs HTML\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">iframe</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1"</span> <span class=\"hljs-attr\">scrolling</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">border</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">frameborder</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">framespacing</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">allowfullscreen</span>=<span class=\"hljs-string\">"true"</span>></span> <span class=\"hljs-tag\"></<span class=\"hljs-name\">iframe</span>></span><br></code></pre></td></tr></table></figure>\n\n<p>实际使用的</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs HTML\">{% raw %}<br><span class=\"hljs-tag\"><<span class=\"hljs-name\">div</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">"position: relative; width: 100%; height: 0; padding-bottom: 75%;"</span>></span><br><span class=\"hljs-tag\"><<span class=\"hljs-name\">iframe</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1"</span> <span class=\"hljs-attr\">scrolling</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">border</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">frameborder</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">framespacing</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">allowfullscreen</span>=<span class=\"hljs-string\">"true"</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;"</span> ></span><span class=\"hljs-tag\"></<span class=\"hljs-name\">iframe</span>></span><span class=\"hljs-tag\"></<span class=\"hljs-name\">div</span>></span><br>{% endraw %}<br></code></pre></td></tr></table></figure>\n\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n","excerpt":"","more":"<div class=\"admonition info\"><p class=\"admonition-title\">提示\n</p><p>这篇文章是方便作者使用部分语法的,~~不会考虑他人感受~~</p>\n</div>\n\n<h2 id=\"插入图片\"><a href=\"#插入图片\" class=\"headerlink\" title=\"插入图片\"></a>插入图片</h2><p>先将图片上传到图床,然后采用Markdown图片插入即可。</p>\n<p>插入图片语法</p>\n<figure class=\"highlight markdown\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Markdown\"><br></code></pre></td></tr></table></figure>\n\n<h2 id=\"锚点\"><a href=\"#锚点\" class=\"headerlink\" title=\"锚点\"></a>锚点</h2><p>链接语法右侧括号内填写 <code>#+二级标题</code> 即可</p>\n<p>链接语法</p>\n<figure class=\"highlight markdown\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Markdown\">[<span class=\"hljs-string\">Markdown语法</span>](<span class=\"hljs-link\">https://markdown.com.cn</span>)<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"插入B站视频\"><a href=\"#插入B站视频\" class=\"headerlink\" title=\"插入B站视频\"></a>插入B站视频</h2><p>只需要把 <code>//player.bilibili.com/player.html?aid=90978812&cid=155358422&page=1</code> 替换成自己的就行。</p>\n<p>以 <strong>【8K超高清完整版】瑞克·埃斯利(你被骗了)《Never Gonna Give You Up》</strong> 作为演示</p>\n<p>从B战复制过来的</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs HTML\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">iframe</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1"</span> <span class=\"hljs-attr\">scrolling</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">border</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">frameborder</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">framespacing</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">allowfullscreen</span>=<span class=\"hljs-string\">"true"</span>></span> <span class=\"hljs-tag\"></<span class=\"hljs-name\">iframe</span>></span><br></code></pre></td></tr></table></figure>\n\n<p>实际使用的</p>\n<figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs HTML\">{% raw %}<br><span class=\"hljs-tag\"><<span class=\"hljs-name\">div</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">"position: relative; width: 100%; height: 0; padding-bottom: 75%;"</span>></span><br><span class=\"hljs-tag\"><<span class=\"hljs-name\">iframe</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1"</span> <span class=\"hljs-attr\">scrolling</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">border</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">frameborder</span>=<span class=\"hljs-string\">"no"</span> <span class=\"hljs-attr\">framespacing</span>=<span class=\"hljs-string\">"0"</span> <span class=\"hljs-attr\">allowfullscreen</span>=<span class=\"hljs-string\">"true"</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;"</span> ></span><span class=\"hljs-tag\"></<span class=\"hljs-name\">iframe</span>></span><span class=\"hljs-tag\"></<span class=\"hljs-name\">div</span>></span><br>{% endraw %}<br></code></pre></td></tr></table></figure>\n\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?aid=651820362&bvid=BV1he4y1w7wB&cid=1006811391&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n"},{"title":"BAAH在逆天环境下的运行","date":"2025-02-10T03:10:22.000Z","_content":"\n# 前言\n\n这可以看成用手机搭建家庭服务器的DLC\n\n因为作为高中牲的作者要去上学了,而没有时间去肝BA,就想自动清日常,所以有了这篇文章。\n\n感谢 **BAAH - 问题解答群** 中的大佬帮助,有了这篇文章\n\n# 环境概览\n\nTermux neofetch如下\n\n``` bash\n~ $ neofetch\n\n -o o- u0_a224@localhost \n +hydNNNNdyh+ ----------------- \n +mMMMMMMMMMMMMm+ OS: Android 10 aarch64 \n `dMMm:NMMMMMMN:mMMd` Host: HUAWEI ELE-AL00 \n hMMMMMMMMMMMMMMMMMMh Kernel: 4.14.116 \n .. yyyyyyyyyyyyyyyyyyyy .. Uptime: 6 days, 22 hours, 43 mins \n.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm. Packages: 364 (dpkg), 1 (pkg) \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Shell: zsh 5.9 \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Terminal: /dev/pts/8 \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: CPU: vendor Kirin980 (8) @ 1.805GHz \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Memory: 4868MiB / 7606MiB \n-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-\n +yy+ MMMMMMMMMMMMMMMMMMMM +yy+ \n mMMMMMMMMMMMMMMMMMMm \n `/++MMMMh++hMMMM++/`\n MMMMo oMMMM\n MMMMo oMMMM\n oNMm- -mMNs\n```\n\n由于直接在termux裸环境下部署会出现轮子构建问题,所以全程在proot容器中运行\n\n# 开始部署\n\n首先,你需要使用shizuku来提供一个模拟设备序列号\n\nhttps://shizuku.rikka.app/zh-hans/guide/setup/\n\n## 创建容器\n\n由于proot-distro的容器源在Github,国内连接困难,所以使用tmoe进行安装\n\n我目前认为你已经对termux环境有了基本的配置,如换源等\n\n在终端下运行下列命令\n\n``` bash\npkg install curl -y\ncurl -LO https://gitee.com/mo2/linux/raw/2/2.awk; awk -f 2.awk\n```\n\n如果使用zerotermux则可以直接在侧栏中找到\n\n这里,有视频教程来安装容器\n\n[BiliBili - 在下莫老师 - 坏了,这回手机真变电脑了!给手机安装Linux系统,变身生产力神器](https://www.bilibili.com/video/BV16u4y1M7yG)\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=922458285&bvid=BV16u4y1M7yG&cid=1373006711&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n\n不过,需要安装Ubuntu 24.04 LTS容器,此容器提供符合BAAH运行的Python3.12\n\n容器建议不创建sudo用户,不配置zsh,删除zsh-i,运行tmoe tools,出现CUI后使用方向键和回车退出。\n\n然后你将会见到 `root@localhost ~ #`\n\n这时,连续输入三次 `exit` 并回车,当看见 `Press Enter to continue` 时回车两次重新进入容器以避免莫名其妙的bug\n\n## 获取源码,创建虚拟环境\n\n运行下列命令\n\n``` bash\napt-get update\napt-get install python3-full git adb -y\ngit clone https://gitee.com/sammusen/BAAH.git\ncd BAAH\npython -m venv .venv # 创建虚拟环境,解决PEP 668\nsource .venv/bin/activate # 激活虚拟环境\n```\n\n之后,你可以看到你的shell变成了 `(.venv) root@localhost ~/BAAH #`\n\n## 安装依赖\n\n由于python3.12移除了部分包的老版本,需要修改依赖列表来强行兼容。\n\ntips:ubuntu上游python的更新可能使配置的依赖随时失效,可以在群内@BlockHaity\n\n在终端内运行 `nano requirements.txt`\n\n然后找到 `onnxruntime` 将右边的数字改为 1.17.0\n\n然后按下 ctrl + o 后按下 ctrl + x 保存并退出\n\n接下来运行下列命令安装依赖\n\n``` bash\npip install -i https://mirrors.ustc.edu.cn/pypi/simple pip -U\npip config set global.index-url https://mirrors.ustc.edu.cn/pypi/simple\npip install -r requirements.txt\n```\n这时,基本配置好了,可以使用 `python3 jsoneditor.py --host <局域网ip> --port 8000` 来运行webui\n\n## 排障\n\n### 无法运行\n\n在作者的手机上出现了这个问题\n\n``` bash\nError in cpuinfo: failed to parse the list of possible processors in /sys/devices/system/cpu/possible\nError in cpuinfo: failed to parse the list of present processors in /sys/devices/system/cpu/present\nError in cpuinfo: failed to parse both lists of possible and present processors\nterminate called after throwing an instance of 'onnxruntime::OnnxRuntimeException'\n what(): /onnxruntime_src/include/onnxruntime/core/common/logging/logging.h:309 static const onnxruntime::logging::Logger& onnxruntime::logging::LoggingManager::DefaultLogger() Attempt to use DefaultLogger but none has been registered.\n\n已中止\n```\n\ndeepseek给出的回答为cpuinfo库解析处理器信息失败,而事实上文件并不存在。\n\n所以需要伪造文件\n\n输入 `exit` 并回车,然后不断选择最下面的项目,退出tmoe。\n\n然后运行下列命令\n\n``` bash\ncd .local/share/tmoe-linux/containers/proot/ubuntu-noble_arm64/sys\nmkdir devices\ncd devices\nmkdir system\ncd system\nmkdir cpu\ncd cpu\necho \"0-7\" > possible # 0-7应填写soc的实际情况,如为8核心soc,则填写0-7,超线程情况下应填写0-实际线程数减1\necho \"0-7\" > present\ncd ~\n```\n\n然后运行下列命令进入环境\n\n``` bash\ndebian\ncd BAAH\nsource .venv/bin/activate\n```\n\n这时应该可以运行webui了。\n\n### aria2无法下载\n\n在proot环境中,aria2是无法正确发送请求的,也无法下载,所以。我们需要把wget伪装成aria2\n\n首先,在容器内运行下面的命令\n\n``` bash\nsudo touch /usr/bin/aria2c\nsudo chmod 777 /usr/bin/aria2c\n```\n\n然后,用`nano /usr/share/aria2c` 来编辑文件,写入下面内容\n\n``` bash\n#!/bin/bash\n\n# aria2伪装脚本 - 使用wget模拟aria2的基本功能\n\n# 显示帮助信息\nshow_help() {\n cat << EOF\n用法: aria2c [选项]... [URL]...\n\n使用wget模拟aria2下载器的基本功能\n\n常用选项:\n -s, --split=N 分割下载段数(模拟,实际单线程)\n -j, --max-concurrent-downloads=N 最大并发下载数(模拟)\n -x, --max-connection-per-server=N 每服务器最大连接数(模拟)\n -k, --min-split-size=N 最小分割大小\n -c, --continue 断点续传\n -d, --dir=DIR 下载目录\n -o, --out=FILE 输出文件名\n -V, --version 显示版本信息\n -h, --help 显示此帮助信息\n\n示例:\n aria2c http://example.com/file.zip\n aria2c -s 4 -c http://example.com/largefile.iso\n aria2c -o myfile.zip http://example.com/file.zip\n\n注意: 这是一个使用wget的模拟脚本,并非真正的aria2\nEOF\n}\n\n# 显示版本信息\nshow_version() {\n echo \"aria2c (伪装版) 1.0.0\"\n echo \"使用wget ${wget_version} 作为后端\"\n echo \"这是一个模拟aria2的伪装脚本\"\n}\n\n# 初始化变量\nSPLIT=1\nMAX_CONCURRENT=1\nMAX_CONNECTION=1\nCONTINUE=false\nDOWNLOAD_DIR=\".\"\nOUTPUT_FILE=\"\"\nURLS=()\nWGET_ARGS=()\nexit_code=0 # 初始化退出码\n\n# 获取wget版本\nwget_version=$(wget --version | head -n1 | awk '{print $3}')\n\n# 解析命令行参数\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n -s|--split)\n SPLIT=\"$2\"\n echo \"信息: 分割下载设置为 ${SPLIT} 段(模拟)\"\n shift 2\n ;;\n -j|--max-concurrent-downloads)\n MAX_CONCURRENT=\"$2\"\n echo \"信息: 最大并发下载数设置为 ${MAX_CONCURRENT}(模拟)\"\n shift 2\n ;;\n -x|--max-connection-per-server)\n MAX_CONNECTION=\"$2\"\n echo \"信息: 每服务器最大连接数设置为 ${MAX_CONNECTION}(模拟)\"\n shift 2\n ;;\n -k|--min-split-size)\n echo \"信息: 最小分割大小设置为 $2(模拟)\"\n shift 2\n ;;\n -c|--continue)\n CONTINUE=true\n WGET_ARGS+=(\"-c\")\n echo \"信息: 启用断点续传\"\n shift\n ;;\n -d|--dir)\n DOWNLOAD_DIR=\"$2\"\n WGET_ARGS+=(\"-P\" \"$2\")\n shift 2\n ;;\n -o|--out)\n OUTPUT_FILE=\"$2\"\n shift 2\n ;;\n -V|--version)\n show_version\n exit 0\n ;;\n -h|--help)\n show_help\n exit 0\n ;;\n http://*|https://*|ftp://*)\n URLS+=(\"$1\")\n shift\n ;;\n *)\n echo \"警告: 忽略未知选项 '$1'\"\n shift\n ;;\n esac\ndone\n\n# 检查是否有URL提供\nif [ ${#URLS[@]} -eq 0 ]; then\n echo \"错误: 没有指定下载URL\"\n echo \"使用 -h 选项查看帮助信息\"\n exit 1\nfi\n\n# 检查下载目录是否存在\nif [ ! -d \"$DOWNLOAD_DIR\" ]; then\n echo \"创建下载目录: $DOWNLOAD_DIR\"\n mkdir -p \"$DOWNLOAD_DIR\"\nfi\n\n# 模拟aria2的输出格式\necho \"`date +'%Y-%m-%d %H:%M:%S'` Starting aria2c (伪装版) with wget backend\"\n\n# 下载每个URL\nfor url in \"${URLS[@]}\"; do\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Downloading: $url\"\n \n # 构建输出文件参数\n current_wget_args=(\"${WGET_ARGS[@]}\")\n if [ -n \"$OUTPUT_FILE\" ]; then\n # 如果指定了输出文件名,只对第一个URL使用,或者为每个URL生成唯一文件名\n if [ ${#URLS[@]} -eq 1 ] || [ \"$url\" == \"${URLS[0]}\" ]; then\n current_wget_args+=(\"-O\" \"$OUTPUT_FILE\")\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Output file: $OUTPUT_FILE\"\n else\n # 多个URL时,为后续URL使用默认文件名\n filename_from_url=$(basename \"$url\")\n current_wget_args+=(\"-O\" \"$filename_from_url\")\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Output file: $filename_from_url\"\n fi\n fi\n \n # 执行wget下载\n if wget \"${current_wget_args[@]}\" \"$url\"; then\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Download complete: $url\"\n \n # 获取下载的文件信息\n if [ -n \"$OUTPUT_FILE\" ] && [ ${#URLS[@]} -eq 1 ]; then\n filename=\"$OUTPUT_FILE\"\n else\n filename=$(basename \"$url\")\n fi\n \n if [ -f \"$DOWNLOAD_DIR/$filename\" ]; then\n size=$(stat -c%s \"$DOWNLOAD_DIR/$filename\" 2>/dev/null || stat -f%z \"$DOWNLOAD_DIR/$filename\" 2>/dev/null)\n echo \"`date +'%Y-%m-%d %H:%M:%S'` File: $filename, Size: $size bytes\"\n elif [ -f \"$filename\" ]; then\n size=$(stat -c%s \"$filename\" 2>/dev/null || stat -f%z \"$filename\" 2>/dev/null)\n echo \"`date +'%Y-%m-%d %H:%M:%S'` File: $filename, Size: $size bytes\"\n fi\n else\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Download failed: $url\"\n exit_code=1\n # 不立即退出,继续尝试其他URL(如果有的话)\n fi\ndone\n\nif [ $exit_code -eq 0 ]; then\n echo \"`date +'%Y-%m-%d %H:%M:%S'` All downloads completed successfully\"\nelse\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Some downloads failed\"\nfi\n\nexit $exit_code\n```\n\n# 开始自动化运行\n\n首先,参考此视频来学习BAAH的配置\n\n[BiliBili - 糖糖-belief - 【蔚蓝档案电脑版】自动化碧蓝档案每日任务工具BAAH教程](https://www.bilibili.com/video/BV1ZxfGYSEVr/)\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=113877383648785&bvid=BV1ZxfGYSEVr&cid=28301724347&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n\n在此环境下,配置基本相同,但是要修改一部分\n\n``` bash\nadb devices\n```\n\n此命令用来获取序列号,若弹出授权提示,始终允许即可。作者的为 `emulate-5554`\n\n将配置中的连接序列号改为你的设备。\n\n其他设置中adb路径改为 `/usr/bin/adb`\n\n将aria2路径设置为 `/usr/bin/aria2c`\n\n自动运行则使用MCSManager来提供\n\n## 安装MCSManager\n\n为啥要安装MCSManager,因为它可以提供像Windows计划任务程序的自动运行功能\n\n先用exit退出容器,然后再次进入容器,保证目录正确。\n\n首先,安装Nodejs\n\n``` bash\napt install -y nodejs-lts npm tmux\nnpm config set registry https://registry.npmmirror.com #配置镜像\n```\n\n然后,下载并安装MCSManager\n\n``` bash\nwget https://v6.gh-proxy.com/https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz\ntar --strip-components=1 -xzvf mcsmanager_linux_release.tar.gz\ncd mcsmanager\nbash ./install.sh\n```\n然后运行MCSManager\n\n``` bash\ntmux\n\n# 然后你会看到一个代底部绿条的终端,使用Ctrl+B,然后按Shift+“来分屏,使用Ctrl+B然后按上下键来切换光标\n\n# 第一个窗口内\nbash ./start-daemon.sh\n\n# 第二个窗口内\nbash ./start-web.sh\n```\n\n然后打开手机的浏览器,进入 `localhost:23333` 创建管理员账户和密码 **一定要记住!非常重要!**\n\n然后新建一个实例,部署在 **localhost:24444**\n\n程序类型选择 **部署任意控制台程序**\n\n部署方式选择 **无需额外文件**\n\n名称任意,运行命令输入 `bash ./run.sh`\n\n创建完成后,进入文件管理,创建 **run.sh** 然后编辑,输入以下内容.\n\n``` bash\nadb start-server\nsleep 5\nadb devices\nadb shell wm size 1280x720\ncd ~/BAAH\nsource .venv/bin/activate\npython3 jsoneditor.py <你的配置文件名>\nadb shell wm size reset\nadb shell wm density reset\n```\n\n保存后,回到实例控制台,点击计划任务。\n\n点击新增,根据自己实际情况设置即可。\n\n---\n\nenjoy","source":"_posts/BAAH在逆天环境下的运行.md","raw":"---\ntitle: BAAH在逆天环境下的运行\ndate: 2025-02-10 11:10:22\ntags: \n - BAAH\n - Termux\ncategories: 旧手机利用\n---\n\n# 前言\n\n这可以看成用手机搭建家庭服务器的DLC\n\n因为作为高中牲的作者要去上学了,而没有时间去肝BA,就想自动清日常,所以有了这篇文章。\n\n感谢 **BAAH - 问题解答群** 中的大佬帮助,有了这篇文章\n\n# 环境概览\n\nTermux neofetch如下\n\n``` bash\n~ $ neofetch\n\n -o o- u0_a224@localhost \n +hydNNNNdyh+ ----------------- \n +mMMMMMMMMMMMMm+ OS: Android 10 aarch64 \n `dMMm:NMMMMMMN:mMMd` Host: HUAWEI ELE-AL00 \n hMMMMMMMMMMMMMMMMMMh Kernel: 4.14.116 \n .. yyyyyyyyyyyyyyyyyyyy .. Uptime: 6 days, 22 hours, 43 mins \n.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm. Packages: 364 (dpkg), 1 (pkg) \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Shell: zsh 5.9 \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Terminal: /dev/pts/8 \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: CPU: vendor Kirin980 (8) @ 1.805GHz \n:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Memory: 4868MiB / 7606MiB \n-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-\n +yy+ MMMMMMMMMMMMMMMMMMMM +yy+ \n mMMMMMMMMMMMMMMMMMMm \n `/++MMMMh++hMMMM++/`\n MMMMo oMMMM\n MMMMo oMMMM\n oNMm- -mMNs\n```\n\n由于直接在termux裸环境下部署会出现轮子构建问题,所以全程在proot容器中运行\n\n# 开始部署\n\n首先,你需要使用shizuku来提供一个模拟设备序列号\n\nhttps://shizuku.rikka.app/zh-hans/guide/setup/\n\n## 创建容器\n\n由于proot-distro的容器源在Github,国内连接困难,所以使用tmoe进行安装\n\n我目前认为你已经对termux环境有了基本的配置,如换源等\n\n在终端下运行下列命令\n\n``` bash\npkg install curl -y\ncurl -LO https://gitee.com/mo2/linux/raw/2/2.awk; awk -f 2.awk\n```\n\n如果使用zerotermux则可以直接在侧栏中找到\n\n这里,有视频教程来安装容器\n\n[BiliBili - 在下莫老师 - 坏了,这回手机真变电脑了!给手机安装Linux系统,变身生产力神器](https://www.bilibili.com/video/BV16u4y1M7yG)\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=922458285&bvid=BV16u4y1M7yG&cid=1373006711&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n\n不过,需要安装Ubuntu 24.04 LTS容器,此容器提供符合BAAH运行的Python3.12\n\n容器建议不创建sudo用户,不配置zsh,删除zsh-i,运行tmoe tools,出现CUI后使用方向键和回车退出。\n\n然后你将会见到 `root@localhost ~ #`\n\n这时,连续输入三次 `exit` 并回车,当看见 `Press Enter to continue` 时回车两次重新进入容器以避免莫名其妙的bug\n\n## 获取源码,创建虚拟环境\n\n运行下列命令\n\n``` bash\napt-get update\napt-get install python3-full git adb -y\ngit clone https://gitee.com/sammusen/BAAH.git\ncd BAAH\npython -m venv .venv # 创建虚拟环境,解决PEP 668\nsource .venv/bin/activate # 激活虚拟环境\n```\n\n之后,你可以看到你的shell变成了 `(.venv) root@localhost ~/BAAH #`\n\n## 安装依赖\n\n由于python3.12移除了部分包的老版本,需要修改依赖列表来强行兼容。\n\ntips:ubuntu上游python的更新可能使配置的依赖随时失效,可以在群内@BlockHaity\n\n在终端内运行 `nano requirements.txt`\n\n然后找到 `onnxruntime` 将右边的数字改为 1.17.0\n\n然后按下 ctrl + o 后按下 ctrl + x 保存并退出\n\n接下来运行下列命令安装依赖\n\n``` bash\npip install -i https://mirrors.ustc.edu.cn/pypi/simple pip -U\npip config set global.index-url https://mirrors.ustc.edu.cn/pypi/simple\npip install -r requirements.txt\n```\n这时,基本配置好了,可以使用 `python3 jsoneditor.py --host <局域网ip> --port 8000` 来运行webui\n\n## 排障\n\n### 无法运行\n\n在作者的手机上出现了这个问题\n\n``` bash\nError in cpuinfo: failed to parse the list of possible processors in /sys/devices/system/cpu/possible\nError in cpuinfo: failed to parse the list of present processors in /sys/devices/system/cpu/present\nError in cpuinfo: failed to parse both lists of possible and present processors\nterminate called after throwing an instance of 'onnxruntime::OnnxRuntimeException'\n what(): /onnxruntime_src/include/onnxruntime/core/common/logging/logging.h:309 static const onnxruntime::logging::Logger& onnxruntime::logging::LoggingManager::DefaultLogger() Attempt to use DefaultLogger but none has been registered.\n\n已中止\n```\n\ndeepseek给出的回答为cpuinfo库解析处理器信息失败,而事实上文件并不存在。\n\n所以需要伪造文件\n\n输入 `exit` 并回车,然后不断选择最下面的项目,退出tmoe。\n\n然后运行下列命令\n\n``` bash\ncd .local/share/tmoe-linux/containers/proot/ubuntu-noble_arm64/sys\nmkdir devices\ncd devices\nmkdir system\ncd system\nmkdir cpu\ncd cpu\necho \"0-7\" > possible # 0-7应填写soc的实际情况,如为8核心soc,则填写0-7,超线程情况下应填写0-实际线程数减1\necho \"0-7\" > present\ncd ~\n```\n\n然后运行下列命令进入环境\n\n``` bash\ndebian\ncd BAAH\nsource .venv/bin/activate\n```\n\n这时应该可以运行webui了。\n\n### aria2无法下载\n\n在proot环境中,aria2是无法正确发送请求的,也无法下载,所以。我们需要把wget伪装成aria2\n\n首先,在容器内运行下面的命令\n\n``` bash\nsudo touch /usr/bin/aria2c\nsudo chmod 777 /usr/bin/aria2c\n```\n\n然后,用`nano /usr/share/aria2c` 来编辑文件,写入下面内容\n\n``` bash\n#!/bin/bash\n\n# aria2伪装脚本 - 使用wget模拟aria2的基本功能\n\n# 显示帮助信息\nshow_help() {\n cat << EOF\n用法: aria2c [选项]... [URL]...\n\n使用wget模拟aria2下载器的基本功能\n\n常用选项:\n -s, --split=N 分割下载段数(模拟,实际单线程)\n -j, --max-concurrent-downloads=N 最大并发下载数(模拟)\n -x, --max-connection-per-server=N 每服务器最大连接数(模拟)\n -k, --min-split-size=N 最小分割大小\n -c, --continue 断点续传\n -d, --dir=DIR 下载目录\n -o, --out=FILE 输出文件名\n -V, --version 显示版本信息\n -h, --help 显示此帮助信息\n\n示例:\n aria2c http://example.com/file.zip\n aria2c -s 4 -c http://example.com/largefile.iso\n aria2c -o myfile.zip http://example.com/file.zip\n\n注意: 这是一个使用wget的模拟脚本,并非真正的aria2\nEOF\n}\n\n# 显示版本信息\nshow_version() {\n echo \"aria2c (伪装版) 1.0.0\"\n echo \"使用wget ${wget_version} 作为后端\"\n echo \"这是一个模拟aria2的伪装脚本\"\n}\n\n# 初始化变量\nSPLIT=1\nMAX_CONCURRENT=1\nMAX_CONNECTION=1\nCONTINUE=false\nDOWNLOAD_DIR=\".\"\nOUTPUT_FILE=\"\"\nURLS=()\nWGET_ARGS=()\nexit_code=0 # 初始化退出码\n\n# 获取wget版本\nwget_version=$(wget --version | head -n1 | awk '{print $3}')\n\n# 解析命令行参数\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n -s|--split)\n SPLIT=\"$2\"\n echo \"信息: 分割下载设置为 ${SPLIT} 段(模拟)\"\n shift 2\n ;;\n -j|--max-concurrent-downloads)\n MAX_CONCURRENT=\"$2\"\n echo \"信息: 最大并发下载数设置为 ${MAX_CONCURRENT}(模拟)\"\n shift 2\n ;;\n -x|--max-connection-per-server)\n MAX_CONNECTION=\"$2\"\n echo \"信息: 每服务器最大连接数设置为 ${MAX_CONNECTION}(模拟)\"\n shift 2\n ;;\n -k|--min-split-size)\n echo \"信息: 最小分割大小设置为 $2(模拟)\"\n shift 2\n ;;\n -c|--continue)\n CONTINUE=true\n WGET_ARGS+=(\"-c\")\n echo \"信息: 启用断点续传\"\n shift\n ;;\n -d|--dir)\n DOWNLOAD_DIR=\"$2\"\n WGET_ARGS+=(\"-P\" \"$2\")\n shift 2\n ;;\n -o|--out)\n OUTPUT_FILE=\"$2\"\n shift 2\n ;;\n -V|--version)\n show_version\n exit 0\n ;;\n -h|--help)\n show_help\n exit 0\n ;;\n http://*|https://*|ftp://*)\n URLS+=(\"$1\")\n shift\n ;;\n *)\n echo \"警告: 忽略未知选项 '$1'\"\n shift\n ;;\n esac\ndone\n\n# 检查是否有URL提供\nif [ ${#URLS[@]} -eq 0 ]; then\n echo \"错误: 没有指定下载URL\"\n echo \"使用 -h 选项查看帮助信息\"\n exit 1\nfi\n\n# 检查下载目录是否存在\nif [ ! -d \"$DOWNLOAD_DIR\" ]; then\n echo \"创建下载目录: $DOWNLOAD_DIR\"\n mkdir -p \"$DOWNLOAD_DIR\"\nfi\n\n# 模拟aria2的输出格式\necho \"`date +'%Y-%m-%d %H:%M:%S'` Starting aria2c (伪装版) with wget backend\"\n\n# 下载每个URL\nfor url in \"${URLS[@]}\"; do\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Downloading: $url\"\n \n # 构建输出文件参数\n current_wget_args=(\"${WGET_ARGS[@]}\")\n if [ -n \"$OUTPUT_FILE\" ]; then\n # 如果指定了输出文件名,只对第一个URL使用,或者为每个URL生成唯一文件名\n if [ ${#URLS[@]} -eq 1 ] || [ \"$url\" == \"${URLS[0]}\" ]; then\n current_wget_args+=(\"-O\" \"$OUTPUT_FILE\")\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Output file: $OUTPUT_FILE\"\n else\n # 多个URL时,为后续URL使用默认文件名\n filename_from_url=$(basename \"$url\")\n current_wget_args+=(\"-O\" \"$filename_from_url\")\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Output file: $filename_from_url\"\n fi\n fi\n \n # 执行wget下载\n if wget \"${current_wget_args[@]}\" \"$url\"; then\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Download complete: $url\"\n \n # 获取下载的文件信息\n if [ -n \"$OUTPUT_FILE\" ] && [ ${#URLS[@]} -eq 1 ]; then\n filename=\"$OUTPUT_FILE\"\n else\n filename=$(basename \"$url\")\n fi\n \n if [ -f \"$DOWNLOAD_DIR/$filename\" ]; then\n size=$(stat -c%s \"$DOWNLOAD_DIR/$filename\" 2>/dev/null || stat -f%z \"$DOWNLOAD_DIR/$filename\" 2>/dev/null)\n echo \"`date +'%Y-%m-%d %H:%M:%S'` File: $filename, Size: $size bytes\"\n elif [ -f \"$filename\" ]; then\n size=$(stat -c%s \"$filename\" 2>/dev/null || stat -f%z \"$filename\" 2>/dev/null)\n echo \"`date +'%Y-%m-%d %H:%M:%S'` File: $filename, Size: $size bytes\"\n fi\n else\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Download failed: $url\"\n exit_code=1\n # 不立即退出,继续尝试其他URL(如果有的话)\n fi\ndone\n\nif [ $exit_code -eq 0 ]; then\n echo \"`date +'%Y-%m-%d %H:%M:%S'` All downloads completed successfully\"\nelse\n echo \"`date +'%Y-%m-%d %H:%M:%S'` Some downloads failed\"\nfi\n\nexit $exit_code\n```\n\n# 开始自动化运行\n\n首先,参考此视频来学习BAAH的配置\n\n[BiliBili - 糖糖-belief - 【蔚蓝档案电脑版】自动化碧蓝档案每日任务工具BAAH教程](https://www.bilibili.com/video/BV1ZxfGYSEVr/)\n\n{% raw %}\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=113877383648785&bvid=BV1ZxfGYSEVr&cid=28301724347&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n{% endraw %}\n\n在此环境下,配置基本相同,但是要修改一部分\n\n``` bash\nadb devices\n```\n\n此命令用来获取序列号,若弹出授权提示,始终允许即可。作者的为 `emulate-5554`\n\n将配置中的连接序列号改为你的设备。\n\n其他设置中adb路径改为 `/usr/bin/adb`\n\n将aria2路径设置为 `/usr/bin/aria2c`\n\n自动运行则使用MCSManager来提供\n\n## 安装MCSManager\n\n为啥要安装MCSManager,因为它可以提供像Windows计划任务程序的自动运行功能\n\n先用exit退出容器,然后再次进入容器,保证目录正确。\n\n首先,安装Nodejs\n\n``` bash\napt install -y nodejs-lts npm tmux\nnpm config set registry https://registry.npmmirror.com #配置镜像\n```\n\n然后,下载并安装MCSManager\n\n``` bash\nwget https://v6.gh-proxy.com/https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz\ntar --strip-components=1 -xzvf mcsmanager_linux_release.tar.gz\ncd mcsmanager\nbash ./install.sh\n```\n然后运行MCSManager\n\n``` bash\ntmux\n\n# 然后你会看到一个代底部绿条的终端,使用Ctrl+B,然后按Shift+“来分屏,使用Ctrl+B然后按上下键来切换光标\n\n# 第一个窗口内\nbash ./start-daemon.sh\n\n# 第二个窗口内\nbash ./start-web.sh\n```\n\n然后打开手机的浏览器,进入 `localhost:23333` 创建管理员账户和密码 **一定要记住!非常重要!**\n\n然后新建一个实例,部署在 **localhost:24444**\n\n程序类型选择 **部署任意控制台程序**\n\n部署方式选择 **无需额外文件**\n\n名称任意,运行命令输入 `bash ./run.sh`\n\n创建完成后,进入文件管理,创建 **run.sh** 然后编辑,输入以下内容.\n\n``` bash\nadb start-server\nsleep 5\nadb devices\nadb shell wm size 1280x720\ncd ~/BAAH\nsource .venv/bin/activate\npython3 jsoneditor.py <你的配置文件名>\nadb shell wm size reset\nadb shell wm density reset\n```\n\n保存后,回到实例控制台,点击计划任务。\n\n点击新增,根据自己实际情况设置即可。\n\n---\n\nenjoy","slug":"BAAH在逆天环境下的运行","published":1,"updated":"2025-11-15T10:44:28.343Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn10002yblvfwmz08oj","content":"<h1 id=\"前言\"><a href=\"#前言\" class=\"headerlink\" title=\"前言\"></a>前言</h1><p>这可以看成用手机搭建家庭服务器的DLC</p>\n<p>因为作为高中牲的作者要去上学了,而没有时间去肝BA,就想自动清日常,所以有了这篇文章。</p>\n<p>感谢 <strong>BAAH - 问题解答群</strong> 中的大佬帮助,有了这篇文章</p>\n<h1 id=\"环境概览\"><a href=\"#环境概览\" class=\"headerlink\" title=\"环境概览\"></a>环境概览</h1><p>Termux neofetch如下</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">~ $ neofetch<br><br> -o o- u0_a224@localhost <br> +hydNNNNdyh+ ----------------- <br> +mMMMMMMMMMMMMm+ OS: Android 10 aarch64 <br> `dMMm:NMMMMMMN:mMMd` Host: HUAWEI ELE-AL00 <br> hMMMMMMMMMMMMMMMMMMh Kernel: 4.14.116 <br> .. yyyyyyyyyyyyyyyyyyyy .. Uptime: 6 days, 22 hours, 43 mins <br>.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm. Packages: 364 (dpkg), 1 (pkg) <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Shell: zsh 5.9 <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Terminal: /dev/pts/8 <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: CPU: vendor Kirin980 (8) @ 1.805GHz <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Memory: 4868MiB / 7606MiB <br>-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-<br> +yy+ MMMMMMMMMMMMMMMMMMMM +yy+ <br> mMMMMMMMMMMMMMMMMMMm <br> `/++MMMMh++hMMMM++/`<br> MMMMo oMMMM<br> MMMMo oMMMM<br> oNMm- -mMNs<br></code></pre></td></tr></table></figure>\n\n<p>由于直接在termux裸环境下部署会出现轮子构建问题,所以全程在proot容器中运行</p>\n<h1 id=\"开始部署\"><a href=\"#开始部署\" class=\"headerlink\" title=\"开始部署\"></a>开始部署</h1><p>首先,你需要使用shizuku来提供一个模拟设备序列号</p>\n<p><a href=\"https://shizuku.rikka.app/zh-hans/guide/setup/\">https://shizuku.rikka.app/zh-hans/guide/setup/</a></p>\n<h2 id=\"创建容器\"><a href=\"#创建容器\" class=\"headerlink\" title=\"创建容器\"></a>创建容器</h2><p>由于proot-distro的容器源在Github,国内连接困难,所以使用tmoe进行安装</p>\n<p>我目前认为你已经对termux环境有了基本的配置,如换源等</p>\n<p>在终端下运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">pkg install curl -y<br>curl -LO https://gitee.com/mo2/linux/raw/2/2.awk; awk -f 2.awk<br></code></pre></td></tr></table></figure>\n\n<p>如果使用zerotermux则可以直接在侧栏中找到</p>\n<p>这里,有视频教程来安装容器</p>\n<p><a href=\"https://www.bilibili.com/video/BV16u4y1M7yG\">BiliBili - 在下莫老师 - 坏了,这回手机真变电脑了!给手机安装Linux系统,变身生产力神器</a></p>\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=922458285&bvid=BV16u4y1M7yG&cid=1373006711&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n\n<p>不过,需要安装Ubuntu 24.04 LTS容器,此容器提供符合BAAH运行的Python3.12</p>\n<p>容器建议不创建sudo用户,不配置zsh,删除zsh-i,运行tmoe tools,出现CUI后使用方向键和回车退出。</p>\n<p>然后你将会见到 <code>root@localhost ~ #</code></p>\n<p>这时,连续输入三次 <code>exit</code> 并回车,当看见 <code>Press Enter to continue</code> 时回车两次重新进入容器以避免莫名其妙的bug</p>\n<h2 id=\"获取源码,创建虚拟环境\"><a href=\"#获取源码,创建虚拟环境\" class=\"headerlink\" title=\"获取源码,创建虚拟环境\"></a>获取源码,创建虚拟环境</h2><p>运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">apt-get update<br>apt-get install python3-full git adb -y<br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/sammusen/BAAH.git<br><span class=\"hljs-built_in\">cd</span> BAAH<br>python -m venv .venv <span class=\"hljs-comment\"># 创建虚拟环境,解决PEP 668</span><br><span class=\"hljs-built_in\">source</span> .venv/bin/activate <span class=\"hljs-comment\"># 激活虚拟环境</span><br></code></pre></td></tr></table></figure>\n\n<p>之后,你可以看到你的shell变成了 <code>(.venv) root@localhost ~/BAAH #</code></p>\n<h2 id=\"安装依赖\"><a href=\"#安装依赖\" class=\"headerlink\" title=\"安装依赖\"></a>安装依赖</h2><p>由于python3.12移除了部分包的老版本,需要修改依赖列表来强行兼容。</p>\n<p>tips:ubuntu上游python的更新可能使配置的依赖随时失效,可以在群内@BlockHaity</p>\n<p>在终端内运行 <code>nano requirements.txt</code></p>\n<p>然后找到 <code>onnxruntime</code> 将右边的数字改为 1.17.0</p>\n<p>然后按下 ctrl + o 后按下 ctrl + x 保存并退出</p>\n<p>接下来运行下列命令安装依赖</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">pip install -i https://mirrors.ustc.edu.cn/pypi/simple pip -U<br>pip config <span class=\"hljs-built_in\">set</span> global.index-url https://mirrors.ustc.edu.cn/pypi/simple<br>pip install -r requirements.txt<br></code></pre></td></tr></table></figure>\n<p>这时,基本配置好了,可以使用 <code>python3 jsoneditor.py --host <局域网ip> --port 8000</code> 来运行webui</p>\n<h2 id=\"排障\"><a href=\"#排障\" class=\"headerlink\" title=\"排障\"></a>排障</h2><h3 id=\"无法运行\"><a href=\"#无法运行\" class=\"headerlink\" title=\"无法运行\"></a>无法运行</h3><p>在作者的手机上出现了这个问题</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse the list of possible processors <span class=\"hljs-keyword\">in</span> /sys/devices/system/cpu/possible<br>Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse the list of present processors <span class=\"hljs-keyword\">in</span> /sys/devices/system/cpu/present<br>Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse both lists of possible and present processors<br>terminate called after throwing an instance of <span class=\"hljs-string\">'onnxruntime::OnnxRuntimeException'</span><br> what(): /onnxruntime_src/include/onnxruntime/core/common/logging/logging.h:309 static const onnxruntime::logging::Logger& onnxruntime::logging::LoggingManager::DefaultLogger() Attempt to use DefaultLogger but none has been registered.<br><br>已中止<br></code></pre></td></tr></table></figure>\n\n<p>deepseek给出的回答为cpuinfo库解析处理器信息失败,而事实上文件并不存在。</p>\n<p>所以需要伪造文件</p>\n<p>输入 <code>exit</code> 并回车,然后不断选择最下面的项目,退出tmoe。</p>\n<p>然后运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">cd</span> .<span class=\"hljs-built_in\">local</span>/share/tmoe-linux/containers/proot/ubuntu-noble_arm64/sys<br><span class=\"hljs-built_in\">mkdir</span> devices<br><span class=\"hljs-built_in\">cd</span> devices<br><span class=\"hljs-built_in\">mkdir</span> system<br><span class=\"hljs-built_in\">cd</span> system<br><span class=\"hljs-built_in\">mkdir</span> cpu<br><span class=\"hljs-built_in\">cd</span> cpu<br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"0-7"</span> > possible <span class=\"hljs-comment\"># 0-7应填写soc的实际情况,如为8核心soc,则填写0-7,超线程情况下应填写0-实际线程数减1</span><br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"0-7"</span> > present<br><span class=\"hljs-built_in\">cd</span> ~<br></code></pre></td></tr></table></figure>\n\n<p>然后运行下列命令进入环境</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">debian<br><span class=\"hljs-built_in\">cd</span> BAAH<br><span class=\"hljs-built_in\">source</span> .venv/bin/activate<br></code></pre></td></tr></table></figure>\n\n<p>这时应该可以运行webui了。</p>\n<h3 id=\"aria2无法下载\"><a href=\"#aria2无法下载\" class=\"headerlink\" title=\"aria2无法下载\"></a>aria2无法下载</h3><p>在proot环境中,aria2是无法正确发送请求的,也无法下载,所以。我们需要把wget伪装成aria2</p>\n<p>首先,在容器内运行下面的命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">sudo <span class=\"hljs-built_in\">touch</span> /usr/bin/aria2c<br>sudo <span class=\"hljs-built_in\">chmod</span> 777 /usr/bin/aria2c<br></code></pre></td></tr></table></figure>\n\n<p>然后,用<code>nano /usr/share/aria2c</code> 来编辑文件,写入下面内容</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><span class=\"line\">127</span><br><span class=\"line\">128</span><br><span class=\"line\">129</span><br><span class=\"line\">130</span><br><span class=\"line\">131</span><br><span class=\"line\">132</span><br><span class=\"line\">133</span><br><span class=\"line\">134</span><br><span class=\"line\">135</span><br><span class=\"line\">136</span><br><span class=\"line\">137</span><br><span class=\"line\">138</span><br><span class=\"line\">139</span><br><span class=\"line\">140</span><br><span class=\"line\">141</span><br><span class=\"line\">142</span><br><span class=\"line\">143</span><br><span class=\"line\">144</span><br><span class=\"line\">145</span><br><span class=\"line\">146</span><br><span class=\"line\">147</span><br><span class=\"line\">148</span><br><span class=\"line\">149</span><br><span class=\"line\">150</span><br><span class=\"line\">151</span><br><span class=\"line\">152</span><br><span class=\"line\">153</span><br><span class=\"line\">154</span><br><span class=\"line\">155</span><br><span class=\"line\">156</span><br><span class=\"line\">157</span><br><span class=\"line\">158</span><br><span class=\"line\">159</span><br><span class=\"line\">160</span><br><span class=\"line\">161</span><br><span class=\"line\">162</span><br><span class=\"line\">163</span><br><span class=\"line\">164</span><br><span class=\"line\">165</span><br><span class=\"line\">166</span><br><span class=\"line\">167</span><br><span class=\"line\">168</span><br><span class=\"line\">169</span><br><span class=\"line\">170</span><br><span class=\"line\">171</span><br><span class=\"line\">172</span><br><span class=\"line\">173</span><br><span class=\"line\">174</span><br><span class=\"line\">175</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-meta\">#!/bin/bash</span><br><br><span class=\"hljs-comment\"># aria2伪装脚本 - 使用wget模拟aria2的基本功能</span><br><br><span class=\"hljs-comment\"># 显示帮助信息</span><br><span class=\"hljs-function\"><span class=\"hljs-title\">show_help</span></span>() {<br> <span class=\"hljs-built_in\">cat</span> << <span class=\"hljs-string\">EOF</span><br><span class=\"hljs-string\">用法: aria2c [选项]... [URL]...</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">使用wget模拟aria2下载器的基本功能</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">常用选项:</span><br><span class=\"hljs-string\"> -s, --split=N 分割下载段数(模拟,实际单线程)</span><br><span class=\"hljs-string\"> -j, --max-concurrent-downloads=N 最大并发下载数(模拟)</span><br><span class=\"hljs-string\"> -x, --max-connection-per-server=N 每服务器最大连接数(模拟)</span><br><span class=\"hljs-string\"> -k, --min-split-size=N 最小分割大小</span><br><span class=\"hljs-string\"> -c, --continue 断点续传</span><br><span class=\"hljs-string\"> -d, --dir=DIR 下载目录</span><br><span class=\"hljs-string\"> -o, --out=FILE 输出文件名</span><br><span class=\"hljs-string\"> -V, --version 显示版本信息</span><br><span class=\"hljs-string\"> -h, --help 显示此帮助信息</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">示例:</span><br><span class=\"hljs-string\"> aria2c http://example.com/file.zip</span><br><span class=\"hljs-string\"> aria2c -s 4 -c http://example.com/largefile.iso</span><br><span class=\"hljs-string\"> aria2c -o myfile.zip http://example.com/file.zip</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">注意: 这是一个使用wget的模拟脚本,并非真正的aria2</span><br><span class=\"hljs-string\">EOF</span><br>}<br><br><span class=\"hljs-comment\"># 显示版本信息</span><br><span class=\"hljs-function\"><span class=\"hljs-title\">show_version</span></span>() {<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"aria2c (伪装版) 1.0.0"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"使用wget <span class=\"hljs-variable\">${wget_version}</span> 作为后端"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"这是一个模拟aria2的伪装脚本"</span><br>}<br><br><span class=\"hljs-comment\"># 初始化变量</span><br>SPLIT=1<br>MAX_CONCURRENT=1<br>MAX_CONNECTION=1<br>CONTINUE=<span class=\"hljs-literal\">false</span><br>DOWNLOAD_DIR=<span class=\"hljs-string\">"."</span><br>OUTPUT_FILE=<span class=\"hljs-string\">""</span><br>URLS=()<br>WGET_ARGS=()<br>exit_code=0 <span class=\"hljs-comment\"># 初始化退出码</span><br><br><span class=\"hljs-comment\"># 获取wget版本</span><br>wget_version=$(wget --version | <span class=\"hljs-built_in\">head</span> -n1 | awk <span class=\"hljs-string\">'{print $3}'</span>)<br><br><span class=\"hljs-comment\"># 解析命令行参数</span><br><span class=\"hljs-keyword\">while</span> [[ <span class=\"hljs-variable\">$#</span> -gt 0 ]]; <span class=\"hljs-keyword\">do</span><br> <span class=\"hljs-keyword\">case</span> <span class=\"hljs-variable\">$1</span> <span class=\"hljs-keyword\">in</span><br> -s|--<span class=\"hljs-built_in\">split</span>)<br> SPLIT=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 分割下载设置为 <span class=\"hljs-variable\">${SPLIT}</span> 段(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -j|--max-concurrent-downloads)<br> MAX_CONCURRENT=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 最大并发下载数设置为 <span class=\"hljs-variable\">${MAX_CONCURRENT}</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -x|--max-connection-per-server)<br> MAX_CONNECTION=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 每服务器最大连接数设置为 <span class=\"hljs-variable\">${MAX_CONNECTION}</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -k|--min-split-size)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 最小分割大小设置为 <span class=\"hljs-variable\">$2</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -c|--<span class=\"hljs-built_in\">continue</span>)<br> CONTINUE=<span class=\"hljs-literal\">true</span><br> WGET_ARGS+=(<span class=\"hljs-string\">"-c"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 启用断点续传"</span><br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> -d|--<span class=\"hljs-built_in\">dir</span>)<br> DOWNLOAD_DIR=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> WGET_ARGS+=(<span class=\"hljs-string\">"-P"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span>)<br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -o|--out)<br> OUTPUT_FILE=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -V|--version)<br> show_version<br> <span class=\"hljs-built_in\">exit</span> 0<br> ;;<br> -h|--<span class=\"hljs-built_in\">help</span>)<br> show_help<br> <span class=\"hljs-built_in\">exit</span> 0<br> ;;<br> http://*|https://*|ftp://*)<br> URLS+=(<span class=\"hljs-string\">"<span class=\"hljs-variable\">$1</span>"</span>)<br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> *)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"警告: 忽略未知选项 '<span class=\"hljs-variable\">$1</span>'"</span><br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> <span class=\"hljs-keyword\">esac</span><br><span class=\"hljs-keyword\">done</span><br><br><span class=\"hljs-comment\"># 检查是否有URL提供</span><br><span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 0 ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"错误: 没有指定下载URL"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"使用 -h 选项查看帮助信息"</span><br> <span class=\"hljs-built_in\">exit</span> 1<br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-comment\"># 检查下载目录是否存在</span><br><span class=\"hljs-keyword\">if</span> [ ! -d <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"创建下载目录: <span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span><br> <span class=\"hljs-built_in\">mkdir</span> -p <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span><br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-comment\"># 模拟aria2的输出格式</span><br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Starting aria2c (伪装版) with wget backend"</span><br><br><span class=\"hljs-comment\"># 下载每个URL</span><br><span class=\"hljs-keyword\">for</span> url <span class=\"hljs-keyword\">in</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">${URLS[@]}</span>"</span>; <span class=\"hljs-keyword\">do</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Downloading: <span class=\"hljs-variable\">$url</span>"</span><br> <br> <span class=\"hljs-comment\"># 构建输出文件参数</span><br> current_wget_args=(<span class=\"hljs-string\">"<span class=\"hljs-variable\">${WGET_ARGS[@]}</span>"</span>)<br> <span class=\"hljs-keyword\">if</span> [ -n <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-comment\"># 如果指定了输出文件名,只对第一个URL使用,或者为每个URL生成唯一文件名</span><br> <span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 1 ] || [ <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span> == <span class=\"hljs-string\">"<span class=\"hljs-variable\">${URLS[0]}</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> current_wget_args+=(<span class=\"hljs-string\">"-O"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Output file: <span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span><br> <span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-comment\"># 多个URL时,为后续URL使用默认文件名</span><br> filename_from_url=$(<span class=\"hljs-built_in\">basename</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>)<br> current_wget_args+=(<span class=\"hljs-string\">"-O"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename_from_url</span>"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Output file: <span class=\"hljs-variable\">$filename_from_url</span>"</span><br> <span class=\"hljs-keyword\">fi</span><br> <span class=\"hljs-keyword\">fi</span><br> <br> <span class=\"hljs-comment\"># 执行wget下载</span><br> <span class=\"hljs-keyword\">if</span> wget <span class=\"hljs-string\">"<span class=\"hljs-variable\">${current_wget_args[@]}</span>"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Download complete: <span class=\"hljs-variable\">$url</span>"</span><br> <br> <span class=\"hljs-comment\"># 获取下载的文件信息</span><br> <span class=\"hljs-keyword\">if</span> [ -n <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span> ] && [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 1 ]; <span class=\"hljs-keyword\">then</span><br> filename=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span><br> <span class=\"hljs-keyword\">else</span><br> filename=$(<span class=\"hljs-built_in\">basename</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>)<br> <span class=\"hljs-keyword\">fi</span><br> <br> <span class=\"hljs-keyword\">if</span> [ -f <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> size=$(<span class=\"hljs-built_in\">stat</span> -c%s <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null || <span class=\"hljs-built_in\">stat</span> -f%z <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` File: <span class=\"hljs-variable\">$filename</span>, Size: <span class=\"hljs-variable\">$size</span> bytes"</span><br> <span class=\"hljs-keyword\">elif</span> [ -f <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> size=$(<span class=\"hljs-built_in\">stat</span> -c%s <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null || <span class=\"hljs-built_in\">stat</span> -f%z <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` File: <span class=\"hljs-variable\">$filename</span>, Size: <span class=\"hljs-variable\">$size</span> bytes"</span><br> <span class=\"hljs-keyword\">fi</span><br> <span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Download failed: <span class=\"hljs-variable\">$url</span>"</span><br> exit_code=1<br> <span class=\"hljs-comment\"># 不立即退出,继续尝试其他URL(如果有的话)</span><br> <span class=\"hljs-keyword\">fi</span><br><span class=\"hljs-keyword\">done</span><br><br><span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">$exit_code</span> -eq 0 ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` All downloads completed successfully"</span><br><span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Some downloads failed"</span><br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-built_in\">exit</span> <span class=\"hljs-variable\">$exit_code</span><br></code></pre></td></tr></table></figure>\n\n<h1 id=\"开始自动化运行\"><a href=\"#开始自动化运行\" class=\"headerlink\" title=\"开始自动化运行\"></a>开始自动化运行</h1><p>首先,参考此视频来学习BAAH的配置</p>\n<p><a href=\"https://www.bilibili.com/video/BV1ZxfGYSEVr/\">BiliBili - 糖糖-belief - 【蔚蓝档案电脑版】自动化碧蓝档案每日任务工具BAAH教程</a></p>\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=113877383648785&bvid=BV1ZxfGYSEVr&cid=28301724347&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n\n<p>在此环境下,配置基本相同,但是要修改一部分</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">adb devices<br></code></pre></td></tr></table></figure>\n\n<p>此命令用来获取序列号,若弹出授权提示,始终允许即可。作者的为 <code>emulate-5554</code></p>\n<p>将配置中的连接序列号改为你的设备。</p>\n<p>其他设置中adb路径改为 <code>/usr/bin/adb</code></p>\n<p>将aria2路径设置为 <code>/usr/bin/aria2c</code></p>\n<p>自动运行则使用MCSManager来提供</p>\n<h2 id=\"安装MCSManager\"><a href=\"#安装MCSManager\" class=\"headerlink\" title=\"安装MCSManager\"></a>安装MCSManager</h2><p>为啥要安装MCSManager,因为它可以提供像Windows计划任务程序的自动运行功能</p>\n<p>先用exit退出容器,然后再次进入容器,保证目录正确。</p>\n<p>首先,安装Nodejs</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">apt install -y nodejs-lts npm tmux<br>npm config <span class=\"hljs-built_in\">set</span> registry https://registry.npmmirror.com <span class=\"hljs-comment\">#配置镜像</span><br></code></pre></td></tr></table></figure>\n\n<p>然后,下载并安装MCSManager</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">wget https://v6.gh-proxy.com/https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz<br>tar --strip-components=1 -xzvf mcsmanager_linux_release.tar.gz<br><span class=\"hljs-built_in\">cd</span> mcsmanager<br>bash ./install.sh<br></code></pre></td></tr></table></figure>\n<p>然后运行MCSManager</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">tmux<br><br><span class=\"hljs-comment\"># 然后你会看到一个代底部绿条的终端,使用Ctrl+B,然后按Shift+“来分屏,使用Ctrl+B然后按上下键来切换光标</span><br><br><span class=\"hljs-comment\"># 第一个窗口内</span><br>bash ./start-daemon.sh<br><br><span class=\"hljs-comment\"># 第二个窗口内</span><br>bash ./start-web.sh<br></code></pre></td></tr></table></figure>\n\n<p>然后打开手机的浏览器,进入 <code>localhost:23333</code> 创建管理员账户和密码 <strong>一定要记住!非常重要!</strong></p>\n<p>然后新建一个实例,部署在 <strong>localhost:24444</strong></p>\n<p>程序类型选择 <strong>部署任意控制台程序</strong></p>\n<p>部署方式选择 <strong>无需额外文件</strong></p>\n<p>名称任意,运行命令输入 <code>bash ./run.sh</code></p>\n<p>创建完成后,进入文件管理,创建 <strong>run.sh</strong> 然后编辑,输入以下内容.</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">adb start-server<br><span class=\"hljs-built_in\">sleep</span> 5<br>adb devices<br>adb shell wm size 1280x720<br><span class=\"hljs-built_in\">cd</span> ~/BAAH<br><span class=\"hljs-built_in\">source</span> .venv/bin/activate<br>python3 jsoneditor.py <你的配置文件名><br>adb shell wm size reset<br>adb shell wm density reset<br></code></pre></td></tr></table></figure>\n\n<p>保存后,回到实例控制台,点击计划任务。</p>\n<p>点击新增,根据自己实际情况设置即可。</p>\n<hr>\n<p>enjoy</p>\n","excerpt":"","more":"<h1 id=\"前言\"><a href=\"#前言\" class=\"headerlink\" title=\"前言\"></a>前言</h1><p>这可以看成用手机搭建家庭服务器的DLC</p>\n<p>因为作为高中牲的作者要去上学了,而没有时间去肝BA,就想自动清日常,所以有了这篇文章。</p>\n<p>感谢 <strong>BAAH - 问题解答群</strong> 中的大佬帮助,有了这篇文章</p>\n<h1 id=\"环境概览\"><a href=\"#环境概览\" class=\"headerlink\" title=\"环境概览\"></a>环境概览</h1><p>Termux neofetch如下</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">~ $ neofetch<br><br> -o o- u0_a224@localhost <br> +hydNNNNdyh+ ----------------- <br> +mMMMMMMMMMMMMm+ OS: Android 10 aarch64 <br> `dMMm:NMMMMMMN:mMMd` Host: HUAWEI ELE-AL00 <br> hMMMMMMMMMMMMMMMMMMh Kernel: 4.14.116 <br> .. yyyyyyyyyyyyyyyyyyyy .. Uptime: 6 days, 22 hours, 43 mins <br>.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm. Packages: 364 (dpkg), 1 (pkg) <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Shell: zsh 5.9 <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Terminal: /dev/pts/8 <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: CPU: vendor Kirin980 (8) @ 1.805GHz <br>:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM: Memory: 4868MiB / 7606MiB <br>-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-<br> +yy+ MMMMMMMMMMMMMMMMMMMM +yy+ <br> mMMMMMMMMMMMMMMMMMMm <br> `/++MMMMh++hMMMM++/`<br> MMMMo oMMMM<br> MMMMo oMMMM<br> oNMm- -mMNs<br></code></pre></td></tr></table></figure>\n\n<p>由于直接在termux裸环境下部署会出现轮子构建问题,所以全程在proot容器中运行</p>\n<h1 id=\"开始部署\"><a href=\"#开始部署\" class=\"headerlink\" title=\"开始部署\"></a>开始部署</h1><p>首先,你需要使用shizuku来提供一个模拟设备序列号</p>\n<p><a href=\"https://shizuku.rikka.app/zh-hans/guide/setup/\">https://shizuku.rikka.app/zh-hans/guide/setup/</a></p>\n<h2 id=\"创建容器\"><a href=\"#创建容器\" class=\"headerlink\" title=\"创建容器\"></a>创建容器</h2><p>由于proot-distro的容器源在Github,国内连接困难,所以使用tmoe进行安装</p>\n<p>我目前认为你已经对termux环境有了基本的配置,如换源等</p>\n<p>在终端下运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">pkg install curl -y<br>curl -LO https://gitee.com/mo2/linux/raw/2/2.awk; awk -f 2.awk<br></code></pre></td></tr></table></figure>\n\n<p>如果使用zerotermux则可以直接在侧栏中找到</p>\n<p>这里,有视频教程来安装容器</p>\n<p><a href=\"https://www.bilibili.com/video/BV16u4y1M7yG\">BiliBili - 在下莫老师 - 坏了,这回手机真变电脑了!给手机安装Linux系统,变身生产力神器</a></p>\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=922458285&bvid=BV16u4y1M7yG&cid=1373006711&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n\n<p>不过,需要安装Ubuntu 24.04 LTS容器,此容器提供符合BAAH运行的Python3.12</p>\n<p>容器建议不创建sudo用户,不配置zsh,删除zsh-i,运行tmoe tools,出现CUI后使用方向键和回车退出。</p>\n<p>然后你将会见到 <code>root@localhost ~ #</code></p>\n<p>这时,连续输入三次 <code>exit</code> 并回车,当看见 <code>Press Enter to continue</code> 时回车两次重新进入容器以避免莫名其妙的bug</p>\n<h2 id=\"获取源码,创建虚拟环境\"><a href=\"#获取源码,创建虚拟环境\" class=\"headerlink\" title=\"获取源码,创建虚拟环境\"></a>获取源码,创建虚拟环境</h2><p>运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">apt-get update<br>apt-get install python3-full git adb -y<br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/sammusen/BAAH.git<br><span class=\"hljs-built_in\">cd</span> BAAH<br>python -m venv .venv <span class=\"hljs-comment\"># 创建虚拟环境,解决PEP 668</span><br><span class=\"hljs-built_in\">source</span> .venv/bin/activate <span class=\"hljs-comment\"># 激活虚拟环境</span><br></code></pre></td></tr></table></figure>\n\n<p>之后,你可以看到你的shell变成了 <code>(.venv) root@localhost ~/BAAH #</code></p>\n<h2 id=\"安装依赖\"><a href=\"#安装依赖\" class=\"headerlink\" title=\"安装依赖\"></a>安装依赖</h2><p>由于python3.12移除了部分包的老版本,需要修改依赖列表来强行兼容。</p>\n<p>tips:ubuntu上游python的更新可能使配置的依赖随时失效,可以在群内@BlockHaity</p>\n<p>在终端内运行 <code>nano requirements.txt</code></p>\n<p>然后找到 <code>onnxruntime</code> 将右边的数字改为 1.17.0</p>\n<p>然后按下 ctrl + o 后按下 ctrl + x 保存并退出</p>\n<p>接下来运行下列命令安装依赖</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">pip install -i https://mirrors.ustc.edu.cn/pypi/simple pip -U<br>pip config <span class=\"hljs-built_in\">set</span> global.index-url https://mirrors.ustc.edu.cn/pypi/simple<br>pip install -r requirements.txt<br></code></pre></td></tr></table></figure>\n<p>这时,基本配置好了,可以使用 <code>python3 jsoneditor.py --host <局域网ip> --port 8000</code> 来运行webui</p>\n<h2 id=\"排障\"><a href=\"#排障\" class=\"headerlink\" title=\"排障\"></a>排障</h2><h3 id=\"无法运行\"><a href=\"#无法运行\" class=\"headerlink\" title=\"无法运行\"></a>无法运行</h3><p>在作者的手机上出现了这个问题</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse the list of possible processors <span class=\"hljs-keyword\">in</span> /sys/devices/system/cpu/possible<br>Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse the list of present processors <span class=\"hljs-keyword\">in</span> /sys/devices/system/cpu/present<br>Error <span class=\"hljs-keyword\">in</span> cpuinfo: failed to parse both lists of possible and present processors<br>terminate called after throwing an instance of <span class=\"hljs-string\">'onnxruntime::OnnxRuntimeException'</span><br> what(): /onnxruntime_src/include/onnxruntime/core/common/logging/logging.h:309 static const onnxruntime::logging::Logger& onnxruntime::logging::LoggingManager::DefaultLogger() Attempt to use DefaultLogger but none has been registered.<br><br>已中止<br></code></pre></td></tr></table></figure>\n\n<p>deepseek给出的回答为cpuinfo库解析处理器信息失败,而事实上文件并不存在。</p>\n<p>所以需要伪造文件</p>\n<p>输入 <code>exit</code> 并回车,然后不断选择最下面的项目,退出tmoe。</p>\n<p>然后运行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">cd</span> .<span class=\"hljs-built_in\">local</span>/share/tmoe-linux/containers/proot/ubuntu-noble_arm64/sys<br><span class=\"hljs-built_in\">mkdir</span> devices<br><span class=\"hljs-built_in\">cd</span> devices<br><span class=\"hljs-built_in\">mkdir</span> system<br><span class=\"hljs-built_in\">cd</span> system<br><span class=\"hljs-built_in\">mkdir</span> cpu<br><span class=\"hljs-built_in\">cd</span> cpu<br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"0-7"</span> > possible <span class=\"hljs-comment\"># 0-7应填写soc的实际情况,如为8核心soc,则填写0-7,超线程情况下应填写0-实际线程数减1</span><br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"0-7"</span> > present<br><span class=\"hljs-built_in\">cd</span> ~<br></code></pre></td></tr></table></figure>\n\n<p>然后运行下列命令进入环境</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">debian<br><span class=\"hljs-built_in\">cd</span> BAAH<br><span class=\"hljs-built_in\">source</span> .venv/bin/activate<br></code></pre></td></tr></table></figure>\n\n<p>这时应该可以运行webui了。</p>\n<h3 id=\"aria2无法下载\"><a href=\"#aria2无法下载\" class=\"headerlink\" title=\"aria2无法下载\"></a>aria2无法下载</h3><p>在proot环境中,aria2是无法正确发送请求的,也无法下载,所以。我们需要把wget伪装成aria2</p>\n<p>首先,在容器内运行下面的命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">sudo <span class=\"hljs-built_in\">touch</span> /usr/bin/aria2c<br>sudo <span class=\"hljs-built_in\">chmod</span> 777 /usr/bin/aria2c<br></code></pre></td></tr></table></figure>\n\n<p>然后,用<code>nano /usr/share/aria2c</code> 来编辑文件,写入下面内容</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br><span class=\"line\">66</span><br><span class=\"line\">67</span><br><span class=\"line\">68</span><br><span class=\"line\">69</span><br><span class=\"line\">70</span><br><span class=\"line\">71</span><br><span class=\"line\">72</span><br><span class=\"line\">73</span><br><span class=\"line\">74</span><br><span class=\"line\">75</span><br><span class=\"line\">76</span><br><span class=\"line\">77</span><br><span class=\"line\">78</span><br><span class=\"line\">79</span><br><span class=\"line\">80</span><br><span class=\"line\">81</span><br><span class=\"line\">82</span><br><span class=\"line\">83</span><br><span class=\"line\">84</span><br><span class=\"line\">85</span><br><span class=\"line\">86</span><br><span class=\"line\">87</span><br><span class=\"line\">88</span><br><span class=\"line\">89</span><br><span class=\"line\">90</span><br><span class=\"line\">91</span><br><span class=\"line\">92</span><br><span class=\"line\">93</span><br><span class=\"line\">94</span><br><span class=\"line\">95</span><br><span class=\"line\">96</span><br><span class=\"line\">97</span><br><span class=\"line\">98</span><br><span class=\"line\">99</span><br><span class=\"line\">100</span><br><span class=\"line\">101</span><br><span class=\"line\">102</span><br><span class=\"line\">103</span><br><span class=\"line\">104</span><br><span class=\"line\">105</span><br><span class=\"line\">106</span><br><span class=\"line\">107</span><br><span class=\"line\">108</span><br><span class=\"line\">109</span><br><span class=\"line\">110</span><br><span class=\"line\">111</span><br><span class=\"line\">112</span><br><span class=\"line\">113</span><br><span class=\"line\">114</span><br><span class=\"line\">115</span><br><span class=\"line\">116</span><br><span class=\"line\">117</span><br><span class=\"line\">118</span><br><span class=\"line\">119</span><br><span class=\"line\">120</span><br><span class=\"line\">121</span><br><span class=\"line\">122</span><br><span class=\"line\">123</span><br><span class=\"line\">124</span><br><span class=\"line\">125</span><br><span class=\"line\">126</span><br><span class=\"line\">127</span><br><span class=\"line\">128</span><br><span class=\"line\">129</span><br><span class=\"line\">130</span><br><span class=\"line\">131</span><br><span class=\"line\">132</span><br><span class=\"line\">133</span><br><span class=\"line\">134</span><br><span class=\"line\">135</span><br><span class=\"line\">136</span><br><span class=\"line\">137</span><br><span class=\"line\">138</span><br><span class=\"line\">139</span><br><span class=\"line\">140</span><br><span class=\"line\">141</span><br><span class=\"line\">142</span><br><span class=\"line\">143</span><br><span class=\"line\">144</span><br><span class=\"line\">145</span><br><span class=\"line\">146</span><br><span class=\"line\">147</span><br><span class=\"line\">148</span><br><span class=\"line\">149</span><br><span class=\"line\">150</span><br><span class=\"line\">151</span><br><span class=\"line\">152</span><br><span class=\"line\">153</span><br><span class=\"line\">154</span><br><span class=\"line\">155</span><br><span class=\"line\">156</span><br><span class=\"line\">157</span><br><span class=\"line\">158</span><br><span class=\"line\">159</span><br><span class=\"line\">160</span><br><span class=\"line\">161</span><br><span class=\"line\">162</span><br><span class=\"line\">163</span><br><span class=\"line\">164</span><br><span class=\"line\">165</span><br><span class=\"line\">166</span><br><span class=\"line\">167</span><br><span class=\"line\">168</span><br><span class=\"line\">169</span><br><span class=\"line\">170</span><br><span class=\"line\">171</span><br><span class=\"line\">172</span><br><span class=\"line\">173</span><br><span class=\"line\">174</span><br><span class=\"line\">175</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-meta\">#!/bin/bash</span><br><br><span class=\"hljs-comment\"># aria2伪装脚本 - 使用wget模拟aria2的基本功能</span><br><br><span class=\"hljs-comment\"># 显示帮助信息</span><br><span class=\"hljs-function\"><span class=\"hljs-title\">show_help</span></span>() {<br> <span class=\"hljs-built_in\">cat</span> << <span class=\"hljs-string\">EOF</span><br><span class=\"hljs-string\">用法: aria2c [选项]... [URL]...</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">使用wget模拟aria2下载器的基本功能</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">常用选项:</span><br><span class=\"hljs-string\"> -s, --split=N 分割下载段数(模拟,实际单线程)</span><br><span class=\"hljs-string\"> -j, --max-concurrent-downloads=N 最大并发下载数(模拟)</span><br><span class=\"hljs-string\"> -x, --max-connection-per-server=N 每服务器最大连接数(模拟)</span><br><span class=\"hljs-string\"> -k, --min-split-size=N 最小分割大小</span><br><span class=\"hljs-string\"> -c, --continue 断点续传</span><br><span class=\"hljs-string\"> -d, --dir=DIR 下载目录</span><br><span class=\"hljs-string\"> -o, --out=FILE 输出文件名</span><br><span class=\"hljs-string\"> -V, --version 显示版本信息</span><br><span class=\"hljs-string\"> -h, --help 显示此帮助信息</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">示例:</span><br><span class=\"hljs-string\"> aria2c http://example.com/file.zip</span><br><span class=\"hljs-string\"> aria2c -s 4 -c http://example.com/largefile.iso</span><br><span class=\"hljs-string\"> aria2c -o myfile.zip http://example.com/file.zip</span><br><span class=\"hljs-string\"></span><br><span class=\"hljs-string\">注意: 这是一个使用wget的模拟脚本,并非真正的aria2</span><br><span class=\"hljs-string\">EOF</span><br>}<br><br><span class=\"hljs-comment\"># 显示版本信息</span><br><span class=\"hljs-function\"><span class=\"hljs-title\">show_version</span></span>() {<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"aria2c (伪装版) 1.0.0"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"使用wget <span class=\"hljs-variable\">${wget_version}</span> 作为后端"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"这是一个模拟aria2的伪装脚本"</span><br>}<br><br><span class=\"hljs-comment\"># 初始化变量</span><br>SPLIT=1<br>MAX_CONCURRENT=1<br>MAX_CONNECTION=1<br>CONTINUE=<span class=\"hljs-literal\">false</span><br>DOWNLOAD_DIR=<span class=\"hljs-string\">"."</span><br>OUTPUT_FILE=<span class=\"hljs-string\">""</span><br>URLS=()<br>WGET_ARGS=()<br>exit_code=0 <span class=\"hljs-comment\"># 初始化退出码</span><br><br><span class=\"hljs-comment\"># 获取wget版本</span><br>wget_version=$(wget --version | <span class=\"hljs-built_in\">head</span> -n1 | awk <span class=\"hljs-string\">'{print $3}'</span>)<br><br><span class=\"hljs-comment\"># 解析命令行参数</span><br><span class=\"hljs-keyword\">while</span> [[ <span class=\"hljs-variable\">$#</span> -gt 0 ]]; <span class=\"hljs-keyword\">do</span><br> <span class=\"hljs-keyword\">case</span> <span class=\"hljs-variable\">$1</span> <span class=\"hljs-keyword\">in</span><br> -s|--<span class=\"hljs-built_in\">split</span>)<br> SPLIT=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 分割下载设置为 <span class=\"hljs-variable\">${SPLIT}</span> 段(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -j|--max-concurrent-downloads)<br> MAX_CONCURRENT=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 最大并发下载数设置为 <span class=\"hljs-variable\">${MAX_CONCURRENT}</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -x|--max-connection-per-server)<br> MAX_CONNECTION=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 每服务器最大连接数设置为 <span class=\"hljs-variable\">${MAX_CONNECTION}</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -k|--min-split-size)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 最小分割大小设置为 <span class=\"hljs-variable\">$2</span>(模拟)"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -c|--<span class=\"hljs-built_in\">continue</span>)<br> CONTINUE=<span class=\"hljs-literal\">true</span><br> WGET_ARGS+=(<span class=\"hljs-string\">"-c"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"信息: 启用断点续传"</span><br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> -d|--<span class=\"hljs-built_in\">dir</span>)<br> DOWNLOAD_DIR=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> WGET_ARGS+=(<span class=\"hljs-string\">"-P"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span>)<br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -o|--out)<br> OUTPUT_FILE=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$2</span>"</span><br> <span class=\"hljs-built_in\">shift</span> 2<br> ;;<br> -V|--version)<br> show_version<br> <span class=\"hljs-built_in\">exit</span> 0<br> ;;<br> -h|--<span class=\"hljs-built_in\">help</span>)<br> show_help<br> <span class=\"hljs-built_in\">exit</span> 0<br> ;;<br> http://*|https://*|ftp://*)<br> URLS+=(<span class=\"hljs-string\">"<span class=\"hljs-variable\">$1</span>"</span>)<br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> *)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"警告: 忽略未知选项 '<span class=\"hljs-variable\">$1</span>'"</span><br> <span class=\"hljs-built_in\">shift</span><br> ;;<br> <span class=\"hljs-keyword\">esac</span><br><span class=\"hljs-keyword\">done</span><br><br><span class=\"hljs-comment\"># 检查是否有URL提供</span><br><span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 0 ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"错误: 没有指定下载URL"</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"使用 -h 选项查看帮助信息"</span><br> <span class=\"hljs-built_in\">exit</span> 1<br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-comment\"># 检查下载目录是否存在</span><br><span class=\"hljs-keyword\">if</span> [ ! -d <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"创建下载目录: <span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span><br> <span class=\"hljs-built_in\">mkdir</span> -p <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>"</span><br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-comment\"># 模拟aria2的输出格式</span><br><span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Starting aria2c (伪装版) with wget backend"</span><br><br><span class=\"hljs-comment\"># 下载每个URL</span><br><span class=\"hljs-keyword\">for</span> url <span class=\"hljs-keyword\">in</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">${URLS[@]}</span>"</span>; <span class=\"hljs-keyword\">do</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Downloading: <span class=\"hljs-variable\">$url</span>"</span><br> <br> <span class=\"hljs-comment\"># 构建输出文件参数</span><br> current_wget_args=(<span class=\"hljs-string\">"<span class=\"hljs-variable\">${WGET_ARGS[@]}</span>"</span>)<br> <span class=\"hljs-keyword\">if</span> [ -n <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-comment\"># 如果指定了输出文件名,只对第一个URL使用,或者为每个URL生成唯一文件名</span><br> <span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 1 ] || [ <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span> == <span class=\"hljs-string\">"<span class=\"hljs-variable\">${URLS[0]}</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> current_wget_args+=(<span class=\"hljs-string\">"-O"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Output file: <span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span><br> <span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-comment\"># 多个URL时,为后续URL使用默认文件名</span><br> filename_from_url=$(<span class=\"hljs-built_in\">basename</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>)<br> current_wget_args+=(<span class=\"hljs-string\">"-O"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename_from_url</span>"</span>)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Output file: <span class=\"hljs-variable\">$filename_from_url</span>"</span><br> <span class=\"hljs-keyword\">fi</span><br> <span class=\"hljs-keyword\">fi</span><br> <br> <span class=\"hljs-comment\"># 执行wget下载</span><br> <span class=\"hljs-keyword\">if</span> wget <span class=\"hljs-string\">"<span class=\"hljs-variable\">${current_wget_args[@]}</span>"</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Download complete: <span class=\"hljs-variable\">$url</span>"</span><br> <br> <span class=\"hljs-comment\"># 获取下载的文件信息</span><br> <span class=\"hljs-keyword\">if</span> [ -n <span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span> ] && [ <span class=\"hljs-variable\">${#URLS[@]}</span> -eq 1 ]; <span class=\"hljs-keyword\">then</span><br> filename=<span class=\"hljs-string\">"<span class=\"hljs-variable\">$OUTPUT_FILE</span>"</span><br> <span class=\"hljs-keyword\">else</span><br> filename=$(<span class=\"hljs-built_in\">basename</span> <span class=\"hljs-string\">"<span class=\"hljs-variable\">$url</span>"</span>)<br> <span class=\"hljs-keyword\">fi</span><br> <br> <span class=\"hljs-keyword\">if</span> [ -f <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> size=$(<span class=\"hljs-built_in\">stat</span> -c%s <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null || <span class=\"hljs-built_in\">stat</span> -f%z <span class=\"hljs-string\">"<span class=\"hljs-variable\">$DOWNLOAD_DIR</span>/<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` File: <span class=\"hljs-variable\">$filename</span>, Size: <span class=\"hljs-variable\">$size</span> bytes"</span><br> <span class=\"hljs-keyword\">elif</span> [ -f <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> ]; <span class=\"hljs-keyword\">then</span><br> size=$(<span class=\"hljs-built_in\">stat</span> -c%s <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null || <span class=\"hljs-built_in\">stat</span> -f%z <span class=\"hljs-string\">"<span class=\"hljs-variable\">$filename</span>"</span> 2>/dev/null)<br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` File: <span class=\"hljs-variable\">$filename</span>, Size: <span class=\"hljs-variable\">$size</span> bytes"</span><br> <span class=\"hljs-keyword\">fi</span><br> <span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Download failed: <span class=\"hljs-variable\">$url</span>"</span><br> exit_code=1<br> <span class=\"hljs-comment\"># 不立即退出,继续尝试其他URL(如果有的话)</span><br> <span class=\"hljs-keyword\">fi</span><br><span class=\"hljs-keyword\">done</span><br><br><span class=\"hljs-keyword\">if</span> [ <span class=\"hljs-variable\">$exit_code</span> -eq 0 ]; <span class=\"hljs-keyword\">then</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` All downloads completed successfully"</span><br><span class=\"hljs-keyword\">else</span><br> <span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">"`date +'%Y-%m-%d %H:%M:%S'` Some downloads failed"</span><br><span class=\"hljs-keyword\">fi</span><br><br><span class=\"hljs-built_in\">exit</span> <span class=\"hljs-variable\">$exit_code</span><br></code></pre></td></tr></table></figure>\n\n<h1 id=\"开始自动化运行\"><a href=\"#开始自动化运行\" class=\"headerlink\" title=\"开始自动化运行\"></a>开始自动化运行</h1><p>首先,参考此视频来学习BAAH的配置</p>\n<p><a href=\"https://www.bilibili.com/video/BV1ZxfGYSEVr/\">BiliBili - 糖糖-belief - 【蔚蓝档案电脑版】自动化碧蓝档案每日任务工具BAAH教程</a></p>\n\n<div style=\"position: relative; width: 100%; height: 0; padding-bottom: 75%;\">\n<iframe src=\"//player.bilibili.com/player.html?isOutside=true&aid=113877383648785&bvid=BV1ZxfGYSEVr&cid=28301724347&p=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\" style=\"position: absolute; width: 100%; height: 100%; Left: 0; top: 0;\" ></iframe></div>\n\n\n<p>在此环境下,配置基本相同,但是要修改一部分</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">adb devices<br></code></pre></td></tr></table></figure>\n\n<p>此命令用来获取序列号,若弹出授权提示,始终允许即可。作者的为 <code>emulate-5554</code></p>\n<p>将配置中的连接序列号改为你的设备。</p>\n<p>其他设置中adb路径改为 <code>/usr/bin/adb</code></p>\n<p>将aria2路径设置为 <code>/usr/bin/aria2c</code></p>\n<p>自动运行则使用MCSManager来提供</p>\n<h2 id=\"安装MCSManager\"><a href=\"#安装MCSManager\" class=\"headerlink\" title=\"安装MCSManager\"></a>安装MCSManager</h2><p>为啥要安装MCSManager,因为它可以提供像Windows计划任务程序的自动运行功能</p>\n<p>先用exit退出容器,然后再次进入容器,保证目录正确。</p>\n<p>首先,安装Nodejs</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">apt install -y nodejs-lts npm tmux<br>npm config <span class=\"hljs-built_in\">set</span> registry https://registry.npmmirror.com <span class=\"hljs-comment\">#配置镜像</span><br></code></pre></td></tr></table></figure>\n\n<p>然后,下载并安装MCSManager</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">wget https://v6.gh-proxy.com/https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz<br>tar --strip-components=1 -xzvf mcsmanager_linux_release.tar.gz<br><span class=\"hljs-built_in\">cd</span> mcsmanager<br>bash ./install.sh<br></code></pre></td></tr></table></figure>\n<p>然后运行MCSManager</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">tmux<br><br><span class=\"hljs-comment\"># 然后你会看到一个代底部绿条的终端,使用Ctrl+B,然后按Shift+“来分屏,使用Ctrl+B然后按上下键来切换光标</span><br><br><span class=\"hljs-comment\"># 第一个窗口内</span><br>bash ./start-daemon.sh<br><br><span class=\"hljs-comment\"># 第二个窗口内</span><br>bash ./start-web.sh<br></code></pre></td></tr></table></figure>\n\n<p>然后打开手机的浏览器,进入 <code>localhost:23333</code> 创建管理员账户和密码 <strong>一定要记住!非常重要!</strong></p>\n<p>然后新建一个实例,部署在 <strong>localhost:24444</strong></p>\n<p>程序类型选择 <strong>部署任意控制台程序</strong></p>\n<p>部署方式选择 <strong>无需额外文件</strong></p>\n<p>名称任意,运行命令输入 <code>bash ./run.sh</code></p>\n<p>创建完成后,进入文件管理,创建 <strong>run.sh</strong> 然后编辑,输入以下内容.</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">adb start-server<br><span class=\"hljs-built_in\">sleep</span> 5<br>adb devices<br>adb shell wm size 1280x720<br><span class=\"hljs-built_in\">cd</span> ~/BAAH<br><span class=\"hljs-built_in\">source</span> .venv/bin/activate<br>python3 jsoneditor.py <你的配置文件名><br>adb shell wm size reset<br>adb shell wm density reset<br></code></pre></td></tr></table></figure>\n\n<p>保存后,回到实例控制台,点击计划任务。</p>\n<p>点击新增,根据自己实际情况设置即可。</p>\n<hr>\n<p>enjoy</p>\n"},{"title":"XPVPer 一个专注于美观和PVP的Minecraft整合包","date":"2023-06-30T23:44:12.000Z","_content":"\n{%raw%}\n<h1 align=\"center\">\n <br>\n <img src=\"https://s1.ax1x.com/2023/06/07/pCFC7dK.png\"/></a>\n <br>\n XPVPer\n <br>\n</h1>\n<h2 align=\"center\">一个专注于美观和PVP的Minecraft整合包</h2>\n{%endraw%}\n\n[项目主页](https://github.com/BlockHaity/XPVPer)\n\n# XPVPer是什么\n\nXPVPer是一个基于Minecraft Java Edition 1.8.9,Forge,LabyMOD制作的整合包\n\n**注意!!!XPVPer不是Minecraft客户端,更不会成为Minecraft客户端**\n\n# 有什么亮点\n\n*注:以下内容皆以原版作为比较*\n\n## 更加美观的UI\n\n[](https://imgse.com/i/pCFLKqe)\n\n*左侧为XPVPer右侧为原版Minecraft*\n\n[](https://imgse.com/i/pCFXaNj)\n\n使用FancyMenu,Blur,LabyMOD等MOD实现。\n\n## 高度的可自定义性\n\n作者不封死包括FancyMenu的配置栏 ~~(虽然真的很丑)~~ ,UI资源包在内的所有自定义项,给用户完全的界面自由。\n\n[](https://imgse.com/i/pCFX5gx)\n\n[](https://imgse.com/i/pCFXO5d)\n\n## 还有更多等待挖掘。。。\n\n# 如何安装使用\n\n1. MCBBS整合包格式安装。含有HMCL的压缩包安装。\n 参照 [Releases](https://github.com/BlockHaity/XPVPer/releases) 给出的教程即可。\n\n2. 命令行安装\n 参照 [Runner分支](https://github.com/BlockHaity/XPVPer/tree/Runner) 进行操作即可\n\n# 如何为此项目做贡献\n\n## 发现Bug\n\n发现Bug后在 [Discussions](https://github.com/BlockHaity/XPVPer/discussions) 内进行发帖讨论,获得解决方案后提交issuse。\n\n## 提出建议\n\n在 [Discussions](https://github.com/BlockHaity/XPVPer/discussions) 内提出你的建议,探讨出解决方案后提交Issuse\n\n## 直接动手改代码(PR)\n\n在根目录新建一个 `PR.md` 用来描述你做的改动和实现的功能,后提交PR\n\n## 为什么采用先讨论得到方案后再提交issuse的方式\n\n作者是一名学生,没有太多时间来探讨解决方案,并且作者不太会Java等语言。这样做就可以提升此项目修复Bug的速度。\n\n# 已知Bug\n\n## 在进入 **单人游戏** 或 **多人游戏** 界面后调整窗口大小会导致界面错位的问题。\n\n影响评级:高\n\n是否可以解决:否\n\n原因:该Bug是由FancyMenu所导致的,而适用于Minecraft 1.8.9 Forge的FancyMenu已经停更。无法通过除改源代码的方法修复。\n\n治标不治本的方案:先最大化窗口再进入 **单人游戏** 或 **多人游戏** 界面,在后续使用中尽量避免拉伸窗口。\n\n# 相关问答\n\nQ:为什么不制作Minecraft客户端,它明明比整合包更加好\n\nA:首要原因:不会写。次要原因:我认为不自由,Minecraft客户端只能让用户关闭功能,而不能删除功能。而整合包可以让用户直接删除一些功能。高度模块化是我喜欢的一种制作表现,当然这是有代价的,这样制作无法深度修改Minecraft。\n\nQ:XPVPer含不含有作弊功能\n\nA:没有,作者甚至想通过客户端文件覆盖的方法来反作弊,但一直没有一个有效的方案 ~~至少要防个水影和VAPE~~\n","source":"_posts/XPVPer-一个专注于美观和PVP的Minecraft整合包.md","raw":"---\ntitle: XPVPer 一个专注于美观和PVP的Minecraft整合包\ntags:\n - Minecraft\ncategories:\n - 自制项目\ndate: 2023-07-01 07:44:12\n---\n\n{%raw%}\n<h1 align=\"center\">\n <br>\n <img src=\"https://s1.ax1x.com/2023/06/07/pCFC7dK.png\"/></a>\n <br>\n XPVPer\n <br>\n</h1>\n<h2 align=\"center\">一个专注于美观和PVP的Minecraft整合包</h2>\n{%endraw%}\n\n[项目主页](https://github.com/BlockHaity/XPVPer)\n\n# XPVPer是什么\n\nXPVPer是一个基于Minecraft Java Edition 1.8.9,Forge,LabyMOD制作的整合包\n\n**注意!!!XPVPer不是Minecraft客户端,更不会成为Minecraft客户端**\n\n# 有什么亮点\n\n*注:以下内容皆以原版作为比较*\n\n## 更加美观的UI\n\n[](https://imgse.com/i/pCFLKqe)\n\n*左侧为XPVPer右侧为原版Minecraft*\n\n[](https://imgse.com/i/pCFXaNj)\n\n使用FancyMenu,Blur,LabyMOD等MOD实现。\n\n## 高度的可自定义性\n\n作者不封死包括FancyMenu的配置栏 ~~(虽然真的很丑)~~ ,UI资源包在内的所有自定义项,给用户完全的界面自由。\n\n[](https://imgse.com/i/pCFX5gx)\n\n[](https://imgse.com/i/pCFXO5d)\n\n## 还有更多等待挖掘。。。\n\n# 如何安装使用\n\n1. MCBBS整合包格式安装。含有HMCL的压缩包安装。\n 参照 [Releases](https://github.com/BlockHaity/XPVPer/releases) 给出的教程即可。\n\n2. 命令行安装\n 参照 [Runner分支](https://github.com/BlockHaity/XPVPer/tree/Runner) 进行操作即可\n\n# 如何为此项目做贡献\n\n## 发现Bug\n\n发现Bug后在 [Discussions](https://github.com/BlockHaity/XPVPer/discussions) 内进行发帖讨论,获得解决方案后提交issuse。\n\n## 提出建议\n\n在 [Discussions](https://github.com/BlockHaity/XPVPer/discussions) 内提出你的建议,探讨出解决方案后提交Issuse\n\n## 直接动手改代码(PR)\n\n在根目录新建一个 `PR.md` 用来描述你做的改动和实现的功能,后提交PR\n\n## 为什么采用先讨论得到方案后再提交issuse的方式\n\n作者是一名学生,没有太多时间来探讨解决方案,并且作者不太会Java等语言。这样做就可以提升此项目修复Bug的速度。\n\n# 已知Bug\n\n## 在进入 **单人游戏** 或 **多人游戏** 界面后调整窗口大小会导致界面错位的问题。\n\n影响评级:高\n\n是否可以解决:否\n\n原因:该Bug是由FancyMenu所导致的,而适用于Minecraft 1.8.9 Forge的FancyMenu已经停更。无法通过除改源代码的方法修复。\n\n治标不治本的方案:先最大化窗口再进入 **单人游戏** 或 **多人游戏** 界面,在后续使用中尽量避免拉伸窗口。\n\n# 相关问答\n\nQ:为什么不制作Minecraft客户端,它明明比整合包更加好\n\nA:首要原因:不会写。次要原因:我认为不自由,Minecraft客户端只能让用户关闭功能,而不能删除功能。而整合包可以让用户直接删除一些功能。高度模块化是我喜欢的一种制作表现,当然这是有代价的,这样制作无法深度修改Minecraft。\n\nQ:XPVPer含不含有作弊功能\n\nA:没有,作者甚至想通过客户端文件覆盖的方法来反作弊,但一直没有一个有效的方案 ~~至少要防个水影和VAPE~~\n","slug":"XPVPer-一个专注于美观和PVP的Minecraft整合包","published":1,"updated":"2025-06-11T01:43:02.213Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn20004yblv2r54edo1","content":"\n<h1 align=\"center\">\n <br>\n <img src=\"https://s1.ax1x.com/2023/06/07/pCFC7dK.png\"/></a>\n <br>\n XPVPer\n <br>\n</h1>\n<h2 align=\"center\">一个专注于美观和PVP的Minecraft整合包</h2>\n\n\n<p><a href=\"https://github.com/BlockHaity/XPVPer\">项目主页</a></p>\n<h1 id=\"XPVPer是什么\"><a href=\"#XPVPer是什么\" class=\"headerlink\" title=\"XPVPer是什么\"></a>XPVPer是什么</h1><p>XPVPer是一个基于Minecraft Java Edition 1.8.9,Forge,LabyMOD制作的整合包</p>\n<p><strong>注意!!!XPVPer不是Minecraft客户端,更不会成为Minecraft客户端</strong></p>\n<h1 id=\"有什么亮点\"><a href=\"#有什么亮点\" class=\"headerlink\" title=\"有什么亮点\"></a>有什么亮点</h1><p><em>注:以下内容皆以原版作为比较</em></p>\n<h2 id=\"更加美观的UI\"><a href=\"#更加美观的UI\" class=\"headerlink\" title=\"更加美观的UI\"></a>更加美观的UI</h2><p><a href=\"https://imgse.com/i/pCFLKqe\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFLKqe.png\" alt=\"pCFLKqe.png\"></a></p>\n<p><em>左侧为XPVPer右侧为原版Minecraft</em></p>\n<p><a href=\"https://imgse.com/i/pCFXaNj\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFXaNj.png\" alt=\"pCFXaNj.png\"></a></p>\n<p>使用FancyMenu,Blur,LabyMOD等MOD实现。</p>\n<h2 id=\"高度的可自定义性\"><a href=\"#高度的可自定义性\" class=\"headerlink\" title=\"高度的可自定义性\"></a>高度的可自定义性</h2><p>作者不封死包括FancyMenu的配置栏 <del>(虽然真的很丑)</del> ,UI资源包在内的所有自定义项,给用户完全的界面自由。</p>\n<p><a href=\"https://imgse.com/i/pCFX5gx\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFX5gx.png\" alt=\"pCFX5gx.png\"></a></p>\n<p><a href=\"https://imgse.com/i/pCFXO5d\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFXO5d.png\" alt=\"pCFXO5d.png\"></a></p>\n<h2 id=\"还有更多等待挖掘。。。\"><a href=\"#还有更多等待挖掘。。。\" class=\"headerlink\" title=\"还有更多等待挖掘。。。\"></a>还有更多等待挖掘。。。</h2><h1 id=\"如何安装使用\"><a href=\"#如何安装使用\" class=\"headerlink\" title=\"如何安装使用\"></a>如何安装使用</h1><ol>\n<li><p>MCBBS整合包格式安装。含有HMCL的压缩包安装。<br>参照 <a href=\"https://github.com/BlockHaity/XPVPer/releases\">Releases</a> 给出的教程即可。</p>\n</li>\n<li><p>命令行安装<br>参照 <a href=\"https://github.com/BlockHaity/XPVPer/tree/Runner\">Runner分支</a> 进行操作即可</p>\n</li>\n</ol>\n<h1 id=\"如何为此项目做贡献\"><a href=\"#如何为此项目做贡献\" class=\"headerlink\" title=\"如何为此项目做贡献\"></a>如何为此项目做贡献</h1><h2 id=\"发现Bug\"><a href=\"#发现Bug\" class=\"headerlink\" title=\"发现Bug\"></a>发现Bug</h2><p>发现Bug后在 <a href=\"https://github.com/BlockHaity/XPVPer/discussions\">Discussions</a> 内进行发帖讨论,获得解决方案后提交issuse。</p>\n<h2 id=\"提出建议\"><a href=\"#提出建议\" class=\"headerlink\" title=\"提出建议\"></a>提出建议</h2><p>在 <a href=\"https://github.com/BlockHaity/XPVPer/discussions\">Discussions</a> 内提出你的建议,探讨出解决方案后提交Issuse</p>\n<h2 id=\"直接动手改代码(PR)\"><a href=\"#直接动手改代码(PR)\" class=\"headerlink\" title=\"直接动手改代码(PR)\"></a>直接动手改代码(PR)</h2><p>在根目录新建一个 <code>PR.md</code> 用来描述你做的改动和实现的功能,后提交PR</p>\n<h2 id=\"为什么采用先讨论得到方案后再提交issuse的方式\"><a href=\"#为什么采用先讨论得到方案后再提交issuse的方式\" class=\"headerlink\" title=\"为什么采用先讨论得到方案后再提交issuse的方式\"></a>为什么采用先讨论得到方案后再提交issuse的方式</h2><p>作者是一名学生,没有太多时间来探讨解决方案,并且作者不太会Java等语言。这样做就可以提升此项目修复Bug的速度。</p>\n<h1 id=\"已知Bug\"><a href=\"#已知Bug\" class=\"headerlink\" title=\"已知Bug\"></a>已知Bug</h1><h2 id=\"在进入-单人游戏-或-多人游戏-界面后调整窗口大小会导致界面错位的问题。\"><a href=\"#在进入-单人游戏-或-多人游戏-界面后调整窗口大小会导致界面错位的问题。\" class=\"headerlink\" title=\"在进入 单人游戏 或 多人游戏 界面后调整窗口大小会导致界面错位的问题。\"></a>在进入 <strong>单人游戏</strong> 或 <strong>多人游戏</strong> 界面后调整窗口大小会导致界面错位的问题。</h2><p>影响评级:高</p>\n<p>是否可以解决:否</p>\n<p>原因:该Bug是由FancyMenu所导致的,而适用于Minecraft 1.8.9 Forge的FancyMenu已经停更。无法通过除改源代码的方法修复。</p>\n<p>治标不治本的方案:先最大化窗口再进入 <strong>单人游戏</strong> 或 <strong>多人游戏</strong> 界面,在后续使用中尽量避免拉伸窗口。</p>\n<h1 id=\"相关问答\"><a href=\"#相关问答\" class=\"headerlink\" title=\"相关问答\"></a>相关问答</h1><p>Q:为什么不制作Minecraft客户端,它明明比整合包更加好</p>\n<p>A:首要原因:不会写。次要原因:我认为不自由,Minecraft客户端只能让用户关闭功能,而不能删除功能。而整合包可以让用户直接删除一些功能。高度模块化是我喜欢的一种制作表现,当然这是有代价的,这样制作无法深度修改Minecraft。</p>\n<p>Q:XPVPer含不含有作弊功能</p>\n<p>A:没有,作者甚至想通过客户端文件覆盖的方法来反作弊,但一直没有一个有效的方案 <del>至少要防个水影和VAPE</del></p>\n","excerpt":"","more":"\n<h1 align=\"center\">\n <br>\n <img src=\"https://s1.ax1x.com/2023/06/07/pCFC7dK.png\"/></a>\n <br>\n XPVPer\n <br>\n</h1>\n<h2 align=\"center\">一个专注于美观和PVP的Minecraft整合包</h2>\n\n\n<p><a href=\"https://github.com/BlockHaity/XPVPer\">项目主页</a></p>\n<h1 id=\"XPVPer是什么\"><a href=\"#XPVPer是什么\" class=\"headerlink\" title=\"XPVPer是什么\"></a>XPVPer是什么</h1><p>XPVPer是一个基于Minecraft Java Edition 1.8.9,Forge,LabyMOD制作的整合包</p>\n<p><strong>注意!!!XPVPer不是Minecraft客户端,更不会成为Minecraft客户端</strong></p>\n<h1 id=\"有什么亮点\"><a href=\"#有什么亮点\" class=\"headerlink\" title=\"有什么亮点\"></a>有什么亮点</h1><p><em>注:以下内容皆以原版作为比较</em></p>\n<h2 id=\"更加美观的UI\"><a href=\"#更加美观的UI\" class=\"headerlink\" title=\"更加美观的UI\"></a>更加美观的UI</h2><p><a href=\"https://imgse.com/i/pCFLKqe\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFLKqe.png\" alt=\"pCFLKqe.png\"></a></p>\n<p><em>左侧为XPVPer右侧为原版Minecraft</em></p>\n<p><a href=\"https://imgse.com/i/pCFXaNj\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFXaNj.png\" alt=\"pCFXaNj.png\"></a></p>\n<p>使用FancyMenu,Blur,LabyMOD等MOD实现。</p>\n<h2 id=\"高度的可自定义性\"><a href=\"#高度的可自定义性\" class=\"headerlink\" title=\"高度的可自定义性\"></a>高度的可自定义性</h2><p>作者不封死包括FancyMenu的配置栏 <del>(虽然真的很丑)</del> ,UI资源包在内的所有自定义项,给用户完全的界面自由。</p>\n<p><a href=\"https://imgse.com/i/pCFX5gx\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFX5gx.png\" alt=\"pCFX5gx.png\"></a></p>\n<p><a href=\"https://imgse.com/i/pCFXO5d\"><img src=\"https://s1.ax1x.com/2023/06/07/pCFXO5d.png\" alt=\"pCFXO5d.png\"></a></p>\n<h2 id=\"还有更多等待挖掘。。。\"><a href=\"#还有更多等待挖掘。。。\" class=\"headerlink\" title=\"还有更多等待挖掘。。。\"></a>还有更多等待挖掘。。。</h2><h1 id=\"如何安装使用\"><a href=\"#如何安装使用\" class=\"headerlink\" title=\"如何安装使用\"></a>如何安装使用</h1><ol>\n<li><p>MCBBS整合包格式安装。含有HMCL的压缩包安装。<br>参照 <a href=\"https://github.com/BlockHaity/XPVPer/releases\">Releases</a> 给出的教程即可。</p>\n</li>\n<li><p>命令行安装<br>参照 <a href=\"https://github.com/BlockHaity/XPVPer/tree/Runner\">Runner分支</a> 进行操作即可</p>\n</li>\n</ol>\n<h1 id=\"如何为此项目做贡献\"><a href=\"#如何为此项目做贡献\" class=\"headerlink\" title=\"如何为此项目做贡献\"></a>如何为此项目做贡献</h1><h2 id=\"发现Bug\"><a href=\"#发现Bug\" class=\"headerlink\" title=\"发现Bug\"></a>发现Bug</h2><p>发现Bug后在 <a href=\"https://github.com/BlockHaity/XPVPer/discussions\">Discussions</a> 内进行发帖讨论,获得解决方案后提交issuse。</p>\n<h2 id=\"提出建议\"><a href=\"#提出建议\" class=\"headerlink\" title=\"提出建议\"></a>提出建议</h2><p>在 <a href=\"https://github.com/BlockHaity/XPVPer/discussions\">Discussions</a> 内提出你的建议,探讨出解决方案后提交Issuse</p>\n<h2 id=\"直接动手改代码(PR)\"><a href=\"#直接动手改代码(PR)\" class=\"headerlink\" title=\"直接动手改代码(PR)\"></a>直接动手改代码(PR)</h2><p>在根目录新建一个 <code>PR.md</code> 用来描述你做的改动和实现的功能,后提交PR</p>\n<h2 id=\"为什么采用先讨论得到方案后再提交issuse的方式\"><a href=\"#为什么采用先讨论得到方案后再提交issuse的方式\" class=\"headerlink\" title=\"为什么采用先讨论得到方案后再提交issuse的方式\"></a>为什么采用先讨论得到方案后再提交issuse的方式</h2><p>作者是一名学生,没有太多时间来探讨解决方案,并且作者不太会Java等语言。这样做就可以提升此项目修复Bug的速度。</p>\n<h1 id=\"已知Bug\"><a href=\"#已知Bug\" class=\"headerlink\" title=\"已知Bug\"></a>已知Bug</h1><h2 id=\"在进入-单人游戏-或-多人游戏-界面后调整窗口大小会导致界面错位的问题。\"><a href=\"#在进入-单人游戏-或-多人游戏-界面后调整窗口大小会导致界面错位的问题。\" class=\"headerlink\" title=\"在进入 单人游戏 或 多人游戏 界面后调整窗口大小会导致界面错位的问题。\"></a>在进入 <strong>单人游戏</strong> 或 <strong>多人游戏</strong> 界面后调整窗口大小会导致界面错位的问题。</h2><p>影响评级:高</p>\n<p>是否可以解决:否</p>\n<p>原因:该Bug是由FancyMenu所导致的,而适用于Minecraft 1.8.9 Forge的FancyMenu已经停更。无法通过除改源代码的方法修复。</p>\n<p>治标不治本的方案:先最大化窗口再进入 <strong>单人游戏</strong> 或 <strong>多人游戏</strong> 界面,在后续使用中尽量避免拉伸窗口。</p>\n<h1 id=\"相关问答\"><a href=\"#相关问答\" class=\"headerlink\" title=\"相关问答\"></a>相关问答</h1><p>Q:为什么不制作Minecraft客户端,它明明比整合包更加好</p>\n<p>A:首要原因:不会写。次要原因:我认为不自由,Minecraft客户端只能让用户关闭功能,而不能删除功能。而整合包可以让用户直接删除一些功能。高度模块化是我喜欢的一种制作表现,当然这是有代价的,这样制作无法深度修改Minecraft。</p>\n<p>Q:XPVPer含不含有作弊功能</p>\n<p>A:没有,作者甚至想通过客户端文件覆盖的方法来反作弊,但一直没有一个有效的方案 <del>至少要防个水影和VAPE</del></p>\n"},{"title":"hyprland下VNC副屏的实现","date":"2025-10-02T03:33:11.000Z","_content":"\n## 起因\n\nUSB HUB提供的供电实属不够,根本无法驱动我的副屏,但是华为的手机带有有线投屏,且可以启动一个独立的“电脑模式桌面”,也许可以做远程副屏使用。\n\n## 踩过的坑\n\n在网上搜寻的绝大部分[教程](https://blog.dimeta.top/archives/waylandxia-de-sunshine-xu-ni-ping-mu-pei-zhi)都是在Kernel 模拟 EDID + DRM 接口实现的,这显然有误操作风险,万一一个`rm -rf`不就炸了吗?\n\n~~btrfs神力让我无忧回滚~~\n\n然后,我看到了这篇[教程](https://nth233.top/notes/wayvnc)\n\n这个是为服务器准备的,创建一个虚拟wayland显示,but,这也做不了副屏啊。\n\n最后参考[这篇](https://css.clsty.link/p/61781423b/hyprland-use-tablet-or-laptop-as-extra-monitor/)\n\n原来hyprland可以直接创建HEADLESS显示啊\n\n## 实现\n\n用命令`hyprctl output create headless`来直接创建显示\n\n然后,用`hyprctl monitors`就可以看到相关详情了\n\n<details>\n<summary>输出</summary>\n\n```\nMonitor eDP-1 (ID 0):\n\t1920x1080@60.00000 at 0x0\n\tdescription: BOE 0x092E\n\tmake: BOE\n\tmodel: 0x092E\n\tphysical size (mm): 310x170\n\tserial: \n\tactive workspace: 1 (1)\n\tspecial workspace: 0 ()\n\treserved: 0 30 0 0\n\tscale: 1.00\n\ttransform: 0\n\tfocused: yes\n\tdpmsStatus: 1\n\tvrr: false\n\tsolitary: 0\n\tsolitaryBlockedBy: windowed mode,missing candidate\n\tactivelyTearing: false\n\ttearingBlockedBy: next frame is not torn,user settings,missing candidate\n\tdirectScanoutTo: 0\n\tdirectScanoutBlockedBy: user settings,screen record/screenshot,missing candidate\n\tdisabled: false\n\tcurrentFormat: XRGB8888\n\tmirrorOf: none\n\tavailableModes: 1920x1080@60.00Hz 1920x1080@48.00Hz \n\nMonitor HEADLESS-2 (ID 1):\n\t1920x1080@60.00000 at 1920x0\n\tdescription: \n\tmake: \n\tmodel: \n\tphysical size (mm): 0x0\n\tserial: \n\tactive workspace: 2 (2)\n\tspecial workspace: 0 ()\n\treserved: 0 30 0 0\n\tscale: 1.00\n\ttransform: 0\n\tfocused: no\n\tdpmsStatus: 1\n\tvrr: false\n\tsolitary: 0\n\tsolitaryBlockedBy: windowed mode,missing candidate\n\tactivelyTearing: false\n\ttearingBlockedBy: next frame is not torn,user settings,not supported by monitor,missing candidate\n\tdirectScanoutTo: 0\n\tdirectScanoutBlockedBy: user settings,screen record/screenshot,software renders/cursors,missing candidate\n\tdisabled: false\n\tcurrentFormat: XRGB8888\n\tmirrorOf: none\n\tavailableModes: 1920x1080@0.06Hz \n```\n\n</details>\n\n这里可以看到,虚拟显示编号为`HEADLESS-2`\n\n然后,用下面的命令来[设置显示](https://wiki.hyprland.org/Configuring/Monitors/)\n\n```\nhyprctl keyword monitor <显示编号>,<分辨率>@<刷新率>,<位置>\n```\n\n例如\n\n```\nhyprctl keyword monitor HEADLESS-2,1920x1080@60,1920x0\n```\n\n为啥不用配置文件呢?因为我们无法保证创建的显示编号永远为一个定植,所以,采用命令的方式创建。\n\n接下来就可以用wayvnc来打开显示了\n\n```\nwayvnc -o=<显示编号> 0.0.0.0 5900 -g -r\n```\n\n用VNC客户端连接即可\n\n## 使用体验\n\n理论上,FPS可以无限高,但是AVNC连上之后动画就卡卡的,不过还算流畅和跟手,播放视频可很流畅。","source":"_posts/hyprland下虚拟副屏的实现.md","raw":"---\ntitle: hyprland下VNC副屏的实现\ndate: 2025-10-02 11:33:11\ntags: [ Linux, Hyprland, Wayland, 虚拟副屏 ]\ncategories: 折腾\n---\n\n## 起因\n\nUSB HUB提供的供电实属不够,根本无法驱动我的副屏,但是华为的手机带有有线投屏,且可以启动一个独立的“电脑模式桌面”,也许可以做远程副屏使用。\n\n## 踩过的坑\n\n在网上搜寻的绝大部分[教程](https://blog.dimeta.top/archives/waylandxia-de-sunshine-xu-ni-ping-mu-pei-zhi)都是在Kernel 模拟 EDID + DRM 接口实现的,这显然有误操作风险,万一一个`rm -rf`不就炸了吗?\n\n~~btrfs神力让我无忧回滚~~\n\n然后,我看到了这篇[教程](https://nth233.top/notes/wayvnc)\n\n这个是为服务器准备的,创建一个虚拟wayland显示,but,这也做不了副屏啊。\n\n最后参考[这篇](https://css.clsty.link/p/61781423b/hyprland-use-tablet-or-laptop-as-extra-monitor/)\n\n原来hyprland可以直接创建HEADLESS显示啊\n\n## 实现\n\n用命令`hyprctl output create headless`来直接创建显示\n\n然后,用`hyprctl monitors`就可以看到相关详情了\n\n<details>\n<summary>输出</summary>\n\n```\nMonitor eDP-1 (ID 0):\n\t1920x1080@60.00000 at 0x0\n\tdescription: BOE 0x092E\n\tmake: BOE\n\tmodel: 0x092E\n\tphysical size (mm): 310x170\n\tserial: \n\tactive workspace: 1 (1)\n\tspecial workspace: 0 ()\n\treserved: 0 30 0 0\n\tscale: 1.00\n\ttransform: 0\n\tfocused: yes\n\tdpmsStatus: 1\n\tvrr: false\n\tsolitary: 0\n\tsolitaryBlockedBy: windowed mode,missing candidate\n\tactivelyTearing: false\n\ttearingBlockedBy: next frame is not torn,user settings,missing candidate\n\tdirectScanoutTo: 0\n\tdirectScanoutBlockedBy: user settings,screen record/screenshot,missing candidate\n\tdisabled: false\n\tcurrentFormat: XRGB8888\n\tmirrorOf: none\n\tavailableModes: 1920x1080@60.00Hz 1920x1080@48.00Hz \n\nMonitor HEADLESS-2 (ID 1):\n\t1920x1080@60.00000 at 1920x0\n\tdescription: \n\tmake: \n\tmodel: \n\tphysical size (mm): 0x0\n\tserial: \n\tactive workspace: 2 (2)\n\tspecial workspace: 0 ()\n\treserved: 0 30 0 0\n\tscale: 1.00\n\ttransform: 0\n\tfocused: no\n\tdpmsStatus: 1\n\tvrr: false\n\tsolitary: 0\n\tsolitaryBlockedBy: windowed mode,missing candidate\n\tactivelyTearing: false\n\ttearingBlockedBy: next frame is not torn,user settings,not supported by monitor,missing candidate\n\tdirectScanoutTo: 0\n\tdirectScanoutBlockedBy: user settings,screen record/screenshot,software renders/cursors,missing candidate\n\tdisabled: false\n\tcurrentFormat: XRGB8888\n\tmirrorOf: none\n\tavailableModes: 1920x1080@0.06Hz \n```\n\n</details>\n\n这里可以看到,虚拟显示编号为`HEADLESS-2`\n\n然后,用下面的命令来[设置显示](https://wiki.hyprland.org/Configuring/Monitors/)\n\n```\nhyprctl keyword monitor <显示编号>,<分辨率>@<刷新率>,<位置>\n```\n\n例如\n\n```\nhyprctl keyword monitor HEADLESS-2,1920x1080@60,1920x0\n```\n\n为啥不用配置文件呢?因为我们无法保证创建的显示编号永远为一个定植,所以,采用命令的方式创建。\n\n接下来就可以用wayvnc来打开显示了\n\n```\nwayvnc -o=<显示编号> 0.0.0.0 5900 -g -r\n```\n\n用VNC客户端连接即可\n\n## 使用体验\n\n理论上,FPS可以无限高,但是AVNC连上之后动画就卡卡的,不过还算流畅和跟手,播放视频可很流畅。","slug":"hyprland下虚拟副屏的实现","published":1,"updated":"2025-10-02T04:10:00.046Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn30006yblv7v6x1icb","content":"<h2 id=\"起因\"><a href=\"#起因\" class=\"headerlink\" title=\"起因\"></a>起因</h2><p>USB HUB提供的供电实属不够,根本无法驱动我的副屏,但是华为的手机带有有线投屏,且可以启动一个独立的“电脑模式桌面”,也许可以做远程副屏使用。</p>\n<h2 id=\"踩过的坑\"><a href=\"#踩过的坑\" class=\"headerlink\" title=\"踩过的坑\"></a>踩过的坑</h2><p>在网上搜寻的绝大部分<a href=\"https://blog.dimeta.top/archives/waylandxia-de-sunshine-xu-ni-ping-mu-pei-zhi\">教程</a>都是在Kernel 模拟 EDID + DRM 接口实现的,这显然有误操作风险,万一一个<code>rm -rf</code>不就炸了吗?</p>\n<p><del>btrfs神力让我无忧回滚</del></p>\n<p>然后,我看到了这篇<a href=\"https://nth233.top/notes/wayvnc\">教程</a></p>\n<p>这个是为服务器准备的,创建一个虚拟wayland显示,but,这也做不了副屏啊。</p>\n<p>最后参考<a href=\"https://css.clsty.link/p/61781423b/hyprland-use-tablet-or-laptop-as-extra-monitor/\">这篇</a></p>\n<p>原来hyprland可以直接创建HEADLESS显示啊</p>\n<h2 id=\"实现\"><a href=\"#实现\" class=\"headerlink\" title=\"实现\"></a>实现</h2><p>用命令<code>hyprctl output create headless</code>来直接创建显示</p>\n<p>然后,用<code>hyprctl monitors</code>就可以看到相关详情了</p>\n<details>\n<summary>输出</summary>\n\n<figure class=\"highlight yaml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs yaml\"><span class=\"hljs-string\">Monitor</span> <span class=\"hljs-string\">eDP-1</span> <span class=\"hljs-string\">(ID</span> <span class=\"hljs-number\">0</span><span class=\"hljs-string\">):</span><br>\t<span class=\"hljs-string\">1920x1080@60.00000</span> <span class=\"hljs-string\">at</span> <span class=\"hljs-number\">0x0</span><br>\t<span class=\"hljs-attr\">description:</span> <span class=\"hljs-string\">BOE</span> <span class=\"hljs-number\">0x092E</span><br>\t<span class=\"hljs-attr\">make:</span> <span class=\"hljs-string\">BOE</span><br>\t<span class=\"hljs-attr\">model:</span> <span class=\"hljs-number\">0x092E</span><br>\t<span class=\"hljs-string\">physical</span> <span class=\"hljs-string\">size</span> <span class=\"hljs-string\">(mm):</span> <span class=\"hljs-string\">310x170</span><br>\t<span class=\"hljs-attr\">serial:</span> <br>\t<span class=\"hljs-attr\">active workspace:</span> <span class=\"hljs-number\">1</span> <span class=\"hljs-string\">(1)</span><br>\t<span class=\"hljs-attr\">special workspace:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-string\">()</span><br>\t<span class=\"hljs-attr\">reserved:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">30</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">scale:</span> <span class=\"hljs-number\">1.00</span><br>\t<span class=\"hljs-attr\">transform:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">focused:</span> <span class=\"hljs-literal\">yes</span><br>\t<span class=\"hljs-attr\">dpmsStatus:</span> <span class=\"hljs-number\">1</span><br>\t<span class=\"hljs-attr\">vrr:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">solitary:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">solitaryBlockedBy:</span> <span class=\"hljs-string\">windowed</span> <span class=\"hljs-string\">mode,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">activelyTearing:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">tearingBlockedBy:</span> <span class=\"hljs-string\">next</span> <span class=\"hljs-string\">frame</span> <span class=\"hljs-string\">is</span> <span class=\"hljs-string\">not</span> <span class=\"hljs-string\">torn,user</span> <span class=\"hljs-string\">settings,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">directScanoutTo:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">directScanoutBlockedBy:</span> <span class=\"hljs-string\">user</span> <span class=\"hljs-string\">settings,screen</span> <span class=\"hljs-string\">record/screenshot,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">disabled:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">currentFormat:</span> <span class=\"hljs-string\">XRGB8888</span><br>\t<span class=\"hljs-attr\">mirrorOf:</span> <span class=\"hljs-string\">none</span><br>\t<span class=\"hljs-attr\">availableModes:</span> <span class=\"hljs-string\">1920x1080@60.00Hz</span> <span class=\"hljs-string\">1920x1080@48.00Hz</span> <br><br><span class=\"hljs-string\">Monitor</span> <span class=\"hljs-string\">HEADLESS-2</span> <span class=\"hljs-string\">(ID</span> <span class=\"hljs-number\">1</span><span class=\"hljs-string\">):</span><br>\t<span class=\"hljs-string\">1920x1080@60.00000</span> <span class=\"hljs-string\">at</span> <span class=\"hljs-string\">1920x0</span><br>\t<span class=\"hljs-attr\">description:</span> <br>\t<span class=\"hljs-attr\">make:</span> <br>\t<span class=\"hljs-attr\">model:</span> <br>\t<span class=\"hljs-string\">physical</span> <span class=\"hljs-string\">size</span> <span class=\"hljs-string\">(mm):</span> <span class=\"hljs-number\">0x0</span><br>\t<span class=\"hljs-attr\">serial:</span> <br>\t<span class=\"hljs-attr\">active workspace:</span> <span class=\"hljs-number\">2</span> <span class=\"hljs-string\">(2)</span><br>\t<span class=\"hljs-attr\">special workspace:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-string\">()</span><br>\t<span class=\"hljs-attr\">reserved:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">30</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">scale:</span> <span class=\"hljs-number\">1.00</span><br>\t<span class=\"hljs-attr\">transform:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">focused:</span> <span class=\"hljs-literal\">no</span><br>\t<span class=\"hljs-attr\">dpmsStatus:</span> <span class=\"hljs-number\">1</span><br>\t<span class=\"hljs-attr\">vrr:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">solitary:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">solitaryBlockedBy:</span> <span class=\"hljs-string\">windowed</span> <span class=\"hljs-string\">mode,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">activelyTearing:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">tearingBlockedBy:</span> <span class=\"hljs-string\">next</span> <span class=\"hljs-string\">frame</span> <span class=\"hljs-string\">is</span> <span class=\"hljs-string\">not</span> <span class=\"hljs-string\">torn,user</span> <span class=\"hljs-string\">settings,not</span> <span class=\"hljs-string\">supported</span> <span class=\"hljs-string\">by</span> <span class=\"hljs-string\">monitor,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">directScanoutTo:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">directScanoutBlockedBy:</span> <span class=\"hljs-string\">user</span> <span class=\"hljs-string\">settings,screen</span> <span class=\"hljs-string\">record/screenshot,software</span> <span class=\"hljs-string\">renders/cursors,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">disabled:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">currentFormat:</span> <span class=\"hljs-string\">XRGB8888</span><br>\t<span class=\"hljs-attr\">mirrorOf:</span> <span class=\"hljs-string\">none</span><br>\t<span class=\"hljs-attr\">availableModes:</span> <span class=\"hljs-string\">1920x1080@0.06Hz</span> <br></code></pre></td></tr></table></figure>\n\n</details>\n\n<p>这里可以看到,虚拟显示编号为<code>HEADLESS-2</code></p>\n<p>然后,用下面的命令来<a href=\"https://wiki.hyprland.org/Configuring/Monitors/\">设置显示</a></p>\n<figure class=\"highlight smali\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs smali\">hyprctl keyword<span class=\"hljs-built_in\"> monitor </span><显示编号>,<分辨率>@<刷新率>,<位置><br></code></pre></td></tr></table></figure>\n\n<p>例如</p>\n<figure class=\"highlight smali\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs smali\">hyprctl keyword<span class=\"hljs-built_in\"> monitor </span>HEADLESS-2,1920x1080@60,1920x0<br></code></pre></td></tr></table></figure>\n\n<p>为啥不用配置文件呢?因为我们无法保证创建的显示编号永远为一个定植,所以,采用命令的方式创建。</p>\n<p>接下来就可以用wayvnc来打开显示了</p>\n<figure class=\"highlight apache\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs apache\"><span class=\"hljs-attribute\">wayvnc</span> -o=<显示编号> <span class=\"hljs-number\">0.0.0.0</span> <span class=\"hljs-number\">5900</span> -g -r<br></code></pre></td></tr></table></figure>\n\n<p>用VNC客户端连接即可</p>\n<h2 id=\"使用体验\"><a href=\"#使用体验\" class=\"headerlink\" title=\"使用体验\"></a>使用体验</h2><p>理论上,FPS可以无限高,但是AVNC连上之后动画就卡卡的,不过还算流畅和跟手,播放视频可很流畅。</p>\n","excerpt":"","more":"<h2 id=\"起因\"><a href=\"#起因\" class=\"headerlink\" title=\"起因\"></a>起因</h2><p>USB HUB提供的供电实属不够,根本无法驱动我的副屏,但是华为的手机带有有线投屏,且可以启动一个独立的“电脑模式桌面”,也许可以做远程副屏使用。</p>\n<h2 id=\"踩过的坑\"><a href=\"#踩过的坑\" class=\"headerlink\" title=\"踩过的坑\"></a>踩过的坑</h2><p>在网上搜寻的绝大部分<a href=\"https://blog.dimeta.top/archives/waylandxia-de-sunshine-xu-ni-ping-mu-pei-zhi\">教程</a>都是在Kernel 模拟 EDID + DRM 接口实现的,这显然有误操作风险,万一一个<code>rm -rf</code>不就炸了吗?</p>\n<p><del>btrfs神力让我无忧回滚</del></p>\n<p>然后,我看到了这篇<a href=\"https://nth233.top/notes/wayvnc\">教程</a></p>\n<p>这个是为服务器准备的,创建一个虚拟wayland显示,but,这也做不了副屏啊。</p>\n<p>最后参考<a href=\"https://css.clsty.link/p/61781423b/hyprland-use-tablet-or-laptop-as-extra-monitor/\">这篇</a></p>\n<p>原来hyprland可以直接创建HEADLESS显示啊</p>\n<h2 id=\"实现\"><a href=\"#实现\" class=\"headerlink\" title=\"实现\"></a>实现</h2><p>用命令<code>hyprctl output create headless</code>来直接创建显示</p>\n<p>然后,用<code>hyprctl monitors</code>就可以看到相关详情了</p>\n<details>\n<summary>输出</summary>\n\n<figure class=\"highlight yaml\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs yaml\"><span class=\"hljs-string\">Monitor</span> <span class=\"hljs-string\">eDP-1</span> <span class=\"hljs-string\">(ID</span> <span class=\"hljs-number\">0</span><span class=\"hljs-string\">):</span><br>\t<span class=\"hljs-string\">1920x1080@60.00000</span> <span class=\"hljs-string\">at</span> <span class=\"hljs-number\">0x0</span><br>\t<span class=\"hljs-attr\">description:</span> <span class=\"hljs-string\">BOE</span> <span class=\"hljs-number\">0x092E</span><br>\t<span class=\"hljs-attr\">make:</span> <span class=\"hljs-string\">BOE</span><br>\t<span class=\"hljs-attr\">model:</span> <span class=\"hljs-number\">0x092E</span><br>\t<span class=\"hljs-string\">physical</span> <span class=\"hljs-string\">size</span> <span class=\"hljs-string\">(mm):</span> <span class=\"hljs-string\">310x170</span><br>\t<span class=\"hljs-attr\">serial:</span> <br>\t<span class=\"hljs-attr\">active workspace:</span> <span class=\"hljs-number\">1</span> <span class=\"hljs-string\">(1)</span><br>\t<span class=\"hljs-attr\">special workspace:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-string\">()</span><br>\t<span class=\"hljs-attr\">reserved:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">30</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">scale:</span> <span class=\"hljs-number\">1.00</span><br>\t<span class=\"hljs-attr\">transform:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">focused:</span> <span class=\"hljs-literal\">yes</span><br>\t<span class=\"hljs-attr\">dpmsStatus:</span> <span class=\"hljs-number\">1</span><br>\t<span class=\"hljs-attr\">vrr:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">solitary:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">solitaryBlockedBy:</span> <span class=\"hljs-string\">windowed</span> <span class=\"hljs-string\">mode,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">activelyTearing:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">tearingBlockedBy:</span> <span class=\"hljs-string\">next</span> <span class=\"hljs-string\">frame</span> <span class=\"hljs-string\">is</span> <span class=\"hljs-string\">not</span> <span class=\"hljs-string\">torn,user</span> <span class=\"hljs-string\">settings,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">directScanoutTo:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">directScanoutBlockedBy:</span> <span class=\"hljs-string\">user</span> <span class=\"hljs-string\">settings,screen</span> <span class=\"hljs-string\">record/screenshot,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">disabled:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">currentFormat:</span> <span class=\"hljs-string\">XRGB8888</span><br>\t<span class=\"hljs-attr\">mirrorOf:</span> <span class=\"hljs-string\">none</span><br>\t<span class=\"hljs-attr\">availableModes:</span> <span class=\"hljs-string\">1920x1080@60.00Hz</span> <span class=\"hljs-string\">1920x1080@48.00Hz</span> <br><br><span class=\"hljs-string\">Monitor</span> <span class=\"hljs-string\">HEADLESS-2</span> <span class=\"hljs-string\">(ID</span> <span class=\"hljs-number\">1</span><span class=\"hljs-string\">):</span><br>\t<span class=\"hljs-string\">1920x1080@60.00000</span> <span class=\"hljs-string\">at</span> <span class=\"hljs-string\">1920x0</span><br>\t<span class=\"hljs-attr\">description:</span> <br>\t<span class=\"hljs-attr\">make:</span> <br>\t<span class=\"hljs-attr\">model:</span> <br>\t<span class=\"hljs-string\">physical</span> <span class=\"hljs-string\">size</span> <span class=\"hljs-string\">(mm):</span> <span class=\"hljs-number\">0x0</span><br>\t<span class=\"hljs-attr\">serial:</span> <br>\t<span class=\"hljs-attr\">active workspace:</span> <span class=\"hljs-number\">2</span> <span class=\"hljs-string\">(2)</span><br>\t<span class=\"hljs-attr\">special workspace:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-string\">()</span><br>\t<span class=\"hljs-attr\">reserved:</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">30</span> <span class=\"hljs-number\">0</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">scale:</span> <span class=\"hljs-number\">1.00</span><br>\t<span class=\"hljs-attr\">transform:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">focused:</span> <span class=\"hljs-literal\">no</span><br>\t<span class=\"hljs-attr\">dpmsStatus:</span> <span class=\"hljs-number\">1</span><br>\t<span class=\"hljs-attr\">vrr:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">solitary:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">solitaryBlockedBy:</span> <span class=\"hljs-string\">windowed</span> <span class=\"hljs-string\">mode,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">activelyTearing:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">tearingBlockedBy:</span> <span class=\"hljs-string\">next</span> <span class=\"hljs-string\">frame</span> <span class=\"hljs-string\">is</span> <span class=\"hljs-string\">not</span> <span class=\"hljs-string\">torn,user</span> <span class=\"hljs-string\">settings,not</span> <span class=\"hljs-string\">supported</span> <span class=\"hljs-string\">by</span> <span class=\"hljs-string\">monitor,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">directScanoutTo:</span> <span class=\"hljs-number\">0</span><br>\t<span class=\"hljs-attr\">directScanoutBlockedBy:</span> <span class=\"hljs-string\">user</span> <span class=\"hljs-string\">settings,screen</span> <span class=\"hljs-string\">record/screenshot,software</span> <span class=\"hljs-string\">renders/cursors,missing</span> <span class=\"hljs-string\">candidate</span><br>\t<span class=\"hljs-attr\">disabled:</span> <span class=\"hljs-literal\">false</span><br>\t<span class=\"hljs-attr\">currentFormat:</span> <span class=\"hljs-string\">XRGB8888</span><br>\t<span class=\"hljs-attr\">mirrorOf:</span> <span class=\"hljs-string\">none</span><br>\t<span class=\"hljs-attr\">availableModes:</span> <span class=\"hljs-string\">1920x1080@0.06Hz</span> <br></code></pre></td></tr></table></figure>\n\n</details>\n\n<p>这里可以看到,虚拟显示编号为<code>HEADLESS-2</code></p>\n<p>然后,用下面的命令来<a href=\"https://wiki.hyprland.org/Configuring/Monitors/\">设置显示</a></p>\n<figure class=\"highlight smali\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs smali\">hyprctl keyword<span class=\"hljs-built_in\"> monitor </span><显示编号>,<分辨率>@<刷新率>,<位置><br></code></pre></td></tr></table></figure>\n\n<p>例如</p>\n<figure class=\"highlight smali\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs smali\">hyprctl keyword<span class=\"hljs-built_in\"> monitor </span>HEADLESS-2,1920x1080@60,1920x0<br></code></pre></td></tr></table></figure>\n\n<p>为啥不用配置文件呢?因为我们无法保证创建的显示编号永远为一个定植,所以,采用命令的方式创建。</p>\n<p>接下来就可以用wayvnc来打开显示了</p>\n<figure class=\"highlight apache\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs apache\"><span class=\"hljs-attribute\">wayvnc</span> -o=<显示编号> <span class=\"hljs-number\">0.0.0.0</span> <span class=\"hljs-number\">5900</span> -g -r<br></code></pre></td></tr></table></figure>\n\n<p>用VNC客户端连接即可</p>\n<h2 id=\"使用体验\"><a href=\"#使用体验\" class=\"headerlink\" title=\"使用体验\"></a>使用体验</h2><p>理论上,FPS可以无限高,但是AVNC连上之后动画就卡卡的,不过还算流畅和跟手,播放视频可很流畅。</p>\n"},{"title":"使用手机搭建家庭服务器实战","date":"2024-04-04T14:24:05.000Z","_content":"\n# 前言\n\n之前发布了[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/),既然教程都出了,干脆就直接来实战一把。\n\n# 使用道具\n\n一台手机:我使用的是一台HUAWEI Nova 10 ,高通骁龙778G也就只可以处理一些简单的工作了。\n\nZeroTermux软件\n\n# 特殊说明\n\n我为了管理方便以及获得更多的功能,就直接将[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)中提到的服务大部分都直接部署在proot容器中的Arch Linux上了。\n\n# 开始\n\n## 首先,换源!\n\n首先,临时换源,用ZeroTermux的辅助侧边栏就行。\n\n然后我直接使用的`termux-change-repo`中的`China Mirror Group`,省去一个一个Ping。(什么时候pacman和apt有这个特性啊)\n\n当然,为了保持软件最新,我使用的ZeroTermux中的自动任务来自动更新,每隔30分钟就`pkg update && yes y | pkg upgrade`\n\n## 然后,Arch Linux 启动!\n\n使用tmoe工具快速创建并初始化Arch Linux的Proot容器。直接用`pkg install curl -y && bash -c \"$(curl -L https://gitee.com/mo2/linux/raw/2/2)\"`启动tmoe tools,按照指示慢慢部署就行。\n\n不过,有很多人直接使用root用户,我建议不要这么做,小心`rm -rf ./`少输一个**点**,然后,就白忙活了。我的建议是分配一个admin用户,然后给sudo权限,比较安全,至少不会全都挂掉。\n\n顺带一提,proot容器中的openssh有大bug(在我的Arch Linux是这样),你无法直接使用ssh连入容器,即使你的账户密钥密码全对,且分配1024以上且不一样的端口。就只会提示**验证错误**,每次只可以ssh到Termux再用proot进入容器。\n\n**相 当 烦 人**\n\n\n\n# 解决远程访问\n\n知周所众,中国的静态公网IP一贯是难以申请的(特别是中国移动),没有办法,就直接使用远程组网了。\n\n看看国内标杆**蒲公英**\n\n\n\n好吧,用不起。。。\n\n然后试试ZeroTier,我承认,我对的我英语水平太自信了,直接PASS\n\n后面在Bing搜索相关关键字,找到了这个玩意\n\n[星空组网](ip4.ink)\n\n\n\n虽然小众,但是好用,同时免费版完全满足需求。\n\n直接白嫖!!!\n\n实际使用下来也挺不错的,就算挂了也没有太大关系,反正不是主要需求。\n\n# 服务部署\n\n我把所有服务全部部署在了`/app`目录下,方便管理。\n\n## 管理面板\n\n使用了[MCSManager](mcsmanager.com)来管理\n\n[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)\n\n不过,相比于部署教程中的环境,在容器中可用的功能更多。如仿真终端。\n\n## 引导页\n\n先安装nginx,在终端执行`sudo pacman -S nginx`\n\n在MCSManager中创建实例,启动命令直接`nginx`,工作目录改为/app/nginx/\n\n然后修改nginx的配置,改端口和网页目录。\n\n网页文件直接参考[horatio的home](https://github.com/horatio/home)去修改。效果大差不差。\n\n~~horatio的home好像删库了~~\n\n~~奥托主教,再带我冲一次虚数之树吧~~\n\n## Cloudreve\n\n这个部署是最轻松的,对着[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)部署即可\n\n不过我在文件头部加了echo来帮助我记住管理员账户。\n\n## jellyfin(wasted)\n\n这个一直都没有搞好,主要是proot容器中的`systemctl`问题,导致服务无法启动,相关问题tmoe大佬给出的解决方案是使用`service`命令,但是,Arch Linux中没有,后面看一下AUR中有没有,不过大概率是没有的(Arm架构的原因)\n\n## Code Server\n\n这个服务部署起来相对轻松,从Github Releases下载好为arm架构编译好的程序,创建实例,解压文件,创建运行脚本。\n\n不过和其他相比,因为Code Server配置文件目录的原因。要在脚本头部添加复制命令来达到管理配置文件的效果。\n\n## aria2rpc\n\n相当轻松,直接略过。\n\n## MC服务器\n\n这个是最考验手机性能的,而且因为arm架构的原因无法使用Forge服务端,只可以使用插件端,Fabric端和原版端,详细开服直接参照B站教学即可。\n\n## 自动任务\n\n直接使用MCSManager中的计划任务即可,不过不支持WebHook就没法在自己的服务器上部署自动构建博客了。你问我为啥不用Github Action,问就是不会。\n\n自己挂了每日零点自动`yes y | pacman -Syyuu`\n\n# 总结\n\n在实际部署过程中,还是遇到的不少错误,不过还是跑起来了!(喜)","source":"_posts/使用手机搭建家庭服务器实战.md","raw":"---\ntitle: 使用手机搭建家庭服务器实战\ndate: 2024-04-04 22:24:05\ntags: 旧手机利用\ncategories: 旧手机利用\n---\n\n# 前言\n\n之前发布了[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/),既然教程都出了,干脆就直接来实战一把。\n\n# 使用道具\n\n一台手机:我使用的是一台HUAWEI Nova 10 ,高通骁龙778G也就只可以处理一些简单的工作了。\n\nZeroTermux软件\n\n# 特殊说明\n\n我为了管理方便以及获得更多的功能,就直接将[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)中提到的服务大部分都直接部署在proot容器中的Arch Linux上了。\n\n# 开始\n\n## 首先,换源!\n\n首先,临时换源,用ZeroTermux的辅助侧边栏就行。\n\n然后我直接使用的`termux-change-repo`中的`China Mirror Group`,省去一个一个Ping。(什么时候pacman和apt有这个特性啊)\n\n当然,为了保持软件最新,我使用的ZeroTermux中的自动任务来自动更新,每隔30分钟就`pkg update && yes y | pkg upgrade`\n\n## 然后,Arch Linux 启动!\n\n使用tmoe工具快速创建并初始化Arch Linux的Proot容器。直接用`pkg install curl -y && bash -c \"$(curl -L https://gitee.com/mo2/linux/raw/2/2)\"`启动tmoe tools,按照指示慢慢部署就行。\n\n不过,有很多人直接使用root用户,我建议不要这么做,小心`rm -rf ./`少输一个**点**,然后,就白忙活了。我的建议是分配一个admin用户,然后给sudo权限,比较安全,至少不会全都挂掉。\n\n顺带一提,proot容器中的openssh有大bug(在我的Arch Linux是这样),你无法直接使用ssh连入容器,即使你的账户密钥密码全对,且分配1024以上且不一样的端口。就只会提示**验证错误**,每次只可以ssh到Termux再用proot进入容器。\n\n**相 当 烦 人**\n\n\n\n# 解决远程访问\n\n知周所众,中国的静态公网IP一贯是难以申请的(特别是中国移动),没有办法,就直接使用远程组网了。\n\n看看国内标杆**蒲公英**\n\n\n\n好吧,用不起。。。\n\n然后试试ZeroTier,我承认,我对的我英语水平太自信了,直接PASS\n\n后面在Bing搜索相关关键字,找到了这个玩意\n\n[星空组网](ip4.ink)\n\n\n\n虽然小众,但是好用,同时免费版完全满足需求。\n\n直接白嫖!!!\n\n实际使用下来也挺不错的,就算挂了也没有太大关系,反正不是主要需求。\n\n# 服务部署\n\n我把所有服务全部部署在了`/app`目录下,方便管理。\n\n## 管理面板\n\n使用了[MCSManager](mcsmanager.com)来管理\n\n[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)\n\n不过,相比于部署教程中的环境,在容器中可用的功能更多。如仿真终端。\n\n## 引导页\n\n先安装nginx,在终端执行`sudo pacman -S nginx`\n\n在MCSManager中创建实例,启动命令直接`nginx`,工作目录改为/app/nginx/\n\n然后修改nginx的配置,改端口和网页目录。\n\n网页文件直接参考[horatio的home](https://github.com/horatio/home)去修改。效果大差不差。\n\n~~horatio的home好像删库了~~\n\n~~奥托主教,再带我冲一次虚数之树吧~~\n\n## Cloudreve\n\n这个部署是最轻松的,对着[旧手机重新利用指南](/2024/02/09/旧手机重新利用指南/)部署即可\n\n不过我在文件头部加了echo来帮助我记住管理员账户。\n\n## jellyfin(wasted)\n\n这个一直都没有搞好,主要是proot容器中的`systemctl`问题,导致服务无法启动,相关问题tmoe大佬给出的解决方案是使用`service`命令,但是,Arch Linux中没有,后面看一下AUR中有没有,不过大概率是没有的(Arm架构的原因)\n\n## Code Server\n\n这个服务部署起来相对轻松,从Github Releases下载好为arm架构编译好的程序,创建实例,解压文件,创建运行脚本。\n\n不过和其他相比,因为Code Server配置文件目录的原因。要在脚本头部添加复制命令来达到管理配置文件的效果。\n\n## aria2rpc\n\n相当轻松,直接略过。\n\n## MC服务器\n\n这个是最考验手机性能的,而且因为arm架构的原因无法使用Forge服务端,只可以使用插件端,Fabric端和原版端,详细开服直接参照B站教学即可。\n\n## 自动任务\n\n直接使用MCSManager中的计划任务即可,不过不支持WebHook就没法在自己的服务器上部署自动构建博客了。你问我为啥不用Github Action,问就是不会。\n\n自己挂了每日零点自动`yes y | pacman -Syyuu`\n\n# 总结\n\n在实际部署过程中,还是遇到的不少错误,不过还是跑起来了!(喜)","slug":"使用手机搭建家庭服务器实战","published":1,"updated":"2025-06-11T01:43:02.213Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn30007yblv7boggbkh","content":"<h1 id=\"前言\"><a href=\"#前言\" class=\"headerlink\" title=\"前言\"></a>前言</h1><p>之前发布了<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>,既然教程都出了,干脆就直接来实战一把。</p>\n<h1 id=\"使用道具\"><a href=\"#使用道具\" class=\"headerlink\" title=\"使用道具\"></a>使用道具</h1><p>一台手机:我使用的是一台HUAWEI Nova 10 ,高通骁龙778G也就只可以处理一些简单的工作了。</p>\n<p>ZeroTermux软件</p>\n<h1 id=\"特殊说明\"><a href=\"#特殊说明\" class=\"headerlink\" title=\"特殊说明\"></a>特殊说明</h1><p>我为了管理方便以及获得更多的功能,就直接将<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>中提到的服务大部分都直接部署在proot容器中的Arch Linux上了。</p>\n<h1 id=\"开始\"><a href=\"#开始\" class=\"headerlink\" title=\"开始\"></a>开始</h1><h2 id=\"首先,换源!\"><a href=\"#首先,换源!\" class=\"headerlink\" title=\"首先,换源!\"></a>首先,换源!</h2><p>首先,临时换源,用ZeroTermux的辅助侧边栏就行。</p>\n<p>然后我直接使用的<code>termux-change-repo</code>中的<code>China Mirror Group</code>,省去一个一个Ping。(什么时候pacman和apt有这个特性啊)</p>\n<p>当然,为了保持软件最新,我使用的ZeroTermux中的自动任务来自动更新,每隔30分钟就<code>pkg update && yes y | pkg upgrade</code></p>\n<h2 id=\"然后,Arch-Linux-启动!\"><a href=\"#然后,Arch-Linux-启动!\" class=\"headerlink\" title=\"然后,Arch Linux 启动!\"></a>然后,Arch Linux 启动!</h2><p>使用tmoe工具快速创建并初始化Arch Linux的Proot容器。直接用<code>pkg install curl -y && bash -c "$(curl -L https://gitee.com/mo2/linux/raw/2/2)"</code>启动tmoe tools,按照指示慢慢部署就行。</p>\n<p>不过,有很多人直接使用root用户,我建议不要这么做,小心<code>rm -rf ./</code>少输一个<strong>点</strong>,然后,就白忙活了。我的建议是分配一个admin用户,然后给sudo权限,比较安全,至少不会全都挂掉。</p>\n<p>顺带一提,proot容器中的openssh有大bug(在我的Arch Linux是这样),你无法直接使用ssh连入容器,即使你的账户密钥密码全对,且分配1024以上且不一样的端口。就只会提示<strong>验证错误</strong>,每次只可以ssh到Termux再用proot进入容器。</p>\n<p><strong>相 当 烦 人</strong></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/f0702c17f10009d27abe6b36215a0fef141432942.jpg\"></p>\n<h1 id=\"解决远程访问\"><a href=\"#解决远程访问\" class=\"headerlink\" title=\"解决远程访问\"></a>解决远程访问</h1><p>知周所众,中国的静态公网IP一贯是难以申请的(特别是中国移动),没有办法,就直接使用远程组网了。</p>\n<p>看看国内标杆<strong>蒲公英</strong></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/screenshot-1712288868303.png\"></p>\n<p>好吧,用不起。。。</p>\n<p>然后试试ZeroTier,我承认,我对的我英语水平太自信了,直接PASS</p>\n<p>后面在Bing搜索相关关键字,找到了这个玩意</p>\n<p><a href=\"ip4.ink\">星空组网</a></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/image.png\"></p>\n<p>虽然小众,但是好用,同时免费版完全满足需求。</p>\n<p>直接白嫖!!!</p>\n<p>实际使用下来也挺不错的,就算挂了也没有太大关系,反正不是主要需求。</p>\n<h1 id=\"服务部署\"><a href=\"#服务部署\" class=\"headerlink\" title=\"服务部署\"></a>服务部署</h1><p>我把所有服务全部部署在了<code>/app</code>目录下,方便管理。</p>\n<h2 id=\"管理面板\"><a href=\"#管理面板\" class=\"headerlink\" title=\"管理面板\"></a>管理面板</h2><p>使用了<a href=\"mcsmanager.com\">MCSManager</a>来管理</p>\n<p><a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a></p>\n<p>不过,相比于部署教程中的环境,在容器中可用的功能更多。如仿真终端。</p>\n<h2 id=\"引导页\"><a href=\"#引导页\" class=\"headerlink\" title=\"引导页\"></a>引导页</h2><p>先安装nginx,在终端执行<code>sudo pacman -S nginx</code></p>\n<p>在MCSManager中创建实例,启动命令直接<code>nginx</code>,工作目录改为/app/nginx/</p>\n<p>然后修改nginx的配置,改端口和网页目录。</p>\n<p>网页文件直接参考<a href=\"https://github.com/horatio/home\">horatio的home</a>去修改。效果大差不差。</p>\n<p><del>horatio的home好像删库了</del></p>\n<p><del>奥托主教,再带我冲一次虚数之树吧</del></p>\n<h2 id=\"Cloudreve\"><a href=\"#Cloudreve\" class=\"headerlink\" title=\"Cloudreve\"></a>Cloudreve</h2><p>这个部署是最轻松的,对着<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>部署即可</p>\n<p>不过我在文件头部加了echo来帮助我记住管理员账户。</p>\n<h2 id=\"jellyfin(wasted)\"><a href=\"#jellyfin(wasted)\" class=\"headerlink\" title=\"jellyfin(wasted)\"></a>jellyfin(wasted)</h2><p>这个一直都没有搞好,主要是proot容器中的<code>systemctl</code>问题,导致服务无法启动,相关问题tmoe大佬给出的解决方案是使用<code>service</code>命令,但是,Arch Linux中没有,后面看一下AUR中有没有,不过大概率是没有的(Arm架构的原因)</p>\n<h2 id=\"Code-Server\"><a href=\"#Code-Server\" class=\"headerlink\" title=\"Code Server\"></a>Code Server</h2><p>这个服务部署起来相对轻松,从Github Releases下载好为arm架构编译好的程序,创建实例,解压文件,创建运行脚本。</p>\n<p>不过和其他相比,因为Code Server配置文件目录的原因。要在脚本头部添加复制命令来达到管理配置文件的效果。</p>\n<h2 id=\"aria2rpc\"><a href=\"#aria2rpc\" class=\"headerlink\" title=\"aria2rpc\"></a>aria2rpc</h2><p>相当轻松,直接略过。</p>\n<h2 id=\"MC服务器\"><a href=\"#MC服务器\" class=\"headerlink\" title=\"MC服务器\"></a>MC服务器</h2><p>这个是最考验手机性能的,而且因为arm架构的原因无法使用Forge服务端,只可以使用插件端,Fabric端和原版端,详细开服直接参照B站教学即可。</p>\n<h2 id=\"自动任务\"><a href=\"#自动任务\" class=\"headerlink\" title=\"自动任务\"></a>自动任务</h2><p>直接使用MCSManager中的计划任务即可,不过不支持WebHook就没法在自己的服务器上部署自动构建博客了。你问我为啥不用Github Action,问就是不会。</p>\n<p>自己挂了每日零点自动<code>yes y | pacman -Syyuu</code></p>\n<h1 id=\"总结\"><a href=\"#总结\" class=\"headerlink\" title=\"总结\"></a>总结</h1><p>在实际部署过程中,还是遇到的不少错误,不过还是跑起来了!(喜)</p>\n","excerpt":"","more":"<h1 id=\"前言\"><a href=\"#前言\" class=\"headerlink\" title=\"前言\"></a>前言</h1><p>之前发布了<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>,既然教程都出了,干脆就直接来实战一把。</p>\n<h1 id=\"使用道具\"><a href=\"#使用道具\" class=\"headerlink\" title=\"使用道具\"></a>使用道具</h1><p>一台手机:我使用的是一台HUAWEI Nova 10 ,高通骁龙778G也就只可以处理一些简单的工作了。</p>\n<p>ZeroTermux软件</p>\n<h1 id=\"特殊说明\"><a href=\"#特殊说明\" class=\"headerlink\" title=\"特殊说明\"></a>特殊说明</h1><p>我为了管理方便以及获得更多的功能,就直接将<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>中提到的服务大部分都直接部署在proot容器中的Arch Linux上了。</p>\n<h1 id=\"开始\"><a href=\"#开始\" class=\"headerlink\" title=\"开始\"></a>开始</h1><h2 id=\"首先,换源!\"><a href=\"#首先,换源!\" class=\"headerlink\" title=\"首先,换源!\"></a>首先,换源!</h2><p>首先,临时换源,用ZeroTermux的辅助侧边栏就行。</p>\n<p>然后我直接使用的<code>termux-change-repo</code>中的<code>China Mirror Group</code>,省去一个一个Ping。(什么时候pacman和apt有这个特性啊)</p>\n<p>当然,为了保持软件最新,我使用的ZeroTermux中的自动任务来自动更新,每隔30分钟就<code>pkg update && yes y | pkg upgrade</code></p>\n<h2 id=\"然后,Arch-Linux-启动!\"><a href=\"#然后,Arch-Linux-启动!\" class=\"headerlink\" title=\"然后,Arch Linux 启动!\"></a>然后,Arch Linux 启动!</h2><p>使用tmoe工具快速创建并初始化Arch Linux的Proot容器。直接用<code>pkg install curl -y && bash -c "$(curl -L https://gitee.com/mo2/linux/raw/2/2)"</code>启动tmoe tools,按照指示慢慢部署就行。</p>\n<p>不过,有很多人直接使用root用户,我建议不要这么做,小心<code>rm -rf ./</code>少输一个<strong>点</strong>,然后,就白忙活了。我的建议是分配一个admin用户,然后给sudo权限,比较安全,至少不会全都挂掉。</p>\n<p>顺带一提,proot容器中的openssh有大bug(在我的Arch Linux是这样),你无法直接使用ssh连入容器,即使你的账户密钥密码全对,且分配1024以上且不一样的端口。就只会提示<strong>验证错误</strong>,每次只可以ssh到Termux再用proot进入容器。</p>\n<p><strong>相 当 烦 人</strong></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/f0702c17f10009d27abe6b36215a0fef141432942.jpg\"></p>\n<h1 id=\"解决远程访问\"><a href=\"#解决远程访问\" class=\"headerlink\" title=\"解决远程访问\"></a>解决远程访问</h1><p>知周所众,中国的静态公网IP一贯是难以申请的(特别是中国移动),没有办法,就直接使用远程组网了。</p>\n<p>看看国内标杆<strong>蒲公英</strong></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/screenshot-1712288868303.png\"></p>\n<p>好吧,用不起。。。</p>\n<p>然后试试ZeroTier,我承认,我对的我英语水平太自信了,直接PASS</p>\n<p>后面在Bing搜索相关关键字,找到了这个玩意</p>\n<p><a href=\"ip4.ink\">星空组网</a></p>\n<p><img src=\"/img/%E4%BD%BF%E7%94%A8%E6%89%8B%E6%9C%BA%E6%90%AD%E5%BB%BA%E5%AE%B6%E5%BA%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E6%88%98/image.png\"></p>\n<p>虽然小众,但是好用,同时免费版完全满足需求。</p>\n<p>直接白嫖!!!</p>\n<p>实际使用下来也挺不错的,就算挂了也没有太大关系,反正不是主要需求。</p>\n<h1 id=\"服务部署\"><a href=\"#服务部署\" class=\"headerlink\" title=\"服务部署\"></a>服务部署</h1><p>我把所有服务全部部署在了<code>/app</code>目录下,方便管理。</p>\n<h2 id=\"管理面板\"><a href=\"#管理面板\" class=\"headerlink\" title=\"管理面板\"></a>管理面板</h2><p>使用了<a href=\"mcsmanager.com\">MCSManager</a>来管理</p>\n<p><a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a></p>\n<p>不过,相比于部署教程中的环境,在容器中可用的功能更多。如仿真终端。</p>\n<h2 id=\"引导页\"><a href=\"#引导页\" class=\"headerlink\" title=\"引导页\"></a>引导页</h2><p>先安装nginx,在终端执行<code>sudo pacman -S nginx</code></p>\n<p>在MCSManager中创建实例,启动命令直接<code>nginx</code>,工作目录改为/app/nginx/</p>\n<p>然后修改nginx的配置,改端口和网页目录。</p>\n<p>网页文件直接参考<a href=\"https://github.com/horatio/home\">horatio的home</a>去修改。效果大差不差。</p>\n<p><del>horatio的home好像删库了</del></p>\n<p><del>奥托主教,再带我冲一次虚数之树吧</del></p>\n<h2 id=\"Cloudreve\"><a href=\"#Cloudreve\" class=\"headerlink\" title=\"Cloudreve\"></a>Cloudreve</h2><p>这个部署是最轻松的,对着<a href=\"/2024/02/09/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/\">旧手机重新利用指南</a>部署即可</p>\n<p>不过我在文件头部加了echo来帮助我记住管理员账户。</p>\n<h2 id=\"jellyfin(wasted)\"><a href=\"#jellyfin(wasted)\" class=\"headerlink\" title=\"jellyfin(wasted)\"></a>jellyfin(wasted)</h2><p>这个一直都没有搞好,主要是proot容器中的<code>systemctl</code>问题,导致服务无法启动,相关问题tmoe大佬给出的解决方案是使用<code>service</code>命令,但是,Arch Linux中没有,后面看一下AUR中有没有,不过大概率是没有的(Arm架构的原因)</p>\n<h2 id=\"Code-Server\"><a href=\"#Code-Server\" class=\"headerlink\" title=\"Code Server\"></a>Code Server</h2><p>这个服务部署起来相对轻松,从Github Releases下载好为arm架构编译好的程序,创建实例,解压文件,创建运行脚本。</p>\n<p>不过和其他相比,因为Code Server配置文件目录的原因。要在脚本头部添加复制命令来达到管理配置文件的效果。</p>\n<h2 id=\"aria2rpc\"><a href=\"#aria2rpc\" class=\"headerlink\" title=\"aria2rpc\"></a>aria2rpc</h2><p>相当轻松,直接略过。</p>\n<h2 id=\"MC服务器\"><a href=\"#MC服务器\" class=\"headerlink\" title=\"MC服务器\"></a>MC服务器</h2><p>这个是最考验手机性能的,而且因为arm架构的原因无法使用Forge服务端,只可以使用插件端,Fabric端和原版端,详细开服直接参照B站教学即可。</p>\n<h2 id=\"自动任务\"><a href=\"#自动任务\" class=\"headerlink\" title=\"自动任务\"></a>自动任务</h2><p>直接使用MCSManager中的计划任务即可,不过不支持WebHook就没法在自己的服务器上部署自动构建博客了。你问我为啥不用Github Action,问就是不会。</p>\n<p>自己挂了每日零点自动<code>yes y | pacman -Syyuu</code></p>\n<h1 id=\"总结\"><a href=\"#总结\" class=\"headerlink\" title=\"总结\"></a>总结</h1><p>在实际部署过程中,还是遇到的不少错误,不过还是跑起来了!(喜)</p>\n"},{"title":"如何安装Deepin(弃用)","date":"2023-05-27T11:52:29.000Z","index_img":"/img/如何安装Deepin/p991nZ8.png","_content":"\n## 特别注意\n本文章已被作者弃用,无法保证这篇文章的有效性。\n\n\n## 什么是Deepin\n\n(不想看的点击[这里](#准备工作))\n\n深度操作系统是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。深度操作系统由专业的操作系统研发团队和深度技术社区共同打造,其名称来自深度技术社区名称“deepin”一词,意思是对人生和未来深刻的追求和探索。 \n\n深度操作系统(deepin)是中国第一个具备国际影响力的Linux发行版本,截止至2019年7月25日,深度操作系统支持33种语言,用户遍布除了南极洲的其它六大洲。深度桌面环境(DDE)和大量的应用软件被移植到了包括Fedora、Ubuntu、Arch等十余个国际Linux发行版和社区。 \n\n他在Linux内核树的关系如下\n\n\n\n***\n\n## 准备工作\n\n### 查看启动方式\n\n按下 `Win+R` ,输入 `msinfo32` ,查看 `BIOS模式` 这一栏。\n\n\n\n如果你 `BIOS模式` 这一栏显示的不是 `UEFI` 的话,那么恭喜你,你可以直接点击[这里](#准备设备和软件)来查看下一步,如果是 `UEFI` 的话,请继续看下去。\n\n#### 关闭安全启动\n\n打开你的浏览器,搜索你电脑品牌或主板品牌的BIOS启动快捷键。\n\n重启电脑,在电脑屏幕黑掉后狂按BIOS启动快捷键。进入BIOS。\n\n使用键盘的上下左右按键来定位到 `Secure Boot` 将右边的 `Enabled` 改为 `Disabled` \n\n按下 `Esc` ,选择 `Save and Exit` 回车。退出。\n\n### 准备设备和软件\n\n\n\nDeepin V20镜像下载地址https://www.deepin.org/zh/download/\n\nVentoy下载地址https://blockhaity.lanzoux.com/i6okc0xgahzc\n\nDiskGenius下载地址https://blockhaity.lanzoux.com/i6okc0xgahzc\n\n***\n\n## 制作启动U盘\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n下载并解压Ventoy,将你的U盘插入你的电脑,进入ventoy-1.0.91文件夹,打开Ventoy2Disk。就可以看到如下界面。\n\n\n\n在设备一栏选择你的U盘,点击安装,连续点击两次确认。然后将下载好的Deepin V20镜像拷贝到U盘即可。\n\n## 进行磁盘分区\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n下载并解压DiskGenius,进入DiskGenius文件夹,打开DiskGenius。就可以看到如下界面。\n\n\n\n选择你的C盘或D盘,点击调整分区容量。如下图这样配置。后部容量在40~20GB即可,点击确定\n\n\n\n点击确认,再点击灰色区域,点击建立新分区,如下图这样配置。点击确定\n\n\n\n配置完成后,点击保存修改。\n\n## 从U盘启动并安装\n\n如何启动请参考https://wiki.edgeless.top/v2/guide/boot.html\n\ntips:如果正在 [查看启动方式](#查看启动方式) 中查看到是非UEFI的话,就一定再启动时不要选择带UEFI字段的启动项。\n\n在参照上面的链接的教程进入Ventoy界面后,双击回车。\n\n启动后,会进入如下图的界面,勾选 **我已仔细阅读.....** 左边的复选框,再点击下一步。\n\n\n\n出现如下图所示的界面,点击手动安装。\n\n\n\n如下图所示,点击右侧为ext4的分区。\n\n\n\n点击右侧的铅笔✏️图标,按下图所示配置。\n\n\n\n点击确定,点击下一步,再点击确定。再点击下一步,再点击继续安装。然后泡杯茶,等待即可\n\n~~Swap分区在消费级领域基本没用了还TM提醒~~\n\n然后显示如下图的界面,点击立即重启,然后拔掉U盘。等待进入系统后,安装自己的喜好配置即可。\n\n特别提醒,用户名不可以为中文和特殊符号,密码同理。密码要牢记!!!再后面的相关优化等步骤要用到。\n\n## 相关优化(有难度,可以不执行)\n\n点击左下角的程序列表,找到终端,打开,并执行以下命令\n\n``` Bash\nsudo apt update\nsudo apt install deepin-wine\nsudo apt install spark-store\n```\n\n## 相关问题\n\nQ:软件从哪里下。\n\nA:可以从Deepin自带的软件商城下载,跑过相关优化的可以从星火应用商店下载(推荐),如果要从软件官网下载的话,要认准Linux版,X64,deb格式\n\nQ:我想要切换回Windows,要怎么操作\n\nA:再开机时疯狂按上下键,选择 `Windows Boot Manager` 按下回车键即可进入Windows。","source":"_posts/如何安装Deepin.md","raw":"---\ntitle: 如何安装Deepin(弃用)\ntags:\n - 瞎说\ncategories: \n - 教程\ndate: 2023-05-27 19:52:29\nindex_img: /img/如何安装Deepin/p991nZ8.png\n---\n\n## 特别注意\n本文章已被作者弃用,无法保证这篇文章的有效性。\n\n\n## 什么是Deepin\n\n(不想看的点击[这里](#准备工作))\n\n深度操作系统是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。深度操作系统由专业的操作系统研发团队和深度技术社区共同打造,其名称来自深度技术社区名称“deepin”一词,意思是对人生和未来深刻的追求和探索。 \n\n深度操作系统(deepin)是中国第一个具备国际影响力的Linux发行版本,截止至2019年7月25日,深度操作系统支持33种语言,用户遍布除了南极洲的其它六大洲。深度桌面环境(DDE)和大量的应用软件被移植到了包括Fedora、Ubuntu、Arch等十余个国际Linux发行版和社区。 \n\n他在Linux内核树的关系如下\n\n\n\n***\n\n## 准备工作\n\n### 查看启动方式\n\n按下 `Win+R` ,输入 `msinfo32` ,查看 `BIOS模式` 这一栏。\n\n\n\n如果你 `BIOS模式` 这一栏显示的不是 `UEFI` 的话,那么恭喜你,你可以直接点击[这里](#准备设备和软件)来查看下一步,如果是 `UEFI` 的话,请继续看下去。\n\n#### 关闭安全启动\n\n打开你的浏览器,搜索你电脑品牌或主板品牌的BIOS启动快捷键。\n\n重启电脑,在电脑屏幕黑掉后狂按BIOS启动快捷键。进入BIOS。\n\n使用键盘的上下左右按键来定位到 `Secure Boot` 将右边的 `Enabled` 改为 `Disabled` \n\n按下 `Esc` ,选择 `Save and Exit` 回车。退出。\n\n### 准备设备和软件\n\n\n\nDeepin V20镜像下载地址https://www.deepin.org/zh/download/\n\nVentoy下载地址https://blockhaity.lanzoux.com/i6okc0xgahzc\n\nDiskGenius下载地址https://blockhaity.lanzoux.com/i6okc0xgahzc\n\n***\n\n## 制作启动U盘\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n**注意!该操作会清空你的U盘数据,请备份后操作!!!**\n\n下载并解压Ventoy,将你的U盘插入你的电脑,进入ventoy-1.0.91文件夹,打开Ventoy2Disk。就可以看到如下界面。\n\n\n\n在设备一栏选择你的U盘,点击安装,连续点击两次确认。然后将下载好的Deepin V20镜像拷贝到U盘即可。\n\n## 进行磁盘分区\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n**注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!**\n\n下载并解压DiskGenius,进入DiskGenius文件夹,打开DiskGenius。就可以看到如下界面。\n\n\n\n选择你的C盘或D盘,点击调整分区容量。如下图这样配置。后部容量在40~20GB即可,点击确定\n\n\n\n点击确认,再点击灰色区域,点击建立新分区,如下图这样配置。点击确定\n\n\n\n配置完成后,点击保存修改。\n\n## 从U盘启动并安装\n\n如何启动请参考https://wiki.edgeless.top/v2/guide/boot.html\n\ntips:如果正在 [查看启动方式](#查看启动方式) 中查看到是非UEFI的话,就一定再启动时不要选择带UEFI字段的启动项。\n\n在参照上面的链接的教程进入Ventoy界面后,双击回车。\n\n启动后,会进入如下图的界面,勾选 **我已仔细阅读.....** 左边的复选框,再点击下一步。\n\n\n\n出现如下图所示的界面,点击手动安装。\n\n\n\n如下图所示,点击右侧为ext4的分区。\n\n\n\n点击右侧的铅笔✏️图标,按下图所示配置。\n\n\n\n点击确定,点击下一步,再点击确定。再点击下一步,再点击继续安装。然后泡杯茶,等待即可\n\n~~Swap分区在消费级领域基本没用了还TM提醒~~\n\n然后显示如下图的界面,点击立即重启,然后拔掉U盘。等待进入系统后,安装自己的喜好配置即可。\n\n特别提醒,用户名不可以为中文和特殊符号,密码同理。密码要牢记!!!再后面的相关优化等步骤要用到。\n\n## 相关优化(有难度,可以不执行)\n\n点击左下角的程序列表,找到终端,打开,并执行以下命令\n\n``` Bash\nsudo apt update\nsudo apt install deepin-wine\nsudo apt install spark-store\n```\n\n## 相关问题\n\nQ:软件从哪里下。\n\nA:可以从Deepin自带的软件商城下载,跑过相关优化的可以从星火应用商店下载(推荐),如果要从软件官网下载的话,要认准Linux版,X64,deb格式\n\nQ:我想要切换回Windows,要怎么操作\n\nA:再开机时疯狂按上下键,选择 `Windows Boot Manager` 按下回车键即可进入Windows。","slug":"如何安装Deepin","published":1,"updated":"2025-06-11T01:43:02.213Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn4000ayblvfuzb2l1z","content":"<h2 id=\"特别注意\"><a href=\"#特别注意\" class=\"headerlink\" title=\"特别注意\"></a>特别注意</h2><p>本文章已被作者弃用,无法保证这篇文章的有效性。</p>\n<h2 id=\"什么是Deepin\"><a href=\"#什么是Deepin\" class=\"headerlink\" title=\"什么是Deepin\"></a>什么是Deepin</h2><p>(不想看的点击<a href=\"#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C\">这里</a>)</p>\n<p>深度操作系统是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。深度操作系统由专业的操作系统研发团队和深度技术社区共同打造,其名称来自深度技术社区名称“deepin”一词,意思是对人生和未来深刻的追求和探索。 </p>\n<p>深度操作系统(deepin)是中国第一个具备国际影响力的Linux发行版本,截止至2019年7月25日,深度操作系统支持33种语言,用户遍布除了南极洲的其它六大洲。深度桌面环境(DDE)和大量的应用软件被移植到了包括Fedora、Ubuntu、Arch等十余个国际Linux发行版和社区。 </p>\n<p>他在Linux内核树的关系如下</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHVZJx.png\" alt=\"Deepin所在内核树的关系\"></p>\n<hr>\n<h2 id=\"准备工作\"><a href=\"#准备工作\" class=\"headerlink\" title=\"准备工作\"></a>准备工作</h2><h3 id=\"查看启动方式\"><a href=\"#查看启动方式\" class=\"headerlink\" title=\"查看启动方式\"></a>查看启动方式</h3><p>按下 <code>Win+R</code> ,输入 <code>msinfo32</code> ,查看 <code>BIOS模式</code> 这一栏。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHBMwQ.png\" alt=\"msinfo32界面\"></p>\n<p>如果你 <code>BIOS模式</code> 这一栏显示的不是 <code>UEFI</code> 的话,那么恭喜你,你可以直接点击<a href=\"#%E5%87%86%E5%A4%87%E8%AE%BE%E5%A4%87%E5%92%8C%E8%BD%AF%E4%BB%B6\">这里</a>来查看下一步,如果是 <code>UEFI</code> 的话,请继续看下去。</p>\n<h4 id=\"关闭安全启动\"><a href=\"#关闭安全启动\" class=\"headerlink\" title=\"关闭安全启动\"></a>关闭安全启动</h4><p>打开你的浏览器,搜索你电脑品牌或主板品牌的BIOS启动快捷键。</p>\n<p>重启电脑,在电脑屏幕黑掉后狂按BIOS启动快捷键。进入BIOS。</p>\n<p>使用键盘的上下左右按键来定位到 <code>Secure Boot</code> 将右边的 <code>Enabled</code> 改为 <code>Disabled</code> </p>\n<p>按下 <code>Esc</code> ,选择 <code>Save and Exit</code> 回车。退出。</p>\n<h3 id=\"准备设备和软件\"><a href=\"#准备设备和软件\" class=\"headerlink\" title=\"准备设备和软件\"></a>准备设备和软件</h3><p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9SdTN6.png\" alt=\"所需设备和软件\"></p>\n<p>Deepin V20镜像下载地址<a href=\"https://www.deepin.org/zh/download/\">https://www.deepin.org/zh/download/</a></p>\n<p>Ventoy下载地址<a href=\"https://blockhaity.lanzoux.com/i6okc0xgahzc\">https://blockhaity.lanzoux.com/i6okc0xgahzc</a></p>\n<p>DiskGenius下载地址<a href=\"https://blockhaity.lanzoux.com/i6okc0xgahzc\">https://blockhaity.lanzoux.com/i6okc0xgahzc</a></p>\n<hr>\n<h2 id=\"制作启动U盘\"><a href=\"#制作启动U盘\" class=\"headerlink\" title=\"制作启动U盘\"></a>制作启动U盘</h2><p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p>下载并解压Ventoy,将你的U盘插入你的电脑,进入ventoy-1.0.91文件夹,打开Ventoy2Disk。就可以看到如下界面。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHBeQf.png\" alt=\"Ventoy界面\"></p>\n<p>在设备一栏选择你的U盘,点击安装,连续点击两次确认。然后将下载好的Deepin V20镜像拷贝到U盘即可。</p>\n<h2 id=\"进行磁盘分区\"><a href=\"#进行磁盘分区\" class=\"headerlink\" title=\"进行磁盘分区\"></a>进行磁盘分区</h2><p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p>下载并解压DiskGenius,进入DiskGenius文件夹,打开DiskGenius。就可以看到如下界面。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9p7z7R.png\" alt=\"DiskGenius界面\"></p>\n<p>选择你的C盘或D盘,点击调整分区容量。如下图这样配置。后部容量在40~20GB即可,点击确定</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9pHNEn.png\" alt=\"调整分区容量\"></p>\n<p>点击确认,再点击灰色区域,点击建立新分区,如下图这样配置。点击确定</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9pquSf.png\" alt=\"建立分区\"></p>\n<p>配置完成后,点击保存修改。</p>\n<h2 id=\"从U盘启动并安装\"><a href=\"#从U盘启动并安装\" class=\"headerlink\" title=\"从U盘启动并安装\"></a>从U盘启动并安装</h2><p>如何启动请参考<a href=\"https://wiki.edgeless.top/v2/guide/boot.html\">https://wiki.edgeless.top/v2/guide/boot.html</a></p>\n<p>tips:如果正在 <a href=\"#%E6%9F%A5%E7%9C%8B%E5%90%AF%E5%8A%A8%E6%96%B9%E5%BC%8F\">查看启动方式</a> 中查看到是非UEFI的话,就一定再启动时不要选择带UEFI字段的启动项。</p>\n<p>在参照上面的链接的教程进入Ventoy界面后,双击回车。</p>\n<p>启动后,会进入如下图的界面,勾选 <strong>我已仔细阅读…..</strong> 左边的复选框,再点击下一步。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991nZ8.png\" alt=\"安装界面\"></p>\n<p>出现如下图所示的界面,点击手动安装。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991udS.png\" alt=\"安装界面1\"></p>\n<p>如下图所示,点击右侧为ext4的分区。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991KIg.png\" alt=\"安装界面2\"></p>\n<p>点击右侧的铅笔✏️图标,按下图所示配置。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991udS.png\" alt=\"分区配置\"></p>\n<p>点击确定,点击下一步,再点击确定。再点击下一步,再点击继续安装。然后泡杯茶,等待即可</p>\n<p><del>Swap分区在消费级领域基本没用了还TM提醒</del></p>\n<p>然后显示如下图的界面,点击立即重启,然后拔掉U盘。等待进入系统后,安装自己的喜好配置即可。</p>\n<p>特别提醒,用户名不可以为中文和特殊符号,密码同理。密码要牢记!!!再后面的相关优化等步骤要用到。</p>\n<h2 id=\"相关优化(有难度,可以不执行)\"><a href=\"#相关优化(有难度,可以不执行)\" class=\"headerlink\" title=\"相关优化(有难度,可以不执行)\"></a>相关优化(有难度,可以不执行)</h2><p>点击左下角的程序列表,找到终端,打开,并执行以下命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Bash\">sudo apt update<br>sudo apt install deepin-wine<br>sudo apt install spark-store<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"相关问题\"><a href=\"#相关问题\" class=\"headerlink\" title=\"相关问题\"></a>相关问题</h2><p>Q:软件从哪里下。</p>\n<p>A:可以从Deepin自带的软件商城下载,跑过相关优化的可以从星火应用商店下载(推荐),如果要从软件官网下载的话,要认准Linux版,X64,deb格式</p>\n<p>Q:我想要切换回Windows,要怎么操作</p>\n<p>A:再开机时疯狂按上下键,选择 <code>Windows Boot Manager</code> 按下回车键即可进入Windows。</p>\n","excerpt":"","more":"<h2 id=\"特别注意\"><a href=\"#特别注意\" class=\"headerlink\" title=\"特别注意\"></a>特别注意</h2><p>本文章已被作者弃用,无法保证这篇文章的有效性。</p>\n<h2 id=\"什么是Deepin\"><a href=\"#什么是Deepin\" class=\"headerlink\" title=\"什么是Deepin\"></a>什么是Deepin</h2><p>(不想看的点击<a href=\"#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C\">这里</a>)</p>\n<p>深度操作系统是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。深度操作系统由专业的操作系统研发团队和深度技术社区共同打造,其名称来自深度技术社区名称“deepin”一词,意思是对人生和未来深刻的追求和探索。 </p>\n<p>深度操作系统(deepin)是中国第一个具备国际影响力的Linux发行版本,截止至2019年7月25日,深度操作系统支持33种语言,用户遍布除了南极洲的其它六大洲。深度桌面环境(DDE)和大量的应用软件被移植到了包括Fedora、Ubuntu、Arch等十余个国际Linux发行版和社区。 </p>\n<p>他在Linux内核树的关系如下</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHVZJx.png\" alt=\"Deepin所在内核树的关系\"></p>\n<hr>\n<h2 id=\"准备工作\"><a href=\"#准备工作\" class=\"headerlink\" title=\"准备工作\"></a>准备工作</h2><h3 id=\"查看启动方式\"><a href=\"#查看启动方式\" class=\"headerlink\" title=\"查看启动方式\"></a>查看启动方式</h3><p>按下 <code>Win+R</code> ,输入 <code>msinfo32</code> ,查看 <code>BIOS模式</code> 这一栏。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHBMwQ.png\" alt=\"msinfo32界面\"></p>\n<p>如果你 <code>BIOS模式</code> 这一栏显示的不是 <code>UEFI</code> 的话,那么恭喜你,你可以直接点击<a href=\"#%E5%87%86%E5%A4%87%E8%AE%BE%E5%A4%87%E5%92%8C%E8%BD%AF%E4%BB%B6\">这里</a>来查看下一步,如果是 <code>UEFI</code> 的话,请继续看下去。</p>\n<h4 id=\"关闭安全启动\"><a href=\"#关闭安全启动\" class=\"headerlink\" title=\"关闭安全启动\"></a>关闭安全启动</h4><p>打开你的浏览器,搜索你电脑品牌或主板品牌的BIOS启动快捷键。</p>\n<p>重启电脑,在电脑屏幕黑掉后狂按BIOS启动快捷键。进入BIOS。</p>\n<p>使用键盘的上下左右按键来定位到 <code>Secure Boot</code> 将右边的 <code>Enabled</code> 改为 <code>Disabled</code> </p>\n<p>按下 <code>Esc</code> ,选择 <code>Save and Exit</code> 回车。退出。</p>\n<h3 id=\"准备设备和软件\"><a href=\"#准备设备和软件\" class=\"headerlink\" title=\"准备设备和软件\"></a>准备设备和软件</h3><p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9SdTN6.png\" alt=\"所需设备和软件\"></p>\n<p>Deepin V20镜像下载地址<a href=\"https://www.deepin.org/zh/download/\">https://www.deepin.org/zh/download/</a></p>\n<p>Ventoy下载地址<a href=\"https://blockhaity.lanzoux.com/i6okc0xgahzc\">https://blockhaity.lanzoux.com/i6okc0xgahzc</a></p>\n<p>DiskGenius下载地址<a href=\"https://blockhaity.lanzoux.com/i6okc0xgahzc\">https://blockhaity.lanzoux.com/i6okc0xgahzc</a></p>\n<hr>\n<h2 id=\"制作启动U盘\"><a href=\"#制作启动U盘\" class=\"headerlink\" title=\"制作启动U盘\"></a>制作启动U盘</h2><p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p><strong>注意!该操作会清空你的U盘数据,请备份后操作!!!</strong></p>\n<p>下载并解压Ventoy,将你的U盘插入你的电脑,进入ventoy-1.0.91文件夹,打开Ventoy2Disk。就可以看到如下界面。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/ppHBeQf.png\" alt=\"Ventoy界面\"></p>\n<p>在设备一栏选择你的U盘,点击安装,连续点击两次确认。然后将下载好的Deepin V20镜像拷贝到U盘即可。</p>\n<h2 id=\"进行磁盘分区\"><a href=\"#进行磁盘分区\" class=\"headerlink\" title=\"进行磁盘分区\"></a>进行磁盘分区</h2><p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p><strong>注意!该操作若是不规范或误操作,轻则系统暴毙,数据丢失。重则硬盘分区表损坏!请谨慎操作!!!</strong></p>\n<p>下载并解压DiskGenius,进入DiskGenius文件夹,打开DiskGenius。就可以看到如下界面。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9p7z7R.png\" alt=\"DiskGenius界面\"></p>\n<p>选择你的C盘或D盘,点击调整分区容量。如下图这样配置。后部容量在40~20GB即可,点击确定</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9pHNEn.png\" alt=\"调整分区容量\"></p>\n<p>点击确认,再点击灰色区域,点击建立新分区,如下图这样配置。点击确定</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p9pquSf.png\" alt=\"建立分区\"></p>\n<p>配置完成后,点击保存修改。</p>\n<h2 id=\"从U盘启动并安装\"><a href=\"#从U盘启动并安装\" class=\"headerlink\" title=\"从U盘启动并安装\"></a>从U盘启动并安装</h2><p>如何启动请参考<a href=\"https://wiki.edgeless.top/v2/guide/boot.html\">https://wiki.edgeless.top/v2/guide/boot.html</a></p>\n<p>tips:如果正在 <a href=\"#%E6%9F%A5%E7%9C%8B%E5%90%AF%E5%8A%A8%E6%96%B9%E5%BC%8F\">查看启动方式</a> 中查看到是非UEFI的话,就一定再启动时不要选择带UEFI字段的启动项。</p>\n<p>在参照上面的链接的教程进入Ventoy界面后,双击回车。</p>\n<p>启动后,会进入如下图的界面,勾选 <strong>我已仔细阅读…..</strong> 左边的复选框,再点击下一步。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991nZ8.png\" alt=\"安装界面\"></p>\n<p>出现如下图所示的界面,点击手动安装。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991udS.png\" alt=\"安装界面1\"></p>\n<p>如下图所示,点击右侧为ext4的分区。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991KIg.png\" alt=\"安装界面2\"></p>\n<p>点击右侧的铅笔✏️图标,按下图所示配置。</p>\n<p><img src=\"/img/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85Deepin/p991udS.png\" alt=\"分区配置\"></p>\n<p>点击确定,点击下一步,再点击确定。再点击下一步,再点击继续安装。然后泡杯茶,等待即可</p>\n<p><del>Swap分区在消费级领域基本没用了还TM提醒</del></p>\n<p>然后显示如下图的界面,点击立即重启,然后拔掉U盘。等待进入系统后,安装自己的喜好配置即可。</p>\n<p>特别提醒,用户名不可以为中文和特殊符号,密码同理。密码要牢记!!!再后面的相关优化等步骤要用到。</p>\n<h2 id=\"相关优化(有难度,可以不执行)\"><a href=\"#相关优化(有难度,可以不执行)\" class=\"headerlink\" title=\"相关优化(有难度,可以不执行)\"></a>相关优化(有难度,可以不执行)</h2><p>点击左下角的程序列表,找到终端,打开,并执行以下命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs Bash\">sudo apt update<br>sudo apt install deepin-wine<br>sudo apt install spark-store<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"相关问题\"><a href=\"#相关问题\" class=\"headerlink\" title=\"相关问题\"></a>相关问题</h2><p>Q:软件从哪里下。</p>\n<p>A:可以从Deepin自带的软件商城下载,跑过相关优化的可以从星火应用商店下载(推荐),如果要从软件官网下载的话,要认准Linux版,X64,deb格式</p>\n<p>Q:我想要切换回Windows,要怎么操作</p>\n<p>A:再开机时疯狂按上下键,选择 <code>Windows Boot Manager</code> 按下回车键即可进入Windows。</p>\n"},{"title":"旧手机重新利用指南","date":"2024-02-09T12:08:39.000Z","_content":"\n# 序言\n\n在当今数字化时代的璀璨篇章中,智能手机已成为我们生活与工作不可分割的伙伴,是我们探索数字世界的神奇钥匙。随着科技界不断推陈出新,一部手机的平均服务周期约莫2.2年,这一现象不仅反映了科技发展的惊人速度,也意味着大量旧手机将步入退役阶段。然而,这些曾经的科技精灵,并未真正失去它们的魔力。它们依然拥有转化为宝贵科技资源的无限潜能,等待着我们以创新的思维去挖掘。\n\n本篇文章旨在深入探讨如何通过科技创新,实现旧手机的高效回收与再利用,从而开启它们的第二生命。\n\n# 材料准备\n\n一部手机,ZeroTermux软件(提供Linux终端服务,项目主页[https://github.com/hanxinhao000/ZeroTermux.git](https://github.com/hanxinhao000/ZeroTermux.git))\n\n# 必须步骤\n\n## 更换Termux软件源\n\n参考USTC的换源步骤\n\n>使用说明\n>==============\n>\n>Termux 目前(2022 年 8 月)的官方源为 packages.termux.dev,我们推荐先更新 ``termux-tools`` 软件包,然后直接使用 ``termux-change-repo`` 先选择 Single mirror,再选择 mirrors.ustc.edu.cn 即可。\n>\n>如果想要手动更换 Termux APT 源的话,可以编辑 :file:`/data/data/com.termux/files/usr/etc/apt/sources.list` 为如下内容\n>\n>```\n>deb https://mirrors.ustc.edu.cn/termux/apt/termux-main stable main\n>```\n>\n>或者,你也可以使用 ``sed`` 命令进行文本替换:\n>\n>``` bash\n>sed -i 's@packages.termux.org@mirrors.ustc.edu.cn/termux@' $PREFIX/etc/apt/sources.list\n>pkg update\n>```\n>\n>注:Termux 会自动将环境变量 ``$PREFIX`` 设定为 :file:`/data/data/com.termux/files/usr`\n>\n>**warning**\n> Google Play 上的 Termux 已被弃用,如安装会产生兼容性问题。请通过 GitHub 或 F-Droid 来安装 Termux。\n\n在完成这些步骤后,执行下列命令\n``` bash\nyes y | pkg upgrade\n```\n\n## 安装管理面板(mcsmanager)\n\n下列可选功能的部署大多都会以此面板作基础\n\n首先,安装nodejs,在终端执行`pkg install nodejs-lts -y`,如果不想使用lts版本的nodejs的话,可以执行`pkg install nodejs -y`来安装最新适配Termux的nodejs\n\n然后,依次执行以下命令\n\n``` bash\n# 安装git\npkg install git -y\n\n# 克隆面板端程序(Web)\ngit clone https://gitee.com/MCSManager/MCSManager-Web-Production.git\nmv MCSManager-Web-Production web\n# 补全依赖\ncd ./web/\nnpm install --production --registry=https://registry.npmmirror.com/\ncd ../\n\n# 克隆守护进程程序(Daemon)\ngit clone https://gitee.com/MCSManager/MCSManager-Daemon-Production.git\nmv MCSManager-Daemon-Production daemon\n\n# 补全依赖\ncd ./daemon/\nnpm install --production --registry=https://registry.npmmirror.com/\ncd ../\n```\n\n最后,创建启动脚本,可以使用nano编辑器来创建\n\n```\n# start-daemon.sh\ncd ./daemon/\nnode app.js\n\n# start-web.sh\ncd ./web/\nnode app.js\n```\n\n不要忘记给两个脚本赋予可执行权限\n\n启动面板只需要开启两个会话并分别输入`./start-daemon.sh`和`./start-web.sh`\n\n建议自行创建实例目录结构,避免找不到\n\n# 可选应用部署\n\n下列内容可以按需部署\n\n## ssh服务\n\n运行`pkg install openssh termux-auth`来安装ssh服务\n\n然后运行`whoami`来查看用户,运行`passwd`来设置密码(密码不显示,输入两次)\n\n最后运行`sshd`\n\n接下来就可以在其他电脑上输入`ssh (用户名)@(IP地址) -p 8022`来连接到你的手机.\n\n## 网页服务(nginx)\n\n首先运行`pkg install nginx -y`,然后运行`nginx`编辑 **/data/data/com.termux/files/usr/etc/nginx/nginx.conf** 将端口,网站根目录修改为一个更加方便的目录\n\n最后根据mcsmanager的自定义实例要求来设置实例\n\n实例名(参考):nginx\n\n启动命令:nginx\n\n目录(参考):/data/data/com.termux/files/home/examples/nginx\n\n## NAS服务(Cloudreve)\n\n### Cloudreve主程序\n\n首先,下载Cloudreve的程序.\n\n然后,根据mcsmanager的自定义实例要求来设置实例\n\n实例名(参考):Cloudreve\n\n启动命令:`bash start.sh`\n\n目录(参考):/data/data/com.termux/files/home/examples/cloudreve\n\n最后,上传程序主程序,编写脚本,名称`start.sh`,内容为\n\n``` bash\nchmod 777 ./cloudreve\n./cloudreve\n```\n\n接下来就可以在 **(IP地址):5212** 访问cloudreve主程序,然后根据面板上出现的管理员帐号和密码来登录进行管理\n\n### 配置离线下载\n\n首先,在终端里运行`pkg install aria2 -y`来安装aria2\n\n然后根据mcsmanager的自定义实例要求来设置实例(是不是有点太啰嗦了)\n\n启动命令:`aria2c --conf-path=aria2.conf`\n\n然后,创建 **aria2.conf** 和 **aria2.session** 文件,**aria2.session** 文件为空,**aria2.conf** 可以参考我的来配置\n\n[文件] [aria2.conf](/resource/旧手机重新利用指南/aria2.conf)\n\n最后,启动实例,并进入Cloudreve的管理面板配置离线下载,即可使用离线下载功能\n\n# 结语\n\n在本篇《旧手机重新利用指南》的博客文章中,我们深入探讨了如何将旧手机赋予新的生命。通过挖掘旧手机的潜力,我们不仅延长了它们的使用寿命,还为环保事业贡献了力量。\n\n重新利用旧手机不仅仅是一种行为,更是一种态度和责任。在享受科技带来的便利的同时,我们也要意识到资源有限、环境宝贵。通过重新利用旧手机,我们为减少电子垃圾、节约资源做出了积极的努力。\n\n每一个人都可以参与到环保事业中来,从自身做起,关注环境保护,推动可持续发展。感谢您阅读本文,希望这些指南能够启发您对旧手机再利用的想法,并且能够在日常生活中践行可持续发展的理念。让我们共同努力,为创造一个更加清洁、美丽的地球而行动!\n\n开头结尾:ChatGPT\n\n实际编写者:BlockHaity","source":"_posts/旧手机重新利用指南.md","raw":"---\ntitle: 旧手机重新利用指南\ndate: 2024-02-09 20:08:39\ntags: 旧手机利用\ncategories: 旧手机利用\n---\n\n# 序言\n\n在当今数字化时代的璀璨篇章中,智能手机已成为我们生活与工作不可分割的伙伴,是我们探索数字世界的神奇钥匙。随着科技界不断推陈出新,一部手机的平均服务周期约莫2.2年,这一现象不仅反映了科技发展的惊人速度,也意味着大量旧手机将步入退役阶段。然而,这些曾经的科技精灵,并未真正失去它们的魔力。它们依然拥有转化为宝贵科技资源的无限潜能,等待着我们以创新的思维去挖掘。\n\n本篇文章旨在深入探讨如何通过科技创新,实现旧手机的高效回收与再利用,从而开启它们的第二生命。\n\n# 材料准备\n\n一部手机,ZeroTermux软件(提供Linux终端服务,项目主页[https://github.com/hanxinhao000/ZeroTermux.git](https://github.com/hanxinhao000/ZeroTermux.git))\n\n# 必须步骤\n\n## 更换Termux软件源\n\n参考USTC的换源步骤\n\n>使用说明\n>==============\n>\n>Termux 目前(2022 年 8 月)的官方源为 packages.termux.dev,我们推荐先更新 ``termux-tools`` 软件包,然后直接使用 ``termux-change-repo`` 先选择 Single mirror,再选择 mirrors.ustc.edu.cn 即可。\n>\n>如果想要手动更换 Termux APT 源的话,可以编辑 :file:`/data/data/com.termux/files/usr/etc/apt/sources.list` 为如下内容\n>\n>```\n>deb https://mirrors.ustc.edu.cn/termux/apt/termux-main stable main\n>```\n>\n>或者,你也可以使用 ``sed`` 命令进行文本替换:\n>\n>``` bash\n>sed -i 's@packages.termux.org@mirrors.ustc.edu.cn/termux@' $PREFIX/etc/apt/sources.list\n>pkg update\n>```\n>\n>注:Termux 会自动将环境变量 ``$PREFIX`` 设定为 :file:`/data/data/com.termux/files/usr`\n>\n>**warning**\n> Google Play 上的 Termux 已被弃用,如安装会产生兼容性问题。请通过 GitHub 或 F-Droid 来安装 Termux。\n\n在完成这些步骤后,执行下列命令\n``` bash\nyes y | pkg upgrade\n```\n\n## 安装管理面板(mcsmanager)\n\n下列可选功能的部署大多都会以此面板作基础\n\n首先,安装nodejs,在终端执行`pkg install nodejs-lts -y`,如果不想使用lts版本的nodejs的话,可以执行`pkg install nodejs -y`来安装最新适配Termux的nodejs\n\n然后,依次执行以下命令\n\n``` bash\n# 安装git\npkg install git -y\n\n# 克隆面板端程序(Web)\ngit clone https://gitee.com/MCSManager/MCSManager-Web-Production.git\nmv MCSManager-Web-Production web\n# 补全依赖\ncd ./web/\nnpm install --production --registry=https://registry.npmmirror.com/\ncd ../\n\n# 克隆守护进程程序(Daemon)\ngit clone https://gitee.com/MCSManager/MCSManager-Daemon-Production.git\nmv MCSManager-Daemon-Production daemon\n\n# 补全依赖\ncd ./daemon/\nnpm install --production --registry=https://registry.npmmirror.com/\ncd ../\n```\n\n最后,创建启动脚本,可以使用nano编辑器来创建\n\n```\n# start-daemon.sh\ncd ./daemon/\nnode app.js\n\n# start-web.sh\ncd ./web/\nnode app.js\n```\n\n不要忘记给两个脚本赋予可执行权限\n\n启动面板只需要开启两个会话并分别输入`./start-daemon.sh`和`./start-web.sh`\n\n建议自行创建实例目录结构,避免找不到\n\n# 可选应用部署\n\n下列内容可以按需部署\n\n## ssh服务\n\n运行`pkg install openssh termux-auth`来安装ssh服务\n\n然后运行`whoami`来查看用户,运行`passwd`来设置密码(密码不显示,输入两次)\n\n最后运行`sshd`\n\n接下来就可以在其他电脑上输入`ssh (用户名)@(IP地址) -p 8022`来连接到你的手机.\n\n## 网页服务(nginx)\n\n首先运行`pkg install nginx -y`,然后运行`nginx`编辑 **/data/data/com.termux/files/usr/etc/nginx/nginx.conf** 将端口,网站根目录修改为一个更加方便的目录\n\n最后根据mcsmanager的自定义实例要求来设置实例\n\n实例名(参考):nginx\n\n启动命令:nginx\n\n目录(参考):/data/data/com.termux/files/home/examples/nginx\n\n## NAS服务(Cloudreve)\n\n### Cloudreve主程序\n\n首先,下载Cloudreve的程序.\n\n然后,根据mcsmanager的自定义实例要求来设置实例\n\n实例名(参考):Cloudreve\n\n启动命令:`bash start.sh`\n\n目录(参考):/data/data/com.termux/files/home/examples/cloudreve\n\n最后,上传程序主程序,编写脚本,名称`start.sh`,内容为\n\n``` bash\nchmod 777 ./cloudreve\n./cloudreve\n```\n\n接下来就可以在 **(IP地址):5212** 访问cloudreve主程序,然后根据面板上出现的管理员帐号和密码来登录进行管理\n\n### 配置离线下载\n\n首先,在终端里运行`pkg install aria2 -y`来安装aria2\n\n然后根据mcsmanager的自定义实例要求来设置实例(是不是有点太啰嗦了)\n\n启动命令:`aria2c --conf-path=aria2.conf`\n\n然后,创建 **aria2.conf** 和 **aria2.session** 文件,**aria2.session** 文件为空,**aria2.conf** 可以参考我的来配置\n\n[文件] [aria2.conf](/resource/旧手机重新利用指南/aria2.conf)\n\n最后,启动实例,并进入Cloudreve的管理面板配置离线下载,即可使用离线下载功能\n\n# 结语\n\n在本篇《旧手机重新利用指南》的博客文章中,我们深入探讨了如何将旧手机赋予新的生命。通过挖掘旧手机的潜力,我们不仅延长了它们的使用寿命,还为环保事业贡献了力量。\n\n重新利用旧手机不仅仅是一种行为,更是一种态度和责任。在享受科技带来的便利的同时,我们也要意识到资源有限、环境宝贵。通过重新利用旧手机,我们为减少电子垃圾、节约资源做出了积极的努力。\n\n每一个人都可以参与到环保事业中来,从自身做起,关注环境保护,推动可持续发展。感谢您阅读本文,希望这些指南能够启发您对旧手机再利用的想法,并且能够在日常生活中践行可持续发展的理念。让我们共同努力,为创造一个更加清洁、美丽的地球而行动!\n\n开头结尾:ChatGPT\n\n实际编写者:BlockHaity","slug":"旧手机重新利用指南","published":1,"updated":"2025-06-11T01:43:02.213Z","comments":1,"layout":"post","photos":[],"_id":"cmi17mdn8000zyblv9fmqah1f","content":"<h1 id=\"序言\"><a href=\"#序言\" class=\"headerlink\" title=\"序言\"></a>序言</h1><p>在当今数字化时代的璀璨篇章中,智能手机已成为我们生活与工作不可分割的伙伴,是我们探索数字世界的神奇钥匙。随着科技界不断推陈出新,一部手机的平均服务周期约莫2.2年,这一现象不仅反映了科技发展的惊人速度,也意味着大量旧手机将步入退役阶段。然而,这些曾经的科技精灵,并未真正失去它们的魔力。它们依然拥有转化为宝贵科技资源的无限潜能,等待着我们以创新的思维去挖掘。</p>\n<p>本篇文章旨在深入探讨如何通过科技创新,实现旧手机的高效回收与再利用,从而开启它们的第二生命。</p>\n<h1 id=\"材料准备\"><a href=\"#材料准备\" class=\"headerlink\" title=\"材料准备\"></a>材料准备</h1><p>一部手机,ZeroTermux软件(提供Linux终端服务,项目主页<a href=\"https://github.com/hanxinhao000/ZeroTermux.git\">https://github.com/hanxinhao000/ZeroTermux.git</a>)</p>\n<h1 id=\"必须步骤\"><a href=\"#必须步骤\" class=\"headerlink\" title=\"必须步骤\"></a>必须步骤</h1><h2 id=\"更换Termux软件源\"><a href=\"#更换Termux软件源\" class=\"headerlink\" title=\"更换Termux软件源\"></a>更换Termux软件源</h2><p>参考USTC的换源步骤</p>\n<blockquote>\n<h1 id=\"使用说明\"><a href=\"#使用说明\" class=\"headerlink\" title=\"使用说明\"></a>使用说明</h1><p>Termux 目前(2022 年 8 月)的官方源为 packages.termux.dev,我们推荐先更新 <code>termux-tools</code> 软件包,然后直接使用 <code>termux-change-repo</code> 先选择 Single mirror,再选择 mirrors.ustc.edu.cn 即可。</p>\n<p>如果想要手动更换 Termux APT 源的话,可以编辑 :file:<code>/data/data/com.termux/files/usr/etc/apt/sources.list</code> 为如下内容</p>\n<figure class=\"highlight awk\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs awk\">>deb https:<span class=\"hljs-regexp\">//mi</span>rrors.ustc.edu.cn<span class=\"hljs-regexp\">/termux/</span>apt/termux-main stable main<br></code></pre></td></tr></table></figure>\n\n<p>或者,你也可以使用 <code>sed</code> 命令进行文本替换:</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">>sed -i <span class=\"hljs-string\">'s@packages.termux.org@mirrors.ustc.edu.cn/termux@'</span> <span class=\"hljs-variable\">$PREFIX</span>/etc/apt/sources.list<br>>pkg update<br></code></pre></td></tr></table></figure>\n\n<p>注:Termux 会自动将环境变量 <code>$PREFIX</code> 设定为 :file:<code>/data/data/com.termux/files/usr</code></p>\n<p><strong>warning</strong><br> Google Play 上的 Termux 已被弃用,如安装会产生兼容性问题。请通过 GitHub 或 F-Droid 来安装 Termux。</p>\n</blockquote>\n<p>在完成这些步骤后,执行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">yes</span> y | pkg upgrade<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"安装管理面板(mcsmanager)\"><a href=\"#安装管理面板(mcsmanager)\" class=\"headerlink\" title=\"安装管理面板(mcsmanager)\"></a>安装管理面板(mcsmanager)</h2><p>下列可选功能的部署大多都会以此面板作基础</p>\n<p>首先,安装nodejs,在终端执行<code>pkg install nodejs-lts -y</code>,如果不想使用lts版本的nodejs的话,可以执行<code>pkg install nodejs -y</code>来安装最新适配Termux的nodejs</p>\n<p>然后,依次执行以下命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-comment\"># 安装git</span><br>pkg install git -y<br><br><span class=\"hljs-comment\"># 克隆面板端程序(Web)</span><br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/MCSManager/MCSManager-Web-Production.git<br><span class=\"hljs-built_in\">mv</span> MCSManager-Web-Production web<br><span class=\"hljs-comment\"># 补全依赖</span><br><span class=\"hljs-built_in\">cd</span> ./web/<br>npm install --production --registry=https://registry.npmmirror.com/<br><span class=\"hljs-built_in\">cd</span> ../<br><br><span class=\"hljs-comment\"># 克隆守护进程程序(Daemon)</span><br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/MCSManager/MCSManager-Daemon-Production.git<br><span class=\"hljs-built_in\">mv</span> MCSManager-Daemon-Production daemon<br><br><span class=\"hljs-comment\"># 补全依赖</span><br><span class=\"hljs-built_in\">cd</span> ./daemon/<br>npm install --production --registry=https://registry.npmmirror.com/<br><span class=\"hljs-built_in\">cd</span> ../<br></code></pre></td></tr></table></figure>\n\n<p>最后,创建启动脚本,可以使用nano编辑器来创建</p>\n<figure class=\"highlight crmsh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs crmsh\"><span class=\"hljs-comment\"># start-daemon.sh</span><br>cd ./daemon/<br><span class=\"hljs-keyword\">node</span> <span class=\"hljs-title\">app</span>.js<br><br><span class=\"hljs-comment\"># start-web.sh</span><br>cd ./web/<br><span class=\"hljs-keyword\">node</span> <span class=\"hljs-title\">app</span>.js<br></code></pre></td></tr></table></figure>\n\n<p>不要忘记给两个脚本赋予可执行权限</p>\n<p>启动面板只需要开启两个会话并分别输入<code>./start-daemon.sh</code>和<code>./start-web.sh</code></p>\n<p>建议自行创建实例目录结构,避免找不到</p>\n<h1 id=\"可选应用部署\"><a href=\"#可选应用部署\" class=\"headerlink\" title=\"可选应用部署\"></a>可选应用部署</h1><p>下列内容可以按需部署</p>\n<h2 id=\"ssh服务\"><a href=\"#ssh服务\" class=\"headerlink\" title=\"ssh服务\"></a>ssh服务</h2><p>运行<code>pkg install openssh termux-auth</code>来安装ssh服务</p>\n<p>然后运行<code>whoami</code>来查看用户,运行<code>passwd</code>来设置密码(密码不显示,输入两次)</p>\n<p>最后运行<code>sshd</code></p>\n<p>接下来就可以在其他电脑上输入<code>ssh (用户名)@(IP地址) -p 8022</code>来连接到你的手机.</p>\n<h2 id=\"网页服务(nginx)\"><a href=\"#网页服务(nginx)\" class=\"headerlink\" title=\"网页服务(nginx)\"></a>网页服务(nginx)</h2><p>首先运行<code>pkg install nginx -y</code>,然后运行<code>nginx</code>编辑 <strong>/data/data/com.termux/files/usr/etc/nginx/nginx.conf</strong> 将端口,网站根目录修改为一个更加方便的目录</p>\n<p>最后根据mcsmanager的自定义实例要求来设置实例</p>\n<p>实例名(参考):nginx</p>\n<p>启动命令:nginx</p>\n<p>目录(参考):/data/data/com.termux/files/home/examples/nginx</p>\n<h2 id=\"NAS服务(Cloudreve)\"><a href=\"#NAS服务(Cloudreve)\" class=\"headerlink\" title=\"NAS服务(Cloudreve)\"></a>NAS服务(Cloudreve)</h2><h3 id=\"Cloudreve主程序\"><a href=\"#Cloudreve主程序\" class=\"headerlink\" title=\"Cloudreve主程序\"></a>Cloudreve主程序</h3><p>首先,下载Cloudreve的程序.</p>\n<p>然后,根据mcsmanager的自定义实例要求来设置实例</p>\n<p>实例名(参考):Cloudreve</p>\n<p>启动命令:<code>bash start.sh</code></p>\n<p>目录(参考):/data/data/com.termux/files/home/examples/cloudreve</p>\n<p>最后,上传程序主程序,编写脚本,名称<code>start.sh</code>,内容为</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">chmod</span> 777 ./cloudreve<br>./cloudreve<br></code></pre></td></tr></table></figure>\n\n<p>接下来就可以在 <strong>(IP地址):5212</strong> 访问cloudreve主程序,然后根据面板上出现的管理员帐号和密码来登录进行管理</p>\n<h3 id=\"配置离线下载\"><a href=\"#配置离线下载\" class=\"headerlink\" title=\"配置离线下载\"></a>配置离线下载</h3><p>首先,在终端里运行<code>pkg install aria2 -y</code>来安装aria2</p>\n<p>然后根据mcsmanager的自定义实例要求来设置实例(是不是有点太啰嗦了)</p>\n<p>启动命令:<code>aria2c --conf-path=aria2.conf</code></p>\n<p>然后,创建 <strong>aria2.conf</strong> 和 <strong>aria2.session</strong> 文件,<strong>aria2.session</strong> 文件为空,<strong>aria2.conf</strong> 可以参考我的来配置</p>\n<p>[文件] <a href=\"/resource/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/aria2.conf\">aria2.conf</a></p>\n<p>最后,启动实例,并进入Cloudreve的管理面板配置离线下载,即可使用离线下载功能</p>\n<h1 id=\"结语\"><a href=\"#结语\" class=\"headerlink\" title=\"结语\"></a>结语</h1><p>在本篇《旧手机重新利用指南》的博客文章中,我们深入探讨了如何将旧手机赋予新的生命。通过挖掘旧手机的潜力,我们不仅延长了它们的使用寿命,还为环保事业贡献了力量。</p>\n<p>重新利用旧手机不仅仅是一种行为,更是一种态度和责任。在享受科技带来的便利的同时,我们也要意识到资源有限、环境宝贵。通过重新利用旧手机,我们为减少电子垃圾、节约资源做出了积极的努力。</p>\n<p>每一个人都可以参与到环保事业中来,从自身做起,关注环境保护,推动可持续发展。感谢您阅读本文,希望这些指南能够启发您对旧手机再利用的想法,并且能够在日常生活中践行可持续发展的理念。让我们共同努力,为创造一个更加清洁、美丽的地球而行动!</p>\n<p>开头结尾:ChatGPT</p>\n<p>实际编写者:BlockHaity</p>\n","excerpt":"","more":"<h1 id=\"序言\"><a href=\"#序言\" class=\"headerlink\" title=\"序言\"></a>序言</h1><p>在当今数字化时代的璀璨篇章中,智能手机已成为我们生活与工作不可分割的伙伴,是我们探索数字世界的神奇钥匙。随着科技界不断推陈出新,一部手机的平均服务周期约莫2.2年,这一现象不仅反映了科技发展的惊人速度,也意味着大量旧手机将步入退役阶段。然而,这些曾经的科技精灵,并未真正失去它们的魔力。它们依然拥有转化为宝贵科技资源的无限潜能,等待着我们以创新的思维去挖掘。</p>\n<p>本篇文章旨在深入探讨如何通过科技创新,实现旧手机的高效回收与再利用,从而开启它们的第二生命。</p>\n<h1 id=\"材料准备\"><a href=\"#材料准备\" class=\"headerlink\" title=\"材料准备\"></a>材料准备</h1><p>一部手机,ZeroTermux软件(提供Linux终端服务,项目主页<a href=\"https://github.com/hanxinhao000/ZeroTermux.git\">https://github.com/hanxinhao000/ZeroTermux.git</a>)</p>\n<h1 id=\"必须步骤\"><a href=\"#必须步骤\" class=\"headerlink\" title=\"必须步骤\"></a>必须步骤</h1><h2 id=\"更换Termux软件源\"><a href=\"#更换Termux软件源\" class=\"headerlink\" title=\"更换Termux软件源\"></a>更换Termux软件源</h2><p>参考USTC的换源步骤</p>\n<blockquote>\n<h1 id=\"使用说明\"><a href=\"#使用说明\" class=\"headerlink\" title=\"使用说明\"></a>使用说明</h1><p>Termux 目前(2022 年 8 月)的官方源为 packages.termux.dev,我们推荐先更新 <code>termux-tools</code> 软件包,然后直接使用 <code>termux-change-repo</code> 先选择 Single mirror,再选择 mirrors.ustc.edu.cn 即可。</p>\n<p>如果想要手动更换 Termux APT 源的话,可以编辑 :file:<code>/data/data/com.termux/files/usr/etc/apt/sources.list</code> 为如下内容</p>\n<figure class=\"highlight awk\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs awk\">>deb https:<span class=\"hljs-regexp\">//mi</span>rrors.ustc.edu.cn<span class=\"hljs-regexp\">/termux/</span>apt/termux-main stable main<br></code></pre></td></tr></table></figure>\n\n<p>或者,你也可以使用 <code>sed</code> 命令进行文本替换:</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\">>sed -i <span class=\"hljs-string\">'s@packages.termux.org@mirrors.ustc.edu.cn/termux@'</span> <span class=\"hljs-variable\">$PREFIX</span>/etc/apt/sources.list<br>>pkg update<br></code></pre></td></tr></table></figure>\n\n<p>注:Termux 会自动将环境变量 <code>$PREFIX</code> 设定为 :file:<code>/data/data/com.termux/files/usr</code></p>\n<p><strong>warning</strong><br> Google Play 上的 Termux 已被弃用,如安装会产生兼容性问题。请通过 GitHub 或 F-Droid 来安装 Termux。</p>\n</blockquote>\n<p>在完成这些步骤后,执行下列命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">yes</span> y | pkg upgrade<br></code></pre></td></tr></table></figure>\n\n<h2 id=\"安装管理面板(mcsmanager)\"><a href=\"#安装管理面板(mcsmanager)\" class=\"headerlink\" title=\"安装管理面板(mcsmanager)\"></a>安装管理面板(mcsmanager)</h2><p>下列可选功能的部署大多都会以此面板作基础</p>\n<p>首先,安装nodejs,在终端执行<code>pkg install nodejs-lts -y</code>,如果不想使用lts版本的nodejs的话,可以执行<code>pkg install nodejs -y</code>来安装最新适配Termux的nodejs</p>\n<p>然后,依次执行以下命令</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-comment\"># 安装git</span><br>pkg install git -y<br><br><span class=\"hljs-comment\"># 克隆面板端程序(Web)</span><br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/MCSManager/MCSManager-Web-Production.git<br><span class=\"hljs-built_in\">mv</span> MCSManager-Web-Production web<br><span class=\"hljs-comment\"># 补全依赖</span><br><span class=\"hljs-built_in\">cd</span> ./web/<br>npm install --production --registry=https://registry.npmmirror.com/<br><span class=\"hljs-built_in\">cd</span> ../<br><br><span class=\"hljs-comment\"># 克隆守护进程程序(Daemon)</span><br>git <span class=\"hljs-built_in\">clone</span> https://gitee.com/MCSManager/MCSManager-Daemon-Production.git<br><span class=\"hljs-built_in\">mv</span> MCSManager-Daemon-Production daemon<br><br><span class=\"hljs-comment\"># 补全依赖</span><br><span class=\"hljs-built_in\">cd</span> ./daemon/<br>npm install --production --registry=https://registry.npmmirror.com/<br><span class=\"hljs-built_in\">cd</span> ../<br></code></pre></td></tr></table></figure>\n\n<p>最后,创建启动脚本,可以使用nano编辑器来创建</p>\n<figure class=\"highlight crmsh\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs crmsh\"><span class=\"hljs-comment\"># start-daemon.sh</span><br>cd ./daemon/<br><span class=\"hljs-keyword\">node</span> <span class=\"hljs-title\">app</span>.js<br><br><span class=\"hljs-comment\"># start-web.sh</span><br>cd ./web/<br><span class=\"hljs-keyword\">node</span> <span class=\"hljs-title\">app</span>.js<br></code></pre></td></tr></table></figure>\n\n<p>不要忘记给两个脚本赋予可执行权限</p>\n<p>启动面板只需要开启两个会话并分别输入<code>./start-daemon.sh</code>和<code>./start-web.sh</code></p>\n<p>建议自行创建实例目录结构,避免找不到</p>\n<h1 id=\"可选应用部署\"><a href=\"#可选应用部署\" class=\"headerlink\" title=\"可选应用部署\"></a>可选应用部署</h1><p>下列内容可以按需部署</p>\n<h2 id=\"ssh服务\"><a href=\"#ssh服务\" class=\"headerlink\" title=\"ssh服务\"></a>ssh服务</h2><p>运行<code>pkg install openssh termux-auth</code>来安装ssh服务</p>\n<p>然后运行<code>whoami</code>来查看用户,运行<code>passwd</code>来设置密码(密码不显示,输入两次)</p>\n<p>最后运行<code>sshd</code></p>\n<p>接下来就可以在其他电脑上输入<code>ssh (用户名)@(IP地址) -p 8022</code>来连接到你的手机.</p>\n<h2 id=\"网页服务(nginx)\"><a href=\"#网页服务(nginx)\" class=\"headerlink\" title=\"网页服务(nginx)\"></a>网页服务(nginx)</h2><p>首先运行<code>pkg install nginx -y</code>,然后运行<code>nginx</code>编辑 <strong>/data/data/com.termux/files/usr/etc/nginx/nginx.conf</strong> 将端口,网站根目录修改为一个更加方便的目录</p>\n<p>最后根据mcsmanager的自定义实例要求来设置实例</p>\n<p>实例名(参考):nginx</p>\n<p>启动命令:nginx</p>\n<p>目录(参考):/data/data/com.termux/files/home/examples/nginx</p>\n<h2 id=\"NAS服务(Cloudreve)\"><a href=\"#NAS服务(Cloudreve)\" class=\"headerlink\" title=\"NAS服务(Cloudreve)\"></a>NAS服务(Cloudreve)</h2><h3 id=\"Cloudreve主程序\"><a href=\"#Cloudreve主程序\" class=\"headerlink\" title=\"Cloudreve主程序\"></a>Cloudreve主程序</h3><p>首先,下载Cloudreve的程序.</p>\n<p>然后,根据mcsmanager的自定义实例要求来设置实例</p>\n<p>实例名(参考):Cloudreve</p>\n<p>启动命令:<code>bash start.sh</code></p>\n<p>目录(参考):/data/data/com.termux/files/home/examples/cloudreve</p>\n<p>最后,上传程序主程序,编写脚本,名称<code>start.sh</code>,内容为</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><code class=\"hljs bash\"><span class=\"hljs-built_in\">chmod</span> 777 ./cloudreve<br>./cloudreve<br></code></pre></td></tr></table></figure>\n\n<p>接下来就可以在 <strong>(IP地址):5212</strong> 访问cloudreve主程序,然后根据面板上出现的管理员帐号和密码来登录进行管理</p>\n<h3 id=\"配置离线下载\"><a href=\"#配置离线下载\" class=\"headerlink\" title=\"配置离线下载\"></a>配置离线下载</h3><p>首先,在终端里运行<code>pkg install aria2 -y</code>来安装aria2</p>\n<p>然后根据mcsmanager的自定义实例要求来设置实例(是不是有点太啰嗦了)</p>\n<p>启动命令:<code>aria2c --conf-path=aria2.conf</code></p>\n<p>然后,创建 <strong>aria2.conf</strong> 和 <strong>aria2.session</strong> 文件,<strong>aria2.session</strong> 文件为空,<strong>aria2.conf</strong> 可以参考我的来配置</p>\n<p>[文件] <a href=\"/resource/%E6%97%A7%E6%89%8B%E6%9C%BA%E9%87%8D%E6%96%B0%E5%88%A9%E7%94%A8%E6%8C%87%E5%8D%97/aria2.conf\">aria2.conf</a></p>\n<p>最后,启动实例,并进入Cloudreve的管理面板配置离线下载,即可使用离线下载功能</p>\n<h1 id=\"结语\"><a href=\"#结语\" class=\"headerlink\" title=\"结语\"></a>结语</h1><p>在本篇《旧手机重新利用指南》的博客文章中,我们深入探讨了如何将旧手机赋予新的生命。通过挖掘旧手机的潜力,我们不仅延长了它们的使用寿命,还为环保事业贡献了力量。</p>\n<p>重新利用旧手机不仅仅是一种行为,更是一种态度和责任。在享受科技带来的便利的同时,我们也要意识到资源有限、环境宝贵。通过重新利用旧手机,我们为减少电子垃圾、节约资源做出了积极的努力。</p>\n<p>每一个人都可以参与到环保事业中来,从自身做起,关注环境保护,推动可持续发展。感谢您阅读本文,希望这些指南能够启发您对旧手机再利用的想法,并且能够在日常生活中践行可持续发展的理念。让我们共同努力,为创造一个更加清洁、美丽的地球而行动!</p>\n<p>开头结尾:ChatGPT</p>\n<p>实际编写者:BlockHaity</p>\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cmi17mdn30007yblv7boggbkh","category_id":"cmi17mdn30005yblvbujidohu","_id":"cmi17mdn6000eyblv95f4924j"},{"post_id":"cmi17mdn10002yblvfwmz08oj","category_id":"cmi17mdn30005yblvbujidohu","_id":"cmi17mdn6000gyblvaqv59y1d"},{"post_id":"cmi17mdn20004yblv2r54edo1","category_id":"cmi17mdn5000byblv2o613l51","_id":"cmi17mdn6000iyblvgl5r6fpv"},{"post_id":"cmi17mdn30006yblv7v6x1icb","category_id":"cmi17mdn6000fyblver2ab0oi","_id":"cmi17mdn7000nyblvhgad68h7"},{"post_id":"cmi17mdn4000ayblvfuzb2l1z","category_id":"cmi17mdn6000kyblva7uqey3j","_id":"cmi17mdn7000qyblv2k5l4u0f"},{"post_id":"cmi17mdn8000zyblv9fmqah1f","category_id":"cmi17mdn30005yblvbujidohu","_id":"cmi17mdn90011yblv41pl0136"}],"PostTag":[{"post_id":"cmi17mdmz0001yblvfeo0b26v","tag_id":"cmi17mdn20003yblv75j9hoki","_id":"cmi17mdn40009yblv3zm58m2f"},{"post_id":"cmi17mdn4000ayblvfuzb2l1z","tag_id":"cmi17mdn20003yblv75j9hoki","_id":"cmi17mdn6000dyblv4jvhd761"},{"post_id":"cmi17mdn10002yblvfwmz08oj","tag_id":"cmi17mdn40008yblvaeyvg2gm","_id":"cmi17mdn6000jyblv2mt93e9r"},{"post_id":"cmi17mdn10002yblvfwmz08oj","tag_id":"cmi17mdn5000cyblv32a078s7","_id":"cmi17mdn6000lyblvd2263ayx"},{"post_id":"cmi17mdn20004yblv2r54edo1","tag_id":"cmi17mdn6000hyblv6bmd5fr8","_id":"cmi17mdn7000oyblv6oas0z0y"},{"post_id":"cmi17mdn30006yblv7v6x1icb","tag_id":"cmi17mdn6000myblv6k5rb9lh","_id":"cmi17mdn8000uyblv5kfac4mq"},{"post_id":"cmi17mdn30006yblv7v6x1icb","tag_id":"cmi17mdn7000pyblvgicp2esn","_id":"cmi17mdn8000vyblv759ugnvl"},{"post_id":"cmi17mdn30006yblv7v6x1icb","tag_id":"cmi17mdn7000ryblvbig20scn","_id":"cmi17mdn8000wyblvd54jbgjm"},{"post_id":"cmi17mdn30006yblv7v6x1icb","tag_id":"cmi17mdn7000syblv75kobi7z","_id":"cmi17mdn8000xyblvbrquelws"},{"post_id":"cmi17mdn30007yblv7boggbkh","tag_id":"cmi17mdn7000tyblv8mt57q9z","_id":"cmi17mdn8000yyblvefwjg0q1"},{"post_id":"cmi17mdn8000zyblv9fmqah1f","tag_id":"cmi17mdn7000tyblv8mt57q9z","_id":"cmi17mdn90010yblv1q900qat"}],"Tag":[{"name":"瞎说","_id":"cmi17mdn20003yblv75j9hoki"},{"name":"BAAH","_id":"cmi17mdn40008yblvaeyvg2gm"},{"name":"Termux","_id":"cmi17mdn5000cyblv32a078s7"},{"name":"Minecraft","_id":"cmi17mdn6000hyblv6bmd5fr8"},{"name":"Linux","_id":"cmi17mdn6000myblv6k5rb9lh"},{"name":"Hyprland","_id":"cmi17mdn7000pyblvgicp2esn"},{"name":"Wayland","_id":"cmi17mdn7000ryblvbig20scn"},{"name":"虚拟副屏","_id":"cmi17mdn7000syblv75kobi7z"},{"name":"旧手机利用","_id":"cmi17mdn7000tyblv8mt57q9z"}]}}