yanhy的学习记录匣 - 教程经验 2025-11-19T17:35:00+08:00 Typecho https://yanhy.top/index.php/feed/atom/category/share/ <![CDATA[飞牛nas使用fnos-qb-proxy以直接调用系统下载套件(非Docker)]]> https://yanhy.top/index.php/archives/457/ 2025-11-19T17:35:00+08:00 2025-11-19T17:35:00+08:00 yanhy2000 https://yanhy.top 0、原项目地址

https://github.com/xxxuuu/fnos-qb-proxy

项目原介绍
What is it?
fnOS 中自带了一个下载器(基于 qBittorrent 和 Aria2),但默认关闭了 WebUI,且采用动态密码。这使得我们无法在外部连接 fnOS 中的 qBittorrent(e.g. 接入 MoviePilot 或 NasTools 等)
该项目是一个简单的代理,能绕过这些限制,提供在外部访问 fnOS 的 qBittorrent 的能力同时不影响 fnOS 自身的下载器运行

1、为什么不使用docker

原docker方式

如果按项目作者所介绍使用docker,正常方式如下:

  • 先准备好相关文件:

    yanhy2000@fnnas:~$ ls /vol1/1000/ssd/docker/docker-compose/fnos-qb-proxy
    docker-compose.yml  Dockerfile.txt  fnos-qb-proxy_linux-amd64
  • docker-compose.yml

    services:
    fnos-qbit-proxy:
      build:
        context: .
        dockerfile: Dockerfile.txt
      container_name: fnOS-qBit-Proxy
      pid: "host"
      network_mode: "bridge"
      environment:
        - PASSWORD=fnosnb
      ports:
        - "7111:8086"
      volumes:
        - /home/yanhy2000/qbt.sock:/app/qbt.sock
  • Dockerfile.txt

    FROM alpine:latest
    ENV LANG=C.UTF-8 \
      UDS="/app/qbt.sock" \
      PORT=8086 \
      PASSWORD="fnosnb"
    WORKDIR /app
    COPY fnos-qb-proxy_linux-amd64 /usr/local/bin/fnos-qb-proxy
    RUN chmod +x /usr/local/bin/fnos-qb-proxy && \
      echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/main" > /etc/apk/repositories && \ 
      echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/community" >> /etc/apk/repositories && \ 
      apk add --no-cache bash
    CMD ["sh", "-c", "fnos-qb-proxy --uds $UDS --password $PASSWORD --port $PORT"]
  • 使用系统的容器管理器导入docker-compose并启动,此时一般情况下都可以正常运行,在浏览器打开ip:7111则可以进入qBittorrent页面。

为什么不使用docker

当系统更新重启后,哪怕将docker启动设置在dlcenter.service之后,也大概率因为qBittorrent服务未完全启动导致容器反复启动失败,只有等待服务启动后,重新构建compose启动才能恢复,不能实现完全自动。
Docker容器启动时,如果映射的Socket文件不存在,Docker可能会自动将其创建一个为目录而非文件,导致后续挂载错误。且容器的重启策略有时不如Systemd的依赖检查灵活,容易在系统启动初期因资源未就绪而进入死循环或报错停止。

不使用docker的自启动解决方案

  • 确保/home/用户名/qbt.sock是一个文件,而不是文件夹
  • 将fnos-qb-proxy_linux-amd64下载到本地,并移动至/usr/bin/fnos-qb-proxy

    sudo cp fnos-qb-proxy_linux-amd64 /usr/bin/fnos-qb-proxy
    sudo chmod +x /usr/bin/fnos-qb-proxy
  • 创建systemd服务配置文件

    sudo nano /etc/systemd/system/fnos-qb-proxy.service
  • 填充以下脚本(将用户名改成你自己的),并保存

    [Unit]
    Description=fnos qb proxy service
    #在下载服务启动后启动
    After=network.target dlcenter.service
    #跟随dlcenter服务运行
    Requires=dlcenter.service
    
    [Service]
    Type=simple
    User=root
    
    #脚本逻辑部分
    #隔2秒检查一次qbt.sock文件是否存在且必须是Socket文件(防止被识别为文件夹,如果之前使用过docker可能会残留这个问题)
    ExecStartPre=/bin/bash -c 'until [ -S "/home/用户名/qbt.sock" ]; do echo "Waiting for qbt.sock..."; sleep 2; done'
    
    #自定义密码与端口
    ExecStart=/usr/bin/fnos-qb-proxy --uds "/home/用户名/qbt.sock" --password fnosnb --port 7111
    
    #如出错5s自动重启服务
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
  • 重载服务,运行服务

    sudo systemctl daemon-reload
    sudo systemctl enable --now fnos-qb-proxy
  • 查看日志,看看是否运行成功

    sudo journalctl -u fnos-qb-proxy -f
  • 如果出现类似于下文的日志则认为是运行成功

    Nov 19 17:07:43 fnnas bash[1965]: Waiting for qbt.sock...
    Nov 19 17:07:45 fnnas systemd[1]: Started fnos-qb-proxy.service - fnos qb proxy service.
    Nov 19 17:07:45 fnnas fnqb-proxy[5675]: proxy running on port 7111
]]>
<![CDATA[Win11/WinServer2025使用优化]]> https://yanhy.top/index.php/archives/436/ 2025-02-24T13:39:00+08:00 2025-02-24T13:39:00+08:00 yanhy2000 https://yanhy.top 自从前段时间百元捡漏了一套E5平台板u和散热器、内存条后,就计划开始搭建一套家里的“云电脑”,那系统选择当然要与时俱进,虽然主力军还在win10,其他系统基本都在win11了。但众所周知win11的一些改动还是相当不方便不效率的,因此这个文章就用来记录一些在原系统之上的更改,让系统体验更好一些...
  • 持续更新中...

