用户工具

站点工具


blog

这是本文档旧的修订版!


Windows 10 简体中文补充字体 更新失败的解决方法

近期碰到 Win10 不停弹出简体中文补充字体 (Chinese (Simplified) Supplemental Fonts) 安装失败的通知, 详情就是通知中心出现一个图标带“字”的通知. 解决方法是删除该可选组件重新安装, 但是在 设置→系统→可选组件 中找不到该组件.

手动重装组件

  1. 先开启管理员模式的 Powershell 命令行.
  2. 获取组件名称
    Get-WindowsCapability -online -name *fonts* | ft Name, DisplayName, Description

    可以得知名称为 Language.Fonts.Hans~~~und-HANS~0.0.1.0

  3. 再确认下该组件的状态
    Get-WindowsCapability -online -name Language.Fonts.Hans~~~und-HANS~0.0.1.0

    可得知状态是 Superseded (State : Superseded)

  4. 删除该组件
    Remove-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0
  5. 重新安装该组件
    Add-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0
2025/03/29 03:19

最近碰到 Cloudflare 公开 DNS 的问题

最近部分区域 1.1.1.1 解析出其他域名的 CDN IP 所在区域不对. 举个列子, 香港解析出美国的CDN IP. 而且因为它不支持 ECS(EDNS Client Subnet), 所以只能弃用, 改回用 8.8.8.8.

Google DNS 因为支持 ECS, 如果需要指定ECS查询, 可以使用 dnsproxy, 返回基于那个 ip 区域的 CDN 解析.

2025/02/25 16:21

Windows 下 Google Chrome 133 加载大内容时出问题

根据这个链接, 加载大内容时出现 net::ERR_CONTENT_LENGTH_MISMATCH 的错误. 同时也影响到下载文件.

另外更容易出现在使用 socks5 代理时, 但是如果用 socks4 代理不出现?

目前修正这个问题的方法, 是 chrome 用 –disable-features=TcpSocketIoCompletionPortWin 这个参数启动. 在快捷方式末尾添加即可.

如何的固定到任务栏的快捷方式, 需要改 %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 里面的(Win10)

通过在地址栏输入 about:version 可以看到当前浏览器启动的参数

2025/02/21 03:25

Linux systemd.network RoutingPolicyRule 没生效

碰到配置到 systemd.network 的 RoutingPolicyRule 没生效, 最后指定 Priority= 即可修正, 看来内核对动态分配优先级有问题.

2025/02/18 16:16

Linux 时钟来源导致的网络速度不正常

有一台 linux vm 在下载时, 速度会经常出现不正常的低速 (源服务器是 freebsd, 开启 bbr, 并设置了net.inet.tcp.bbr.measure.use_google=0).

一直找不到原因, 突然想起来这个 vm 的时间总是慢很多, 看到它自动选的是 TSC, 修改为 HPET 后, 问题解决.

另外, 理论上 TSC 应该更好, 但是在某些环境下, TSC 通过读取 CPU 时钟不准, 不如读取主板的 HPET 准确.

2024/12/09 02:00

从SSL证书看网站域名泄露的问题

自从有了Let's Encrypt, SSL证书随便申请. 自从有了crt.sh, 刚申请的证书立马公开显示出来. 所以网站域名就从证书上泄露了.

一个想法: 通过 DNS-01 申请泛域名证书, 然后部署使用, 这样就不会出现基于特定域名的证书, 从而不泄露网站域名.

2024/12/07 04:39

linux 的 systemd-resolved 对于解析本机主机名的处理变动

从某个版本开始, systemd 的变量值 SYSTEMD_RESOLVED_SYNTHESIZE_HOSTNAME 默认值从 0 改为了 1. 这就导致了在查询和本机主机名一样的域名时, 会使用本机所有 IP 合成结果, 而不去使用 DNS 服务器的结果.

网上的资料非常少, 仅有一个条目描述了.

我的解决方案是

systemctl revert systemd-resolved.service
cat << 'EOF' | systemctl edit --stdin systemd-resolved.service
[Service]
Environment="SYSTEMD_RESOLVED_SYNTHESIZE_HOSTNAME=0"
EOF
systemctl restart systemd-resolved.service
2024/11/11 16:36

dig 在做 DoH/DoT 查询时不会带 SNI 头

目前 9.20.2 还是没有, 看起来是定为 Not planned.

2024/11/08 15:52

踩了个 MySQL 复制的雷

replicate-do-db 和 replicate-ignore-db 是不安全的, 要用 replicate-wild-do-table 和 replicate-wild-ignore-table. 对于数据库的过滤, 用 % 定义表名称.

