在hugo博客里部署twikoo评论系统

记录部署评论系统的过程。 1. 简介 网站框架:Hugo 网站主题:Hugo PaperMod 评论系统:Twikoo VPS操作系统:Ubuntu 24.04.3 LTS 后端部署方式:Docker 备注:配置文件内容由AI生成,请自行检查是否正确。 2. 后端部署 2.1 Docker部署 因为有VPS,我选择了Docker私有部署。 在VPS里安装Docker。参照官方文档,运行下面的命令就可以通过Docker快速部署。 docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo 在VPS上运行命令curl http://localhost:8080/,测试部署是否成功。出现类似下面的结果,就部署成功了。记录其中的version版本信息,比如我这里是1.7.14,后面部署前端时需要对应这个版本。 {"code":100,"message":"Twikoo 云函数运行正常,请参考 https://twikoo.js.org/frontend.html 完成前端的配置","version":"1.7.14"} 可以注意到,这时候twikoo走http。如果尝试用https访问,访问会失败。接下来配置nginx反向代理,让twikoo评论走https。 2.2 Nginx配置 nginx配置有两个方案。假设博客的域名是<domain>.com,两个方案如下: 使用子目录,通过https://<domain>.com/twikoo/访问twikoo。 使用子域名,通过https://twikoo.<domain>.com/访问twikoo。使用子域名时,需要在DNS服务商里添加记录,把子域名指向VPS的IP地址。 我选用了子域名方案。 创建/etc/nginx/sites-available/twikoo文件,写入下面的内容。需要修改其中的域名、证书密钥文件路径。 # HTTP 自动跳转 HTTPS server { listen 80; server_name twikoo.<domain>.com; # 替换为你的域名 return 301 https://$host$request_uri; } # HTTPS 服务器配置 server { listen 443 ssl http2; server_name twikoo.<domain>.com; # 替换为你的域名 # 替换为你的真实证书路径 ssl_certificate /path/to/your/certificate.pem; ssl_certificate_key /path/to/your/private.key; # 推荐的 SSL 安全配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { # 转发到 Docker 的 8080 端口 proxy_pass http://127.0.0.1:8080; # 传递客户端真实信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 然后运行下面的命令: ...

2026年7月17日

修理自行车油压碟刹