win11 新版特性

恢复旧版本右键菜单

修改注册表:

进入 HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID
在 CLSID 下面新建 项 {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}
在该项下面再新建项 InprocServer32
双击打开右侧键值对,不修改直接点击保存

或者Powershell(管理员):

 reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve

修改后在任务管理器重启资源管理器即可

WinServer启用剪贴板

注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Clipboard]
"IsCloudAndHistoryFeatureAvailable"=dword:00000001

需在 Microsoft 下新建项 Clipboard
在该项里面添加32位键值对,并将值修改为1

Powershell(管理员):

New-Item -Path "HKLM:\SOFTWARE\Microsoft\Clipboard" -Force | Out-Null; Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Clipboard" -Name "IsCloudAndHistoryFeatureAvailable" -Value 1 -Type DWord

win常用特性

时间显秒

win11可直接在设置修改,win10则需要修改注册表:

进入 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
新建 DWORD(32位)值 命名为ShowSecondsInSystemClock 数值修改为1
重启文件资源管理器
]]>
<![CDATA[移动、天翼云电脑使用DD重装系统]]> https://yanhy.top/index.php/archives/398/ 2024-07-30T12:30:00+08:00 2024-07-30T12:30:00+08:00 yanhy2000 https://yanhy.top 前段时间入手了移动云电脑,结果被意外收回了... 后面发现还是有云电脑需求,干脆入了天翼云电脑试试看。官方系统内容挺多,且有不少后门,干脆自行DD重装一下,顺便做个记录。

DD重装本质上是利用Linux的指令来进行硬盘擦写填充文件。

菜鸟编程:Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

本文使用Github开源项目 reinstall ,并将云电脑系统重装为Windows 10 LTSC 2021

一键重装脚本 English 项目介绍
- 支持安装 16 种常见 Linux 发行版
- 支持用官方原版 iso 安装 Windows,并且脚本会自动查找 iso 和驱动
- 支持任意方向重装,也就是支持 Linux to Linux、Linux to Win、Win to Win、Win to Linux
- 专门适配低配小鸡,解决内存过少导致无法进行网络安装
- 自动判断动静态 IPv4 / IPv6,无需填写 IP / 掩码 / 网关
- 支持 ARM,支持 BIOS、EFI 引导,原系统支持 LVM、BTRFS
- 不含第三方自制包,所有资源均实时从源站点获得
- 有很多注释

前期准备

  • 云电脑准备数据盘1GB以上(重装后系统盘会被全盘擦除,分区也会被清除,需数据盘保留一些软件)
  • 下载软件Todesk_lite到数据盘(用于在云电脑重装后因没有驱动无法控制,只能提供第三方远程软件控制)
  • Github加速器(任意且可选,部分云电脑访问Github艰难,可以备好)

移动云电脑切记需要下载好远程软件在数据盘,并保证软件打开就可以使用,否则在无鼠标驱动下安装远程控制软件相当困难

天翼云电脑实测无需远程,重装系统后仍然可以在官方客户端键鼠操控,也无需强制数据盘

DD重装系统

关闭Windows Defender 保护

打开设置 - 更新与安全 - Windows安全中心,点击左侧病毒与威胁防护,将选项全部关闭。
如使用天翼云电脑,系统可能预装火绒等杀毒软件,直接退出杀毒软件即可。

以管理员身份运行Powershell

使用快捷键Win+X,选择 Windows Powershell(管理员)打开即可

Windows Powershell(管理员)

下载脚本

复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)

certutil -urlcache -f -split https://github.299993.xyz/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat
注:这里的脚本使用了Github加速源。如以后该加速源关闭,将无法正常执行脚本,可使用Github原链接,可能需要加速器。
备用链接
国内加速源
certutil -urlcache -f -split https://jihulab.com/bin456789/reinstall/-/raw/main/reinstall.bat

国外(Github原链接)
certutil -urlcache -f -split https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat

执行完成
脚本下载完成

执行脚本

复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
这里要安装的为Windows 10 LTSC 2021系统,稳定且性能占用较低。如有其他系统需求,可以在https://drive.massgrave.dev/网站查找所需镜像。

./reinstall.bat windows --iso='https://drive.massgrave.dev/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso' --image-name='Windows 10 Enterprise LTSC 2021'

期间会出现软件安装的窗口,无需理会,等待其自动安装和配置。
当最后几行出现下面内容时则为初期准备完成,可以重启安装

***** INFO *****
windows
Username: administrator
Password: 123@@@
Reboot to start the installation.
You can run this command to reboot:
shutdown /r /t 0
PS C:\Users\Administrator>

脚本执行完成截图

重启云电脑自动重装

在Powershell内输入以下指令,重启系统进入Linux子系统,开始自动DD重装。

shutdown /r /t 0

系统重启后,无需任何操作,一直等待或者关闭云电脑客户端放后台慢慢装即可。花费时间取决于网速和硬盘读写速度,如云电脑为机械硬盘可能会慢一些。
由于我这个天翼云电脑带宽只有50M,因此下载速度特别慢,前前后后需要30到50分钟左右。

全程为脚本自动操作,请勿手动介入,可能会打断脚本。一直等待到系统开机输入密码阶段才算安装完成。

下载镜像中

注:天翼云电脑在重装后还是原系统卸载系统软件,都不影响在官方客户端的控制使用(截至2024/7/30是可行的)。但偶尔会出现弹窗显示异常提醒建议重启,点以后再说即可。

天翼云电脑 忽略弹窗即可

在Linux系统部署完成后,自动重启到Windows安装中。全程无需手动操作,也不要去介入操作,会打断进程。