2024/10/22 16:42

ISRG Root X2 还是很难爱

老 android (<14) 没有root, 即使在系统设置的证书加上 ISRG Root X1 和 ISRG Root X2 的各个证书, 不管是自签名根证书还是交叉签署的根证书, 都无法让非浏览器的 APP 正确识别 ISRG Root X2 链签发的证书.

最后还是为了兼容性回到了 ISRG Root X1 证书链.

2024/10/13 17:16

关于 MS Office 自动更新的 30088-27 报错

安装了6月更新后的 MS Office 的代理功能从 WinInet 切换到了 WinHTTP. 如果在隐私设置中, 禁用了 “开启所有连接体验” 这个选项, 就会导致使用自动更新时报 30088-27 的错误.

重新启用 “开启所有连接体验”, 杀掉 OfficeClickToRun.exe 进程或注销或重启, 自动更新应该就好了.

另外想手动更新某个版本可以用以下命令:

"C:\Program Files\Common Files\microsoft shared\ClickToRun\OfficeC2RClient.exe" /update user updatetoversion=版本号

版本号范例如 16.0.17932.20058

如果要降级, 需要使用管理员权限运行, 升级则不需要.

2024/08/23 14:28

zstd 完全可以替代掉 gzip, bzip2, xz

要速度有速度, 要压缩比有压缩比, 完全吊打 gzip, bzip2, xz.

另外, 测试下来, tar 直接通过 –zstd 调用来压缩, 速度远不如输出 pipe 到 zstd 压缩再写盘. 其实在很多情况都有用 pipe 的性能好点, 其实是多 cpu 的情况, pipe 后就是多 cpu, 对比原来的单 cpu. 另外就是在 zstd 命令行下控制参数简单点, tar 整合就要通过 options 传进去(FreeBSD tar)

2024/08/16 16:34

关于 Let's Encrypt ECDSA 证书链在 Windows 下的事情

由于 Let's Encrypt 的 ECDSA 中间证书链是交叉签名, 在 Windows(至少是win10) 里默认使用 ISRG Root X1 签署, 其 CA 是 RSA 4096 证书, 非 ECDSA.

如果想看到完整的 ECDSA 证书链, 把 ISRG Root X2 签署的 E5, E6 证书导入中间证书容器.

2024/08/14 02:08

Let’s Encrypt 的 ECDSA 证书链

根据官方文档, Let’s Encrypt 对于 ECDSA 的证书签发, 其默认用兼容性较好的 RSA 的 ISRG Root X1 进行签发.

要切换到降低每次 TLS 握手过程所占据的带宽的 ISRG Root X2 证书链, 则需要指定 PREFERRED_CHAIN (dehydrated) 为 “ISRG Root X2”.

重新设置后重新申请证书.

还碰到 Windows 的证书问题: 根证书和中间证书, 和实际的证书链不符. 解决方法就是, 打开用户证书管理, 把里面的删除一遍, 注销重新登陆.

2024/08/13 03:28

试用 Google 的 ACME 服务

官网文档

简单来说, 如果已有项目, 在 web console 中运行以下命令获取 EAB_KID 和 EAB_HMAC_KEY.

gcloud config set project PROJECT_ID
gcloud publicca external-account-keys create

自己修改了下 dehydrated, 用于支持 Google Trust Services. 首次注册需要指定 CONTACT_EMAIL, EAB_KID 和 EAB_HMAC_KEY.

优点:

  • 国内有 OCSP 服务器.

缺点:

  • CA 国内无法访问.
  • http-01, CA无法访问国内.
  • 如果申请 RSA 证书可能最高只支持 2048, 好在我用 ECDSA.
2024/08/13 01:51

记录一次 ZFS 由于设备名称变更导致故障的修复

发现一台 ubuntu 23.10 的 ZFS 卷降级了

# zpool status stor
  pool: stor
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 19:13:23 with 0 errors on Sun Jun  9 19:37:31 2024
config:

        NAME                        STATE     READ WRITE CKSUM
        stor                        DEGRADED     0     0     0
          raidz2-0                  DEGRADED     0     0     0
            scsi-35000cca260cd1f18  ONLINE       0     0     0
            scsi-35000cca260cc3084  ONLINE       0     0     0
            scsi-35000cca260cc6be0  ONLINE       0     0     0
            13184766210832087855    FAULTED      0     0     0  was /dev/sdf1
            8984617841033776882     FAULTED      0     0     0  was /dev/sdg1
            wwn-0x5000cca2604ac3e0  ONLINE       0     0     0

errors: No known data errors