前阵子发现自行车的油压碟刹有些失灵、刹不住。解决刹车问题花费了不少精力,也走了些弯路。现在看来,问题其实没那么复杂。 1. 简介 自行车:美利达某款山地车 刹车型号:Shimano MT-200,油压碟刹 问题:前刹的制动效果差,无法抱死车轮,刹车时会啸叫 2. 修理过程 2.1 分析问题 刹车由三个组件构成:刹车系统(MT-200油压碟刹),刹车片(在自行车上也叫来令片),刹车盘(碟片)。任意一个组件出现了问题,都可能导致刹车失灵。 刹车系统:对于油压碟刹来说,常见的问题是缺油、混入空气。这两个问题都会导致刹车效果差,也都可以通过换油解决。 刹车片、刹车盘:这两个组件经常一起出现问题,过度磨损、沾油污是常见的问题。当刹车片、刹车盘过度磨损后,刹车效果会下降。当刹车片、刹车盘沾上油污后,刹车效果也会下降。刹车片清洁难度很大,可以直接换新的。刹车盘比较容易清洁,一般不需要换新的。 我入手的是二手车,不清楚刹车什么时候、因为什么原因失灵,所以我只能挨个排查。 2.2 刹车系统换油 换油成本不高,操作难度不大,就是步骤繁琐些。 我的刹车系统是Shimano的刹车,换油的操作参照了Shimano官方手册。看了手册里MT-200型号的换油操作,确定需要2毫米、3毫米的内六角扳手。换油时推荐让刹车夹器远离碟片,并拆卸来令片。想把刹车夹器拆下来,需要5毫米内六角扳手。拆卸来令片需要一把尖嘴钳。所以整个换油流程我需要的工具有: 2 3 5毫米的内六角扳手 尖嘴钳 换油工具套装 按照手册上的步骤,顺利完成换油。但是刹车效果没有恢复,问题应该出在碟片、来令片上。 2.3 更换来令片 自行车有前后两个刹车,我的车只有前刹车失灵,后刹车正常。在更换来令片之前,我试着把前后刹车的来令片互换,结果发现前刹车好转、后刹车恶化。这说明来令片确实影响到了刹车,需要更换。 在Shimano官网,找到MT-200适配的来令片:标准搭配是B05S树脂来令片。Shimano原装的来令片在国内没有直销店铺,只能通过第三方店铺购买。为了避免买到假货,我买的是盒装的来令片,盒子上有个二维码可以扫码确定真伪。 为了防止碟片上还有油污残留,我准备了碟片清洁剂和砂纸。碟片清洁剂不能选油性的,不然碟片就废了。砂纸是为了打磨擦去碟片表面可能残留的固体油污。我准备了46目的砂纸,但是实际使用时感觉有些太粗糙了,更细腻点的砂纸会好点。 更换来令片的步骤简单,工具也不多,一般只需要用到尖嘴钳和5毫米内六角。更换完来令片后,需要把刹车夹器重新安装到车架上。安装刹车夹器时为了避免刹车蹭碟,可以在碟片两侧分别塞一张扑克牌。扑克牌可以在来令片、碟片之间留出空隙。也可以通过抽推扑克牌时的摩擦力,感受来令片和碟片之间的距离、挤压程度。安装完刹车夹器后,再抽出扑克牌。 刚更换来令片后,没有经过充分的磨合,刹车效果还比较一般。多刹几次、充分摩擦后,刹车性能会提高。到这里,我的刹车问题也解决了。

2026年7月7日

qbittorrent tracker 未联系

本篇解决一个问题:使用qbittorrent做种时,所有tracker都显示“未联系”。 1. 问题介绍 某次重启电脑后,qbittorrent所有任务都显示tracker未联系。重启qbittorrent、删除qbittorrent配置文件,都无法解决问题。 环境: 操作系统:Windows 10 qbittorrent版本:v5.1.4 2. 问题定位 找教程的过程中,看到reddit的一个帖子:qbittorrent tracker 未联系。帖子的评论区里,有人提到端口占用的问题,特别是hyper-v。 可能我这边也和端口冲突有关系?于是我往这个方向排查。 我查看了qbittorrent的日志文件。日志文件的保存路径可以在qbittorrent的设置里找到,在qbittorrent里打开设置——选择“行为”——往下找到“日志文件”相关栏目,可以看到日志保存的路径。 打开日志后,我找到大量相似的报错,报错信息如下。在监听很多IP时,使用端口“UDP/62698”会出现访问权限不允许的情况。 监听 IP 失败。IP:“XXX”。端口:“UDP/62698”。原因:“以一种访问权限不允许的方式做了一个访问套接字的尝试。” 接下来执行命令netsh interface ipv4 show excludedportrange protocol=udp,确定是不是端口占用。果然,端口“UDP/62698”包含在排除的范围里。因为端口被排除,所以当qbittorrent监听这个端口时,会出现权限不足的情况,无法和tracker联系。 3. 解决问题 我选择修改动态端口的范围。排除端口会从动态端口里选。所以只要让动态端口的范围不包含“UDP/62698”,qbittorrent就能正常工作,不会遇到联系不上tracker的情况。 以管理员权限打开“命令提示符”,分别运行下面的命令: netsh int ipv4 set dynamicport tcp start=40000 num=10000 netsh int ipv4 set dynamicport udp start=40000 num=10000 netsh int ipv6 set dynamicport tcp start=40000 num=10000 netsh int ipv6 set dynamicport udp start=40000 num=10000 针对ipv4和ipv6,针对tcp和udp,把动态端口的范围调整到40000起步、大小10000的范围。也就是说,把动态端口的范围调整到40000-50000。排除端口会在这个范围里挑选,所以排除端口的范围也是在40000-50000。 起步是40000、大小是10000,这两个数值可以自行调整。如果已知有些软件会用到这些端口,就避开。端口数量也不要太小,避免系统资源不足。 4. 参考资料 reddit: qbittorrent tracker 未联系 cnbolgs: 解决Hyper-V保留端口导致各种端口占用报错的问题