系统自动安装中

新系统开机

安装完成后自动开机,默认开机密码:123@@@

锁屏界面

移动云电脑需要开机后用键盘打开远程软件,进行远程连接后才能控制。
使用快捷键 Win+E 打开此电脑,方向键选择D盘,并选择Todesk_lite.exe,回车键打开软件进行远程连接。

天翼云电脑可直接用官方客户端控制。

进入系统

天翼云电脑可在修改分辨率手动全盘。重装后无法进行自适应分辨率、硬盘映射等等功能,有需要可使用原系统。
刚安装好的系统分辨率不对,可以手动在桌面-右键-显示设置,手动调整分辨率为1920x1080即可。

系统激活

激活推荐使用HEU-KMS,可参考我前面的文章 安利个Windows激活工具 HEU-KMS

文件传输

最便捷的文件传输方式可使用第三方远程控制软件,进行文件传输;也可以提供各种网盘进行传输。官方客户端文件传输能力失效。

天翼云电脑修复

仔细研究了一下ecloud的驱动相关,按自己需求整理出了适用于官方客户端的驱动优化
修复以下问题:

  • 新系统后双重鼠标指针
  • 调整官方客户端窗口时自适应分辨率
  • 从云电脑内拉拽文件到外面以及相反拉拽文件
  • 剪贴板同步
  • 音频驱动
  • 客户端画质调整

驱动下载

需下载以下链接内三个文件(经fiddler抓包后未发现上报连接,但不排除定时上报。程序已精简过,去除其他服务如远程录屏、打印等服务)

https://yanhy.lanzouj.com/b033zndfuj
密码:5k43

驱动安装

clink天翼云电脑守护程序

先创建好文件夹,在C:\Program Files (x86)\ctyun\clink(也不一定要指定位置,这是原系统安装路径,为确保不出错还是推荐本路径)
解压后,将64文件夹放到clink目录内,如下图

文件夹路径

打开64文件夹,右键点击以管理员身份运行来打开clink_agent.exe和clink_cb_helper.exe。运行后没任何反应,但可以通过任务管理器看到已经在运行了。注:如不使用管理员身份运行,则在一些系统中可能因为没权限导致无法使用部分功能。

驱动软件运行

经多次测试,核心服务程序为必须运行项,否则其他程序无法正常工作,;服务程序则为跟着客户端窗口调整分辨率、剪贴板同步、文件拖拽传输等功能。

音频驱动ecloud_AudioDriver_FullSetup

音频驱动直接双击安装即可

驱动安装界面

drivers天翼云电脑显示驱动

随意解压一个位置,打开文件夹后,选择 qxldod.inf 文件,右键-安装。安装后没有弹窗,但如果第一次安装屏幕会闪烁并修改分辨率为很低的一个状态。

如果前面有安装了守护程序,只需要缩放一下官方客户端窗口,即可自动调整云电脑分辨率大小。

如果不使用守护程序,只安装驱动,可以手动在桌面-右键-显示设置,手动调整“显示器1”的分辨率为1920x1080即可,可以修复双重鼠标指针。(单独安装除了修复双重鼠标指针好像意义不大,经过测试这个驱动貌似就是配合守护程序调整分辨率使用)

结束

当云电脑DD重装后,会失去一些便利的特性,但是同时也有一些好处。使用全新系统,省去官方定制系统臃肿的性能占用和一堆无用的软件,删除官方监控后门,甚至部分云电脑可以重装后直接变成不休眠(天翼云还是会休眠),能更好的由自己控制。

本文部分内容摘抄自该博主(https://kui.li/989.html),如有版权问题请留言,会及时处理

补充:移动云电脑家庭版操作较麻烦,可以参考这篇文章获得更多移动云电脑相关内容:https://www.yuque.com/scynull/cloud/ikxva5t32sii3lrn

本文到此结束,如有更多感兴趣的话题可以关注本博客,不定期更新~

]]>
<![CDATA[推荐一个Windows激活工具 HEU-KMS]]> https://yanhy.top/index.php/archives/381/ 2024-06-27T18:33:00+08:00 2024-06-27T18:33:00+08:00 yanhy2000 https://yanhy.top 写个文章做个记录,便于以后查找,顺便也推荐下这个稳定的软件~

软件界面

截图版本:42.0.4

软件打开后界面

可能听名字有人有点耳熟,但是对这个软件本体很陌生,那么切换一种UI,就眼熟很多了
在软件右上角 三条横 的设置中,选择“经典界面”,即可打开

软件的“经典界面”

眼熟了吗?
没错,作者至今一直在更新,更新在微信公众号和Github上

如何还原到新版本界面:删除同目录下的Set.ini,再重新打开软件即可恢复

软件与配置文件

下载链接

Github: https://github.com/zbezj/HEU_KMS_Activator/releases/
公众号:《更新:HEU KMS Activator v42.0.4》
附图:公众号获取方式
公众号获取方式

简单的使用说明

激活Windows系统与Office套件

打开软件后,什么都不需要做(记得同意使用协议),点 开始 按钮即可开始自动激活。如检测到电脑上没安装Office则会自动跳过。

直接点开始即可自动激活

点击按钮后,软件下方会出现进度条,静静等待即可(个人经验约1-5分钟,可不联网)。
激活完成后,会弹窗结果。演示机未安装Office因此显示只有Windows激活结果。可重复激活,不担心掉激活或者覆盖等。

激活成功弹窗

验证激活结果

Windows:打开系统设置 - 更新与安全 - 激活,即可看到激活结果。演示机使用精简的win10系统,因此激活部分有bug可忽略。

正常情况下系统显示激活序列号等

Office:随便打开个软件如word,点左上角文件 - 左下角账户,可以看到右侧产品已激活且显示激活的版本