# zpool status -L stor
  pool: stor
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 19:13:23 with 0 errors on Sun Jun  9 19:37:31 2024
config:

        NAME                      STATE     READ WRITE CKSUM
        stor                      DEGRADED     0     0     0
          raidz2-0                DEGRADED     0     0     0
            sdc                   ONLINE       0     0     0
            sdd                   ONLINE       0     0     0
            sde                   ONLINE       0     0     0
            13184766210832087855  FAULTED      0     0     0  was /dev/sdf1
            8984617841033776882   FAULTED      0     0     0  was /dev/sdg1
            sdg                   ONLINE       0     0     0

errors: No known data errors

我的天, raidz2 掉了2个盘!

经检查, 硬盘并没有问题, 只是重启后设备名变了(从上面 sdg 在列里, 但是却说曾经的 sdg1 出错了可以看出), 这样 ZFS 就出问题了??!! 我在 FreeBSD 下重来没碰到过.

试着用 zpool replace, 报错

# zpool replace stor 13184766210832087855 /dev/sdf
invalid vdev specification
use '-f' to override the following errors:
/dev/sdf1 is part of active pool 'stor'

# zpool replace -f stor 13184766210832087855 /dev/sdf
invalid vdev specification
the following errors must be manually repaired:
/dev/sdf1 is part of active pool 'stor'

尝试zpool labelclear, 报错. wipefs 掉再 replace, 还是报错

# zpool labelclear /dev/sdf                       
failed to clear label for /dev/sdf

# wipefs -a /dev/sdf
/dev/sdf: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sdf: 8 bytes were erased at offset 0x74702555e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sdf: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/sdf: calling ioctl to re-read partition table: Success

# zpool replace stor 13184766210832087855 /dev/sdf
cannot replace 13184766210832087855 with /dev/sdf: /dev/sdf is busy, or device removal is in progress

艹! 已经不能描述我当前的心情了.

最后查了下网上的一些案例, 先 export, 然后用 import -d 的方式. 但是如果只用 -d /dev/disk/by-id/ 是不行的, 直接用多次 -d 来解决.

将有问题的设备离线, 导出池后, 用 -d /dev/disk/by-id/ 加上多个 -d 设备名导入池. 然后将有问题的设备重新上线.

# zpool offline stor 13184766210832087855
# zpool offline stor 8984617841033776882 
# zpool export stor
# zpool import -d /dev/disk/by-id/ -d /dev/sdc -d /dev/sdd -d /dev/sde -d /dev/sdg -d /dev/sdf -d /dev/sdi stor
# zpool online stor 13184766210832087855
# zpool online stor 8984617841033776882 

最后终于池在线了, 并且对2个有问题的设备重建.

# zpool status stor
  pool: stor
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Sun Jul  7 01:17:01 2024
        44.7G / 32.3T scanned at 1.09G/s, 0B / 32.3T issued
        0B resilvered, 0.00% done, no estimated completion time
config:

        NAME                        STATE     READ WRITE CKSUM
        stor                        ONLINE       0     0     0
          raidz2-0                  ONLINE       0     0     0
            scsi-35000cca260cd1f18  ONLINE       0     0     0
            scsi-35000cca260cc3084  ONLINE       0     0     0
            scsi-35000cca260cc6be0  ONLINE       0     0     0
            wwn-0x5000cca260cc504c  ONLINE       0     0     0
            wwn-0x5000cca260cc32d0  ONLINE       0     0     0  (awaiting resilver)
            wwn-0x5000cca2604ac3e0  ONLINE       0     0     0

errors: No known data errors

实际重建速度在后面是很快的, 前面做扫描用了一段很长的时间.

2024/07/07 05:20

又是鸡飞蛋打的时间

一堆 Linux 需要更新 OpenSSH: CVE-2024-6387.

2024/07/02 03:13

禁用 Windows Defender

新版本的 win10/win11 对于只用注册表和组策略来禁用内置的杀毒, 已经没用了. 系统会自动重新启用杀毒.

简单的解决方法

在安全模式时运行以下命令, 可以提前写到 bat/cmd 文件, 启动到安全模式以管理员运行

reg add "HKLM\System\CurrentControlSet\Services\WdFilter" /v "Start" /t REG_DWORD /d "4" /f
reg add "HKLM\System\CurrentControlSet\Services\WdNisDrv" /v "Start" /t REG_DWORD /d "4" /f
reg add "HKLM\System\CurrentControlSet\Services\WdNisSvc" /v "Start" /t REG_DWORD /d "4" /f
reg add "HKLM\System\CurrentControlSet\Services\WinDefend" /v "Start" /t REG_DWORD /d "4" /f