2026年6月18日

WSL2环境下编译安卓源码

本篇记录在Windows WSL2环境下编译安卓源码(Android Open Source Project,AOSP)的过程。 1. 环境介绍 宿主机:Windows 10操作系统,内存32GB。wsl虚拟磁盘文件所在的磁盘分区,留出了200GB以上的空间。 wsl虚拟机:Ubuntu 22.04.1 LTS操作系统,内存16GB,交换分区(swap)4GB。 aosp版本分支:android-10.0.0_r2 手机设备:Pixel 3a XL 网络:能正常访问外网。 2. 安装环境依赖 Git sudo apt-get update sudo apt install git 各种工具 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip JDK sudo apt-get install openjdk-8-jdk libncurses5。编译源码时才发现缺了这个库。 sudo apt-get install libncurses5 libtinfo5 python2。在解决libncurses5缺失的同时,听AI的建议,准备好python2的环境,并把python环境通过软链接的形式指向python2。我编译的版本是Android 10。新的Android版本源码,可能不需要python2。 sudo apt-get install python2 sudo ln -s /usr/bin/python2 /usr/bin/python 3. 下载源码 3.1 下载repo工具 安卓源码由多个项目构成,repo是管理安卓多个项目的工具。 ...

2026年6月17日

虚拟机迁移后,IDA Pro无法启动

把虚拟机从VMware迁移到Hyper-v后,虚拟机里的IDA Pro软件无法启动,双击无反应。 本篇会梳理解决问题的过程。 感谢Gemini-3.1-Pro的耐心指导。不然问题没那么容易解决。 1. 环境介绍 虚拟机平台:Hyper-v(从VMware迁移而来) 操作系统:Windows 10专业版 软件版本:IDA Pro 9.3 2. 查看日志,定位问题 按下快捷键Windows+X,打开事件查看器。依次选择“Windows 日志”、“应用程序”。可以查看IDA Pro启动失败的日志。 测试后发现,每次尝试打开IDA Pro,都会出现2个报错信息。 报错1 错误应用程序名称: ida.exe,版本: 9.3.25.1224,时间戳: 0x1ea689f4 错误模块名称: vm3dglhelper64.dll,版本: 9.17.7.2,时间戳: 0x6572cb55 异常代码: 0xc0000096 错误偏移量: 0x000000000002220f 错误进程 ID: 0x136c 错误应用程序启动时间: 0x01dcf71b159eea16 错误应用程序路径: C:\Program Files\IDA Professional 9.3\ida.exe 错误模块路径: C:\Windows\SYSTEM32\vm3dglhelper64.dll 报告 ID: 56c78ed3-63cf-46b9-89ab-4018a3fb7951 错误程序包全名: 错误程序包相对应用程序 ID: 报错2 由于下列某个原因,Windows 无法访问文件 : 网络连接、存储文件的磁盘或安装在此计算机上的存储 驱动程序有问题;或者磁盘丢失。 由于上述错误,Windows 关闭了程序 The Interactive Disassembler。 程序: The Interactive Disassembler 文件: 该错误值列于“其他数据”部分。 用户操作 再次打开文件。 这种情况可能是一个临时问题,程序再次运行时可能会自行更正。 如果仍然无法访问该文件,并且 如果该文件位于网络上, 网络管理员应该验证网络是否存在问题并且验证是否可以与服务器联系。 如果该文件位于可移动磁盘上(例如软盘或 CD-ROM),请验证磁盘已完全插入计算机。 通过运行 CHKDSK 检查并修复文件系统。若要运行 CHKDSK,请单击「开始」,单击“运行”,键入“CMD”,然后单击“确定”。在命令提示符处,键入 CHKDSK /F,然后按 Enter。 如果问题仍然存在,请从备份副本中还原文件。 确定是否可以打开同一磁盘上的其他文件。如果无法打开,则磁盘可能损坏。如果磁盘是硬盘,请与管理员或计算机硬件供应商联系, 获得进一步帮助。 其他数据 错误值: 00000000 磁盘类型: 0 关键的文件是vm3dglhelper64.dll——VMware虚拟显卡的相关文件。 ...