用自己电脑的Office的局部截图

到此,简单的激活方法就结束了,软件可以继续收藏吃灰或者直接删除~

部分问题的处理

KMS激活续期:在一些特殊条件下,会触发KMS激活方式。KMS的激活有180天的期限,因此要在一开始激活时勾选KMS自动续期。如激活完成后才发现是KMS激活,可以勾选后进行第二次激活。部分杀毒软件在KMS自动续期补丁安装时报毒,可以手动加白名单或者信任列表即可。

Office的盗版Banner警告:有时候在部分版本的Office软件内,打开时会在上方弹出一个Banner显示类似于“你可能是盗版的受害者”。此时可以打开HEU-KMS软件,然后选择最后一栏。

选择“其他”栏

在Office R2V/管理工具部分,选择Office版本,下方选择Fix_banner项,然后点击开始,等待修复完毕即可。

选择Fix_banner

更换Windows版本:有时候安装时手快点成了家庭版,但是家庭版阉割了很多东西(如Hyper-v、组策略管理器等),可以用HEU-KMS来转换Windows版本。
打开软件,选择“其他”栏,选择左上角的“更改Windows10/11版本”。在下拉框中,选择你想修改的版本。

Windows版本选择项

通常比较受欢迎的是ProfessonalWorkstation(专业工作站)版本,此处的演示机系统也是专业工作站版本(人均工作站(bushi))。选择完成后,点击右侧花瓣图表,点击确定按钮开始转换。为方便演示,这里选择专业版来转换。

转换Windows版本开始

转换成功后,会有弹窗提醒并要求重启计算机,一些改动也即将发生。

转换完成

如果此时打开设置查看系统版本,会发现已经转换成功,但尚未激活。重启后重新进行激活即可完成。(点击确定按钮并不会强制重启,可以保存好文件后手动点击重启)

转换到专业版成功

其他玩法还有很多,如至今半死不活的数字激活(一些曾经数字激活的电脑上还留着TPM信息,重装后仍然可以数字激活)、KMS激活(手动强制使用KMS激活)、OEM激活(模拟品牌电脑的操作)等,还能自建激活服务器,可以自行研究研究,对我来说这玩意就是在u盘里面吃灰,装完系统后第一个走过场然后继续吃灰的实用小工具

来自作者的免责声明

来自作者的免责声明

本文到此结束,希望这篇文章有帮到你~

]]>
<![CDATA[适用于Typecho文章的图片放大插件pScaleUpPlus]]> https://yanhy.top/index.php/archives/366/ 2024-06-22T14:14:00+08:00 2024-06-22T14:14:00+08:00 yanhy2000 https://yanhy.top 又想搞个好看精简的博客主题,又想多功能,只能用插件来凑了~
这次是从网上看到的 @梁先生呀 大佬编写的图片放大插件,但是功能也较为精简,因此在这个项目基础上进行了Fork,增加了一些功能...

以下内容来自该项目的Readme Github:yanhy2000/pScaleUp_plus

简介

· 一个Typecho插件,用于文章中的图片放大,适用于一些简洁主题不支持图片放大查看的情况。
· 该分支为增强版pScaleIP,修了一些小问题并增加一些特性。
· 插件的文件夹名是 pScaleUpPlus。

安装方法

  • 放到插件目录下后台,文件夹改名为pScaleUpPlus,随后启用即可,后台可设置放大倍数。
  • 点击图片就可以放大了,点其他地方还原。
  • tab键可以直接翻下一张图片。

修改内容

v2.0.1

  • 删除特定的class="no-scale"属性判断,预览仅使用正文的内容
  • 修改部分小细节,删除部分动画增加效率

v2.0.0

  • 修复预览时可以点击页面任何图片的bug,现在预览图片只会打开文章内的图片
  • 重构插件整体结构重新构建编写
  • 增加当预览时使用按钮或者方向键切换时,到第一或最后一张隐藏前进后退按钮
  • 插件改名为pScaleUpPlus

v1.1.3

  • 增加对不需要预览放大的图片增加class="no-scale"即可忽略图片,适用于网站logo等图
  • 计划重构

v1.1.2

  • 增加鼠标滚轮放大缩小
  • 适配移动端触控双指放大和平移

v1.1.1

  • 图片放大时可以点击任何地方或者使用ESC关闭
  • 图片放大后可以左右切换图片,也可以使用方向键切换
  • 图片放大后正下方显示图片的title属性

v1.1.0

  • 点击图片使用全屏放大
  • 放大时带有背景模糊
  • 图片加边框
  • 修复图片放大时容易被一些主题的其他元素遮挡,修改为置顶显示

使用效果

示例图片

]]>
<![CDATA[windows下使用certbot续订/申请SSL域名证书]]> https://yanhy.top/index.php/archives/358/ 2024-06-19T15:40:00+08:00 2024-06-19T15:40:00+08:00 yanhy2000 https://yanhy.top 有好一段时间没更新博客了,自从运营的MC服务器社区解散后,空余时间多起来了,可以去研究一些新的玩意了~

certbot Windows版本 Github下载链接

脚本内容

本文简单分享一下在windows系统下,使用certbot程序续订/申请SSL证书,为此我简单写了个Bat脚本可供使用。

07/10 更新:在系统用户非管理员情况下需要脚本提权才能运行,因此修改脚本使其可以打开后提权
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

echo 请确保安装了Certbot,如未安装可以前往下载 https://github.com/certbot/certbot/releases/download/v2.9.0/certbot-beta-installer-win_amd64_signed.exe
echo 脚本作者by.yanhy2000
echo 申请证书需要准备一个邮箱,邮箱第一次申请会自动注册,只需要两次输入"y"并回车即可
echo 验证证书需要手动添加修改DNS的TXT记录
set /p email="请输入您的邮箱地址: "
set /p domain="请输入您的域名: "