配合注册表更完美

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
"DisableRealtimeMonitoring"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection]
"DisableBehaviorMonitoring"=dword:00000001
"DisableOnAccessProtection"=dword:00000001
"DisableScanOnRealtimeEnable"=dword:00000001
2024/06/29 02:45

rustdesk

现在 TeamViewer 越来越恶心, 国内用还会提示绑手机号. AnyDesk 连接服务器慢, 中继服务器国内连接不快, 直接端口连接对于同一个ip地址不同端口支持不好.

改用 RustDesk, 自己搭了个服务端, 连接速度真够快的.

2024/06/25 15:39

btrfs

由于 btrfs 缺少 ext4 的 e2image 工具, 所以如果要把分区前部空出一段空间, 而且使用空间超过一半, 就要操作很多步才能达到目的.

把当前的文件系统缩小, 修改分区缩小后段, 新建分区, 加到 btrfs 的相同挂载点.

重复上面步骤. 最后就是新建了一堆临时分区, 最后腾出前段的空间, 再反向操作.

2024/06/25 14:32

如果给 windows 设置测试用的 IPv6

根据命令 netsh interface ipv6 show prefixpolicies

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        35      4  ::ffff:0:0/96
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96

如果只是测试, 不要给 windows 使用大于 label 1 的 IPv6 地址段, 避免以后碰到的坑.

2024/06/22 16:45

碰到 bhyve 的 efi boot var 坏了

bhyve 里的 arch linux 更新重启后, bhyve core dump, 启动不了了.

把 ini 的 lpc.bootvars 注释掉, 正常启动, 看来不知道什么原因把 efi 的 启动变量弄坏了.

重新把 /usr/local/share/edk2-bhyve/BHYVE_UEFI_VARS.fd 复制过来覆盖掉, 启动正常.

重新进到虚拟机后, 用 efibootmgr 添加启动项, 修改启动顺序. 再次重启, 没问题.

非常奇怪, 坏之前明明没有碰过 efi boot var 啊.

2024/06/22 04:00

有点想把 locale 设为 C.UTF-8

一直以来都在用 en_US.UTF-8, 但是用 sort, comm 总是怪怪的.

Linux

用 en_US, 排序会忽略符号

$ printf "a.d\na_c\nab" | sort
ab
a_c
a.d

用 C

$ printf "a.d\na_c\nab" | sort
a.d
a_c
ab

用 awk 排序, 不依赖 locale

$ printf "a.d\na_c\nab" | awk '{if ($0!="") {a[$0]}} END {asorti(a); for (k in a) {print a[k]}}'
a.d
a_c
ab

FreeBSD

用 en_US

$ printf "a.d\na_c\nab" | sort
a_c
a.d
ab

用 C

$ printf "a.d\na_c\nab" | sort      
a.d
a_c
ab

用 gawk 排序和 Linux 一样 (FreeBSD 自身的 awk 不支持 asorti)

2024/06/22 01:51

DNSSEC & EDNS

DNS 总是 DNSSEC 失败, 查了几天, 终于想起来, DNSSEC 需要用 EDNS, 而我对某些 IP 段关闭了 EDNS. 原来傻逼是自己.

2024/06/13 01:22

用 gost 替换 3proxy

自从 FreeBSD 14.1 开始, 3proxy 的 tcppm (TCP端口映射), 如果配置不指定 log 是不会继承主配置, 启动会报错. 虽然可以在参数指定 log, 但是还是觉得不爽. 看了半天源代码, 没找出问题.

我需要用到通过 socks5 做 TCP 端口映射. 可选的方案不多, gost 可以, 反正 go 的程序部署简单.

不过, gost 的 cpu/ram 占用还是要比 3proxy 高.

2024/06/12 17:34

FreeBSD 14.1

FreeBSD hshh.org 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-10e31f094 hshh amd64

2024/06/01 22:58

sqlite3 数据库的简单修复

vnstat 启动失败, 其使用的 sqlite3 数据库报错 database disk image is malformed, 记录下简单的修复.

用 sqlite3 加载数据库
sqlite3 /var/db/vnstat/vnstat.db

先做完整性测试:

pragma integrity_check;

显示错误为 row 45 missing from index sqlite_autoindex_fiveminute_1, 也就是索引 sqlite_autoindex_fiveminute_1 有问题.

修复该索引

reindex sqlite_autoindex_fiveminute_1;

再做完整性测试已经不报错了.

2024/05/17 04:41
blog.1717255172.txt.gz · 最后更改: 2024/06/01 23:19 由 Hshh