2026年6月8日

VMware虚拟机迁移到Hyper-v

1. 前言 之前重装系统后,在新的Windows 10系统里开启了Hyper-v的支持。Hyper-v的虚拟机和主机的交互体验还不错。 但是开启Hyper-v的代价是,VMware Workstation的效果变差了。虽然VMware Workstation比较新的版本已经可以兼容Hyper-v,但是实际体验还是不如VMware Workstation运行在没有Hyper-v系统上的效果。 我的宿主机开启了Hyper-v。经过测试发现,同一台Windows 10虚拟机(正常开机后的状态,不运行任务),虚拟机安装了VMware Tools后,宿主机的内存开销至少增加了3GB。虽然不安装VMware Tools就可以避免宿主机内存吃紧的情况,但是不安装VMware Tools的话,交互体验又有些差。 所以我有了把VMware虚拟机迁移到Hyper-v的想法。 2. 工具选择 我尝试了2种工具: StarWind V2V Converter,官网链接在这里。官网会把下载链接发送到填写的邮箱里,实际的下载链接是这个。 Disk2vhd,微软官方提供的工具,官网链接在这里。 我尝试了StarWind V2V Converter,想把VMware的虚拟磁盘直接转换成Hyper-v支持导入的格式。但是尝试失败,遇到了下面的报错(应该没记错。软件已经卸了,相关日志也删除了,反正有报错)。 Error opening file (2) [0] Disk encoding error 折腾许久解决不了,于是放弃StarWind V2V Converter。 选择使用微软的Disk2vhd。 还有一种工具:QEMU。官网可能是这个。因为不确定官网、怕下载到奇怪的软件、Disk2vhd已经能解决需求,就没有尝试这个工具。 3. Disk2vhd注意事项 3.1 选择程序 从官网链接里下载压缩包,解压。文件夹里有3个程序: disk2vhd.exe,推测是适配32位系统的。 disk2vhd64.exe,推测是适配64位系统的,也是我运行的程序。 disk2vhd64a.exe,推测是适配64位ARM架构系统的。 如果不确定,可以3个都双击打开,有2个会报错。 3.2 复选框 运行程序,右上角可以看到3个复选框: Prepare for use in Virtual PC Use Vhdx Use Volume Shadow Copy 我第一次运行时,保持了默认的选项,只勾选了第二个。后来迁移到Hyper-v,虚拟机蓝屏无法修复。 第二次运行时学乖了,把3个选项都勾选了。后续成功迁移导入Hyper-v。 3.3 保存位置 导出的虚拟磁盘文件不能保存在将要被导出的虚拟磁盘分区里。 比如我想导出虚拟机的C盘分区,那导出的文件就不能保存在虚拟机的C盘里。但是我的虚拟机只有一个C盘(或者其它盘空间不够),这种情况下导出的文件就只能存放在外部。这里提供2种选择: 外接设备,如U盘、移动硬盘 宿主机的共享文件夹(我使用的方法) 我在宿主机上创建一个共享文件夹,通过宿主机和VMware虚拟机通信的VMnet8网络(NAT网络模式),让VMware虚拟机把导出的文件保存到这个共享文件夹里。想要实现文件夹共享,需要在宿主机里开启SMB功能,具体可以参考这篇博客。 ...