certbot certonly -m %email% -d "%domain%" -d %domain% --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

if %errorlevel% neq 0 (
    echo 证书申请过程中发生错误。
    pause
    exit /b %errorlevel%
)

echo 证书申请成功。
pause

其中,执行certbot程序的指令简单分析一下

certonly 安装模式
-m 申请证书所需的邮箱
-d 申请证书的域名
--manual 使用交互式或脚本钩子的方式获取证书
--preferred-challenges dns 使用 DNS 方式校验域名所有权
--server Let's Encrypt指定的V2版本接口

因此,只需要传入邮箱和域名,即可开始申请证书。

使用方法

填入邮箱和所申请的域名
如果邮箱第一次申请,会提示注册等,可以直接输入y回车(可能有两次)
随后会提示这样(域名和记录值为虚拟)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.www.test.com.

with the following value:

aaaaaaaaaaaaaaaa

Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.oooyn.top.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

此时不要按回车,前往域名注册站(如阿里云域名、腾讯云的DNSPod等),为目标域名添加一条记录:

  • 主机记录为“_acme-challenge.www.test.com.”去掉其中的主域名,也就是“_acme-challenge.www”
  • 记录类型为TXT
  • 记录值为上文中“aaaaaaaaaaaaaaaa”的内容

添加完成后,等待几分钟(最快几十秒也可能,dns解析和缓存需要时间),然后在命令行敲下回车键,等待验证。
如果不确定有没有解析好的话,可以先清理一下本地的DNS缓存,然后手动本地验证一下是否解析成功,再去回车。否则失败后需要重新解析DNS。

  • 本地清理DNS缓存方法:win+r,输入CMD回车,输入ipcondif /flushdns回车
  • 本地测试TXT解析方法: win+r,输入指令回车nslookup -qt=txt _acme-challenge.test.com

    服务器:  DNS1.aaaaaa.net
    Address:  1.2.3.4
    
    非权威应答:
    _acme-challenge.text.com       text =
    
          "aaaaaaaaaaaaaaaaaaaaaaaa"

回车后待显示以下内容即为成功,证书文件在 C:\Certbot\live 目录内,取出可部署需要的地方。

Successfully received certificate.
Certificate is saved at: C:\Certbot\live\example.top\fullchain.pem
Key is saved at:         C:\Certbot\live\example.top\privkey.pem
This certificate expires on 2023-08-05.
These files will be updated when the certificate renews.
​
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
​
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

查错

问题一

Certbot failed to authenticate some domains (authenticator: manual). The Certificate Authority reported these problems:
  Domain: www.test.com
  Type:   dns
  Detail: DNS problem: looking up TXT for _acme-challenge.www.test.com: DNSSEC: DNSKEY Missing

Hint: The Certificate Authority failed to verify the manually created DNS TXT records. Ensure that you created these in the correct location, or try waiting longer for DNS propagation on the next attempt.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details.
证书申请过程中发生错误。
请按任意键继续. . .

dns尚未解析好,需要多等一会。如果等很久还是失败,可以试试看清理本地的DNS缓存

问题二

Saving debug log to C:\Certbot\log\letsencrypt.log
An unexpected error occurred:
requests.exceptions.SSLError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details.
证书申请过程中发生错误。
请按任意键继续. . .

电脑网络通讯问题,检查是否开启了代理,关闭代理即可

]]>
<![CDATA[随身wifi折腾入门(番外)-- openwrt优化使用]]> https://yanhy.top/index.php/archives/338/ 2023-04-19T18:18:00+08:00 2023-04-19T18:18:00+08:00 yanhy2000 https://yanhy.top

本篇与debian同,随缘更新,记录实用操作

使用环境

使用esim卡

使用@苏苏小亮亮的openwrt 2022-06-05

棒子板号:001B 512MB+4GB

使用电脑usb连接,wifi作为调试

刷入系统

系统发布页面:https://www.kancloud.cn/a813630449/ufi_car/2792820

刷入方式可见棒子第三章,进入fastboot后,执行压缩包内的fastboot.bat,多次回车刷入即可成功

如果进不去fastboot,可在9008模式格式化boot分区,再次上电自动进入fastboot

优化使用

由于openwrt的无线驱动尚未解决,因此连接热点网速会很慢,目前没有好的解决方法,因此本文主要满足通过usb供网,并分享ipv6地址,热点仅作为管理端。

更换modem

使用sftp连接openwrt,然后将之前系统备份的 NON-HLOS.bin 文件解压或者通过镜像软件打开,将里面全部文件提取出来,再上传到 /root 目录中(可直接通过ssh远程软件自带的文件管理器上传,原理相同)

上传完成后,执行指令,将文件移动到 /lib/firmware