2026年6月6日

修改Windows cmd的字体

本篇涉及下面的内容: Windows10 cmd修改字体 cmd的“默认值”里支持的字体,在“属性”里不能支持。怎么解决? 1. 安装字体 Windows10 cmd的默认字体效果一般。我更喜欢Windows终端里的默认字体:Cascadia Mono。 想要安装Cascadia Mono字体,至少有这么两种办法: 安装Windows终端,会自动附带安装Cascadia Mono字体。终端的安装指南和链接可以在微软官方找到。 单纯安装字体,从微软的GitHub仓库里下载。在Releases界面可以下载字体文件。 2. cmd设置字体 打开cmd,右键单击窗口顶栏,打开“默认值”或者“属性”。如果不清楚要改哪个,就两个地方都改。 在“字体”栏目里,选择Cascadia Mono,点击“确定”。修改完成。 补充说明,其实不只是cmd,其它命令窗口的字体也可以这么修改。可以这么改的命令窗口有: C:\Windows\system32\cmd.exe 命令提示符 Windows Powershell 这几个命令窗口的配置是独立分离的。 3. 解决找不到字体的问题 我在修改字体时遇到一个问题。安装了Cascadia Mono字体后,命令提示符和Windows Powershell的字体成功修改,但是cmd(C:\Windows\system32\cmd.exe)的字体列表里找不到Cascadia Mono字体。 补充说明,命令提示符和C:\Windows\system32\cmd.exe的配置是分开的。 按下快捷键Windows+R,输入cmd,回车,运行的是cmd。 按下快捷键Windows+S,输入cmd,默认会选中命令提示符,运行的是命令提示符。 当前命令窗口是哪一个,可以根据窗口顶栏的标题判断。 研究后发现,命令窗口的”当前代码页“会影响支持的字体。(右键单击窗口顶栏,打开“属性”,查看”选项“,就能看到当前代码页) 我想要设置的Cascadia Mono字体,在936(简体中文GBK)代码页下无法设置,在65001(UTF-8)代码页下可以设置。 为了修改cmd的代码页,我在注册表编辑器中的计算机\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe路径下,把REG_DWORD类型的CodePage变量编辑为65001(十进制下)。如果默认没有这个变量,可能需要自己新建一个。 建议:修改注册表前,把所在路径的一个小分支导出、保存。如果改错了,还能覆盖修改。

2026年6月6日

NAT下,虚拟机使用宿主机的系统代理

本篇介绍NAT网络模式下,虚拟机怎么走Windows宿主机的系统代理。本篇的目的是介绍整体流程,具体操作细节请参考其它教程。 1. 前言 虚拟机和宿主机的网络连接模式有3种:Host-Only、桥接、NAT,其中NAT是我用得多的模式。 虚拟化平台有多种,比如Hyper-v(Windows自带)、VMware软件、VirtualBox软件等。不同平台的操作方法有细微差别,详细操作可以参考其它教程、博客。虽然我只尝试过Hyper-v和VMware,但是理论上这篇博客适用于所有虚拟化平台。 如果不想折腾系统代理,还有更简单粗暴的方法——TUN模式。一般的网络代理软件(比如Clash系列、v2ray系列等)都能设置TUN模式。在TUN模式下,代理软件会创建一个虚拟网卡,宿主机的所有网络流量都会经过这个虚拟网卡。NAT虚拟机的网络流量也会经过虚拟网卡 2. 开启NAT 把虚拟机的网络模式设置为NAT。 提一下Hyper-v。在Hyper-v里,默认的网络模式Default Switch,已经可以满足NAT的功能了。只不过每次虚拟机重启后,Default Switch的IP地址会更改(其实也不影响虚拟机上网)。 提一下VMware。VMware可能会同时开启Host-Only模式和NAT模式,这样也可以,不影响。可以在VMware菜单栏的“编辑”选项里,打开“虚拟网络编辑器”。只要VMnet8(NAT模式下的网卡)和主机是连接的,就没问题。 验证虚拟机是否能访问网络,比如在虚拟机里访问:baidu.com,看能不能访问到网站。 接下来补充说明一个点:虚拟机能访问网络,就说明网络模式没问题了,不需要关注宿主机和虚拟机能不能ping通。宿主机和虚拟机想要ping通,还需要解决防火墙规则的问题。默认防火墙设置下,宿主机和虚拟机是ping不通的——这是正常现象。而我们的目标——虚拟机走宿主机网络代理——并不要求二者能ping通。 3. 宿主机允许代理软件通过防火墙 想让虚拟机走宿主机的系统代理,这一步是必须的。 在Windows宿主机里,按下快捷键“Windows+I”,打开设置。在设置的搜索框里,输入“防火墙”,选择“允许应用通过Windows防火墙”。 在新打开的界面里,添加代理软件的应用程序。比如我使用的是clash-verge-rev,需要添加安装目录下的verge-mihomo.exe。 4. 虚拟机设置代理 代理包含两部分:IP地址,端口号。 端口号好说,看宿主机代理软件里的设置。比如我使用的是clash-verge-rev,端口号是7897。 下面介绍怎么找IP地址。以VMware为例。 虚拟机,在命令行中输入ipconfig,部分结果如下。虚拟机的IP地址是192.168.208.128。 以太网适配器 Ethernet0: 连接特定的 DNS 后缀 . . . . . . . : localdomain 本地链接 IPv6 地址. . . . . . . . : fe80::4dc0:5754:6ed6:61de%8 IPv4 地址 . . . . . . . . . . . . : 192.168.208.128 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.208.2 宿主机,在命令行中输入ipconfig,部分结果如下。宿主机的IP地址是192.168.208.1。 Ethernet adapter VMware Network Adapter VMnet8: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::3a25:52e8:e738:2204%7 IPv4 Address. . . . . . . . . . . : 192.168.208.1 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : NAT模式下,宿主机和虚拟机共享同一个子网(192.168.208.0)。在这个子网下,虚拟机和宿主机可以互相访问。 ...

2026年5月27日

解决Git Dubious Ownership

本篇记录git报错fatal: detected dubious ownership的问题。 重装Windows系统、更改用户名后,磁盘里的文件夹内容没有更改,但是使用git命令时会出现以下报错: fatal: detected dubious ownership in repository at 'XXX' 'XXX/.git' is owned by: (inconvertible) (S-1-5-21-XXX) but the current user is: XXX/XXX (S-1-5-21-XXX) To add an exception for this directory, call: git config --global --add safe.directory XXX 摸索出了3种解决方案。主要参考了这里:stackoverflow。 方法1,复制出新的文件夹 偶然发现,文件夹的用户归属指向我重装系统前的用户。把文件夹复制出一份后,新文件夹的用户归属就指向了当前的用户。 问题解决。 方法2,git添加安全目录 这也是git报错信息里提示的做法。可以把某个文件夹添加为安全目录,这样git不会再报错提醒。 # 针对单一文件夹,XXX代表文件夹路径 git config --global --add safe.directory XXX 特别地,当使用*时,所有本地文件夹都会被匹配到,于是所有文件夹的fatal: detected dubious ownership报错都会解决。 这里需要区分Linux和Windows命令行在语法上的小差异。有个引号的语法差异。 在Windows环境下,如cmd中: # 针对所有文件夹 git config --global --add safe.directory * 在Linux环境下,如Git Bash中: # 针对所有文件夹 git config --global --add safe.directory '*' 方法3,更改文件夹归属 右键点击需要修改的文件夹(比如.git),打开“属性”。在属性中,选择“安全”栏目,再点击“高级”(见下图)。 在高级安全设置里,选择更改文件夹的所有者(见下图)。 在“选择用户或组”的界面,点击“高级”(见下图)。 在新打开的界面里,点击“立即查找”,然后在搜索结果里选择当前用户(见下图)。 回到“选择用户或组”的界面,点击“确认”。然后回到“高级安全设置”的界面,勾选”替换子容器和对象的所有者“,点击”应用“,点击”确认“(见下图)。 问题解决。