mv ./IMAGE/* /lib/firmware/

切换esim卡

正常来说,这个版本的openwrt是可以直接读取外卡槽的,如果想使用esim卡,则需要手动切换。因为有些软件包和debian系统不一样,但原理相差不多,所以修改部分指令并直接扔到 rc.local 内依旧是可以使用的。

打开网页管理,进入 系统-启动项-本地启动脚本 ,加入一行在原有的指令之前:

echo 255 > /sys/class/leds/sim\:sel/brightness

重启系统,在ssh输入 mmcli -m 0 即可查看esim连接状态,此时会显示disable

再执行指令:

mmcli -m 0 -e

即可启用sim卡

此时openwrt即可使用sim卡上网,重启之后仍然正常联网

增加虚拟内存

棒子本身内存只有0.5GB,且openwrt很多服务会运行比debian多且频繁,通过虚拟内存可以增加一定的稳定性。这里由于棒子存储只有4GB,装完openwrt后仅剩余2.7GB,且重点不在于跑docker等服务,因此创建800MB的虚拟内存即可够用。

在 ssh 控制台输入指令创建个分区文件:

dd if=/dev/zero of=/usr/swap bs=1M count=800

输入指令查看创建的分区大小是否为800MB:

du -sh /usr/swap

将分区文件设置为swap分区文件,并启用分区:

mkswap /usr/swap
swapon /usr/swap

设置开机自动挂载swap分区,一键指令(如果已经添加了挂载其他分区请勿使用该指令,会覆盖全部内容):

echo /usr/swap swap swap defaults 0 0 > /etc/fstab

也可以手动在文件 vi /etc/fstab 最后一行添加: /usr/swap swap swap defaults 0 0

在openwrt网页端 系统-启动项-本地启动脚本,最后一行添加:

swapon /usr/swap

保存并执行重启后,输入 free -m 指令即可看到swap分区添加成功。

如果磁盘不够用等原因想卸载swap分区,可执行指令:

swapoff /usr/swap
rm /usr/swap

/etc/fstab 内删除前面添加的那一行内容,并删除openwrt网页端 系统-启动项-本地启动脚本 内的前面添加的指令,即可完成卸载swap。

目前先到这里,剩下的随缘更新...

资料参考

开启swap分区

debian优化使用

]]>
<![CDATA[小米5刷入MIUI出现“查找手机存储损坏”]]> https://yanhy.top/index.php/archives/337/ 2023-04-19T15:43:00+08:00 2023-04-19T15:43:00+08:00 yanhy2000 https://yanhy.top

如果刷入其他系统如Los后再刷回MIUI,有概率出现“查找手机存储损坏”导致无法开启查找手机,更严重者出现“检查设备安全信息出错”而无法登陆小米账号,从而被迫变成账号锁黑机。网上查找了一下,最后通过9008线刷方式解决

下载线刷包

个人推荐一个很好的小米ROM网站,提供全部线刷包、卡刷包及国行、全球包

地址:https://xiaomirom.com/

解压修改线刷包

参考文章:https://www.hu60.cn/q.php/bbs.topic.98330.html?showBot=1

使用Bandizip或者其他压缩软件进行解压,需要解压两层,最后得到以下文件夹:

如需要解决“查找手机存储损坏”等问题,需要进入 images 文件夹,打开 rawprogram0.xml 文件,搜索 persist ,在同一行左侧的 filename="" 修改为 filename="persist.img" ,保存

下载MiFlash工具

还是在XiaomiRom网站下载,米5的话推荐下载2018版本,注意不要勾选全部删除并lock,这样会导致手机BL锁重新锁定

地址:https://xiaomirom.com/download-xiaomi-flash-tool-miflash/

下载完打开软件,选择路径 刷机包解压路径/images ,提示未找到脚本确定即可,9008刷机不需要线刷脚本

手机进入9008模式

社区内有很多方法能进,如果手机有解锁bl的话,可以用 fastboot oem edl 进入9008,否则需要拆机短接(工程线未尝试过,由于自己的米5经常拆机,所以一分钟就可以解决,没去魔改线材)

先插上手机端的typec防止不方便用力插入;电脑端usb拔出;镊子等短接右侧触点(此时需要关机,原贴说拔电池,其实不需要);短接保持,插入电脑端usb,听到设备接入声音即可松开短接;查看设备管理器是否有9008端口设备,如果有即可开始刷机;

图片来自贴吧:https://tieba.baidu.com/p/5077676617

刷机

在miflash内点击加载设备,选中设备,点击刷机即可开始,需要等待3分钟左右也可能更快

刷机结束后会显示finish,此时断开usb,手机先不急装后盖,长按电源键开机(可能需要10秒,因为要长按重启退出9008),等待3到5分钟开机进系统后,如果不提示“查找存储损坏”之类的即可正常联网登陆使用

退出小米云账号(可选)

在查看了不少地方的经验,看到有人说可以在小米云退出查找设备,再次联网即可重新登录账号。不确定是否有用,在开机之前我先退出了小米云查找设备,然后再开机,一切正常,重新登录账号即可使用

来源:https://web.vip.miui.com/page/info/mio/mio/detail?postId=3862195 评论区

]]>
<![CDATA[随身wifi折腾入门(番外)-- debian优化使用]]> https://yanhy.top/index.php/archives/336/ 2023-04-18T12:33:00+08:00 2023-04-18T12:33:00+08:00 yanhy2000 https://yanhy.top

注意:ipv6部分未完篇,但方法可行,如有建议可评论区留言,后面随缘更新...

本来这篇文章是为了ipv6热点而写的教程,后面发现方法很多但是争议也多,因此干脆作为日常使用及优化的记录篇,在本篇可以看到使用sim卡、切卡、网桥、led控制、更改usb模式等多个玩法,可按需学习使用...

环境与工具

本文使用 酷安@jsbsbxjxh66 大佬的ufi001b-debian超频版1.2Ghz Debian进行修改

使用esim卡环境(如使用实体卡可跳过切esim卡步骤)

使用电脑进行连接(需打开cmd进行adb操作,以及ssh工具)

制作网桥

本节修改内容:
网关:192.168.2.1
选卡:esim
网桥:br0

新建网桥br0

先使用 adb shell 删除全部的连接,如 nmcli c del wifi usb

使用ssh或者adb shell连接后,使用指令新建个网桥,并新建两个从机,为usb与wifi,执行指令:

nmcli c add type bridge ifname br0 con-name br0 ipv4.method manual ipv4.addresses 192.168.2.1/24 ipv4.gateway '' ipv4.dns '223.5.5.5'
nmcli c add type ethernet ifname usb0 con-name usb-share
nmcli c add type bridge-slave ifname usb-share con-name usb-share master br0

修改默认网关

修改 /etc/dnsmasq.conf 最后两行

listen-address=192.168.2.1
dhcp-range=192.168.2.10,192.168.2.254,12h

执行重启 adb reboot ,重启后再次输入 adb shell 进入终端,此时usb是无IPV4分配的,执行指令

systemctl enable dnsmasq.service
systemctl start dnsmasq.service

再次重启后,即可分配到usb的ipv4,可以通过ssh连接

添加wifi网络

通过ssh连接debian后,执行 nmtui ,选择 编辑连接 ,选择网桥br0点进去,手动添加一个wifi连接。

常用修正

接下来的内容按需采取,ipv6部分存在争议,可自行尝试

替换 HT40 驱动(可选)

将驱动文件上传到root目录,执行指令覆盖原驱动即可

mv wcn36xx.ko /lib/modules/5.15.0-handsomekernel+/kernel/drivers/net/wireless/ath/wcn36xx/

替换基带文件

使用sftp连接至debian,将之前全分区备份中的 NON-HLOS.bin 文件使用7z打开或者软碟通打开,将里面的IMAGE拖出来,并通过sftp上传到debina root目录

执行指令,替换 /lib/firmware 内的驱动文件

mv IMAGE/* /lib/firmware/

切换esim卡

sim:sel 为esim卡的位置,如果要切换到sim卡槽,一般为 sim:sel2 ,可以用指令看一下列表内是否有sim:sel2

ls /sys/class/leds/

如果没有 sim:sel2 则默认外置卡槽,可按需切换esim

输入指令 mmcli -m 0 ,如果显示有内容但显示 sim-missing ,此时则为卡槽模式,可插入自己的卡。

切换esim卡可直接修改 /etc/rc.local 文件,使开机自动修改

!/bin/sh -e
echo 255 > /sys/class/leds/sim\:sel/brightness
modprobe -r qcom-q6v5-mss
sleep 1
modprobe qcom-q6v5-mss
sleep 1
systemctl restart rmtfs
sleep 1
systemctl restart ModemManager
exit 

保存后输入 reboot 重启系统,重启后输入 mmcli -m 0 ,如出现 state: connected 即为连接正常。

同时在重启后检查wifi是否以及开启,执行 nmcli 后是否出现modem连接信息,如果出现连接ip等信息即为一切顺利(如下图)。如果前面不顺利,后面设置ipv6转发会出问题。

重启sim卡

如果出现输入 mmcli -m 0 后,显示卡未连接disconnect或者未发现卡,可以使用sim卡重启大法尝试一下。如果多次出现,可以试试看加入到开机启动脚本中 rc.local(自行添加sleep 1延时)

systemctl stop ModemManager
qmicli -d /dev/wwan0qmi0 --uim-sim-power-off=1
qmicli -d /dev/wwan0qmi0 --uim-sim-power-on=1
systemctl start ModemManager

查看emmc芯片寿命

棒子debian系统可通过执行指令查看emmc寿命,数值仅参考,也有部分型号查看为0x00的,为芯片未定义,0x01为最佳寿命,同理数值越大寿命越低,该值仅供参考

cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time

切换为USB模式

执行指令可断开棒子usb共享,更改为host主机模式,可用于棒子专用拓展坞使用

echo host > /sys/kernel/debug/usb/ci_hdrc.0/role

相反的,也可以切换回网络共享模式

echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role

快速开启一个wifi

如果棒子无wifi或者误删,可以用这个指令在adb shell内快速创建一个wifi热点,名字为4G-wifi,密码为123456789

nmcli d wifi hotspot ifname wlan0 con-name wifi ssid 4G-wifi band bg channel 11 password 123456789

关闭全部led指示灯

如果觉得led灯太闪(没壳的会显得很亮),可以执行指令关闭led,同时可以放rc.local开机启动自动关闭led灯

echo none > /sys/class/leds/red\:os/trigger
echo none > /sys/class/leds/blue\:wifi/trigger
echo none > /sys/class/leds/green\:internet/trigger

AP启用ipv6共享(待补充)

输入指令启用ipv6转发,执行过程中可能会掉线ssh,建议在 adb shell 内执行

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.proxy_ndp=1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf 
sysctl -p 
nmcli connection up br0
systemctl restart dnsmasq.service
nmcli connection up usb

安装依赖

apt install radvd ndppd dhcpcd5

编写配置文件

br0为要监听的网络

/etc/radvd.conf.demo
interface br0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    AdvManagedFlag off;
    AdvOtherConfigFlag off;
    prefix REPLACEIPV6 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
};
/etc/ndppd.conf.demo
route-ttl 30000
proxy wlan0 {
    router yes
    timeout 500
    rule REPLACEIPV6  {
        auto
    }
}
/etc/dhcpcd.conf
interface br0
    ipv6
    ipv6rs
    ipv6ra_other_information

启动服务

systemctl restart radvd
systemctl restart ndppd
systemctl restart dhcpcd

理论上v6部分就结束了,但是试过不同设备有几率并不能分发地址,还存在争议,也可以参考这位大佬的文章开启v6共享:https://zyyme.com/msm8916-wifi.html

本篇暂时完结,不研究debian了,后续随缘更新...

]]>
<![CDATA[随身wifi折腾入门(3)-- 简单控制GPIO]]> https://yanhy.top/index.php/archives/334/ 2023-04-11T17:12:00+08:00 2023-04-11T17:12:00+08:00 yanhy2000 https://yanhy.top

本章节待慢慢补充...

linux下的GPIO一般可以在/sys/kernel/debug/gpio下查询到信息,但是由于棒子的PCB没有开源,无法得知目前那些GPIO可以使用。但是通过表面可知,至少有3颗LED、2路SIM卡控制端口可用,且板载Uart串口调试点,因此,如果能对其中几个IO进行操作,通过IIC协议,即可可以控制多路外设,成为真正的硬件开发板...

控制LED行为

从最简单的开始,控制一颗LED的亮灭。刷了Debian系统后,板子上只有红色、蓝色灯为启用状态,而绿色灯为None状态。因此,我们可以先拿没用的绿色LED下手。

了解LED控制方法

查询目前棒子上已知的GPIO引用:ls /sys/class/leds/

查询后可得:

蓝色LED默认分配为WIFI状态

绿色LED默认分配为网络状态
红色LED默认为系统运行指示灯
SIM:EN为SIM卡启用状态,该焊盘位于ESIM底座GND处,预测SIM1同理
SIM:SEL为SIM选择状态,物理位置目前未测量

进入green的目录内,可看到以下几个文件:

主要文件为brightness、max_brightness、trigger,这三个文件即为LED引脚的属性

brightness:可读可写; 所以这个属性文件是用于设置 LED的亮度等级或者获取当前 LED 的亮度等级。
max_brightness: 该属性文件只能被读取,不能写,用于获取 LED 设备的最大亮度等级。
trigger: 触发模式,该属性文件可读可写,通过 cat 命令查看该属性文件触发模式

其中,trigger 内有以下的模式:

这里中括号选中为none,即为禁用。常见模式有:

timer:使用系统定时器控制,可用于作为伪PWM控制,定时闪烁等功能

heartbeat:心跳模式,可用于作为监控系统运行状态,定时有规律的闪烁

default-on:默认开启模式,此模式会使LED常亮,可用于寻找板载物理位置使用

mmc:读写存储器(emmc)的时候会闪烁

phy0tx(rx):接收(发送)wifi数据时会闪烁

尝试控制LED行为模式

使用echo的方式写入该文件即可控制LED的状态,如这里使它运行为心跳包闪烁模式:

echo heartbeat > /sys/class/leds/green\:internet/trigger

同理,如果写入 none 则为禁用led灯,指令如下:

echo none > /sys/class/leds/green\:internet/trigger

也可以设置led为wifi状态指示灯:

echo phy0radio > /sys/class/leds/green\:internet/trigger

仅需执行指令,即可控制led状态,重启后恢复原始模式,可写入rc.local让其每次开机都设置为该模式。

制作温控PWM风扇

可以将其设置为 timer 定时器模式,通过手动调整延时开与延时关的方式模拟PWM占空比:

echo timer >  /sys/class/leds/green\:internet/trigger
echo 90 > /sys/class/leds/green\:internet/delay_off
echo 10 > /sys/class/leds/green\:internet/delay_on

同理,可以使用绿色LED的IO用来控制风扇,实现温控风扇。以下代码为即兴发挥,可自行测试,将风扇连接至绿色LED引脚上,或者更改 GPIO_PIN 值为其他IO引脚;可以自行更改 pwm_v 的值,以1000为满值,分4个档位。代码仅供测试,如果有问题可评论区留言。

#python 3
import time
import os
pwm_v = [300,500,700,900] #档位速度设置,满值为1000
GPIO_PIN = "green\:internet"  #IO引脚设置
print("开始初始化GPIO...")
os.system(f"echo timer > /sys/class/leds/{GPIO_PIN}/trigger")
while True:
    time.sleep(1)
    try:
        temp_file=open("/sys/class/thermal/thermal_zone0/temp",'r')
        temp = int(int(temp_file.read())/1000)
        temp_file.close()
        print(f"当前温度为:{temp}")
    except OSError as e:
        print(f"打开文件出错:{str(e)}")
    if temp <25:
        print(f"温度在(0,25)区间内,关闭风扇,PWM占空比0%")
        os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_off")
    if temp >= 25 and temp <35:
        print(f"温度在[25,35)区间内,开启第一档,高电平时间{pwm_v[0]},低电平时间{1000-pwm_v[0]},PWM占空比{pwm_v[0]/1000*100}%")
        os.system(f"echo {pwm_v[0]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[0]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 35 and temp <45:
        print(f"温度在[35,45)区间内,开启第二档,高电平时间{pwm_v[1]},低电平时间{1000-pwm_v[1]},PWM占空比{pwm_v[1]/1000*100}%")
        os.system(f"echo {pwm_v[1]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[1]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 45 and temp <55:
        print(f"温度在[45,55)区间内,开启第三档,高电平时间{pwm_v[2]},低电平时间{1000-pwm_v[2]},PWM占空比{pwm_v[2]/1000*100}%")
        os.system(f"echo {pwm_v[2]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[2]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 55 and temp <65:
        print(f"温度在[55,65)区间内,开启第四档,高电平时间{pwm_v[3]},低电平时间{1000-pwm_v[3]},PWM占空比{pwm_v[3]/1000*100}%")
        os.system(f"echo {pwm_v[3]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[3]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 65:
        print(f"温度大于65摄氏度,开启最大功率,PWM占空比100%")
        os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_off")

除了简单的控制LED的行为以及模拟PWM,这几个引出的IO或许还可以更改输出输入模式,待本文后续更新继续探索...

参考文章

https://github.com/Yushi-Xing/openstick_fan/blob/main/main.cpp
https://gitee.com/anhui1995/ufi_auto-fan/blob/master/autofan.c
https://blog.csdn.net/qq_26226907/article/details/128027533
https://www.kancloud.cn/handsomehacker/openstick/2637560

]]>