2026年5月17日

RedmiNote8Pro通过Magisk刷Root

在Redmi Note 8 Pro设备上刷Magisk、刷Root的过程中遇到了一些问题,查找了很多资料,最终成功刷入Magisk和Root。本篇涉及以下问题: 下载Magisk后,发现手机上没有Ramdisk。能否正常安装Magisk? 在手机的fastboot模式下刷入Magisk修改后的镜像,手机无法进入系统,循环启动无法开机,怎么解决? 1. 解锁BL锁,刷机 想要刷Root,解锁BL锁(Boot Loader锁)是必需的步骤。解锁了BL锁后,还可以根据个人需求或者喜好,刷入不同的MIUI系统。下面是解锁BL锁、刷机时参考的两篇文章: 链接1,https://zhuanlan.zhihu.com/p/408114647 链接2,https://zhuanlan.zhihu.com/p/499270772 其中链接1的文章介绍了MIUI系统不同地区版本的区别。我最终安装了MIUI 11.03,国内发行稳定版。 2. 安装Magisk 需要在电脑上提前安装好Android SDK工具,后续需要使用到其中的fastboot工具。官网链接在这里。 在Magisk官网上下载最新版的apk安装包,安装到手机上。正常情况下,后续的安装步骤很简单。下面是两个参考链接: 官方安装指导:https://topjohnwu.github.io/Magisk/install.html 其它安装指导:https://miuiver.com/how-to-root-xiaomi-phone/ 很不幸,我从这里开始,就走上了和这些博客不同的坎坷安装道路。 遇到的问题1,我的Redmi设备安装了Magisk后,识别不到Ramdisk。查找资料后,我觉得按照正常安装流程莽上去干就是了。不行再换种方法。 遇到的问题2,我的Redmi设备刷入Magisk修补的镜像后,无法进入MIUI系统,循环启动无法正常开机。补充说明,遇到循环重启的情况,手机进入fastboot模式,重新刷机、刷入新的系统,就能回归正常情况。但这也意味着恢复出厂设置,安装了一半的Magisk也被清除了。 之所以遇到问题2,会不会因为问题1没有Ramdisk的原因呢?排除后发现不是。只要修改了镜像,就不能开机,更别说安装Magisk了。那咋整?查阅了资料后,我找到了以下解决方案: 方案1:安装MIUI其它地区的版本,比如国际版、欧洲版等。国行版的MIUI系统似乎有一定特殊性,其它地区的版本不容易遇到循环启动的问题。 方案2:正常安装流程是在fastboot模式下刷入Magisk修补的镜像,就能完成安装。但是部分小米、红米手机比较特殊,需要完成“刷入镜像-清除数据-再次刷入镜像”三个步骤,才能安装Magisk。 链接:https://github.com/topjohnwu/Magisk/issues/2008。两个方案都在其中被提到。 我尝试了方案2,验证了方案2的可行性。手机恢复正常开机,安装Magisk的apk,修补MIUI ROM的boot.img文件,把修改后的boot镜像保存在电脑上。手机进入fastboot模式,在电脑的命令行下依次输入以下命令: fastboot flash boot /path/to/magisk_patched_[random_strings].img fastboot -w fastboot flash boot /path/to/magisk_patched_[random_strings].img 其中的/path/to/magisk_patched_[random_strings].img是修补后的boot.img文件的路径+文件名。 输入完命令后,重启手机。 3. 完结撒花 手机重启后,Magisk的版本莫名其妙变成了1.0(最初版,图标也很简陋)。覆盖安装最新版。打开Magisk,可以看到已经取得root权限。安装完成。

2026年3月26日