我一直在 Windows 下用 WSL 1, 是因为我想要有个类似容器类的轻量级 Linux ABI 环境, 能够原生生成和执行 ELF 文件, 而不是像 cygwin 这种 API 兼容模式, 也不想要有完整的 vm 进行虚拟化.
促成这次迁移, 是因为从 glibc 2.42 开始, 终端的颜色显示有问题, 目前还没看到有解决方法. 虽然可以降级到 glibc 2.41 使用, 但是当 openssh 也更新后, 这个强绑定 glibc 和 openssl 版本的软件, 再也让我忍受不住了.
Alpine Linux 使用的 musl 而不是 glibc, 有些需要 glibc 的软件会有兼容性问题, 不过还好, 我没有这些需求. 都是一些脚本, 或者 go 程序, 以及 mingw 编译点东西.
目前用下来感觉良好.
另外我还尝试把 FreeBSD Linuxulator 里的 arch linux 也替换成 alpine, 结果碰到 /dev/fd 的 bug, 以及 go 程序编译也不行, 看来就只能偶尔用用, 或者跑 vm 了.
近期碰到 Win10 不停弹出简体中文补充字体 (Chinese (Simplified) Supplemental Fonts) 安装失败的通知, 详情就是通知中心出现一个图标带“字”的通知. 解决方法是删除该可选组件重新安装, 但是在 设置→系统→可选组件 中找不到该组件.
Get-WindowsCapability -online -name *fonts* | ft Name, DisplayName, Description
可以得知名称为 Language.Fonts.Hans~~~und-HANS~0.0.1.0
Get-WindowsCapability -online -name Language.Fonts.Hans~~~und-HANS~0.0.1.0
可得知状态是 Superseded (State : Superseded)
Remove-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0
Add-WindowsCapability -Online -Name Language.Fonts.Hans~~~und-HANS~0.0.1.0
最近部分区域 1.1.1.1 解析出其他域名的 CDN IP 所在区域不对. 举个列子, 香港解析出美国的CDN IP. 而且因为它不支持 ECS(EDNS Client Subnet), 所以只能弃用, 改回用 8.8.8.8.
Google DNS 因为支持 ECS, 如果需要指定ECS查询, 可以使用 dnsproxy, 返回基于那个 ip 区域的 CDN 解析.
根据这个链接, 加载大内容时出现 net::ERR_CONTENT_LENGTH_MISMATCH 的错误. 同时也影响到下载文件.
另外更容易出现在使用 socks5 代理时, 但是如果用 socks4 代理不出现?
目前修正这个问题的方法, 是 chrome 用 –disable-features=TcpSocketIoCompletionPortWin 这个参数启动. 在快捷方式末尾添加即可.
如何的固定到任务栏的快捷方式, 需要改 %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 里面的(Win10)
通过在地址栏输入 about:version 可以看到当前浏览器启动的参数
碰到配置到 systemd.network 的 RoutingPolicyRule 没生效, 最后指定 Priority= 即可修正, 看来内核对动态分配优先级有问题.
有一台 linux vm 在下载时, 速度会经常出现不正常的低速 (源服务器是 freebsd, 开启 bbr, 并设置了net.inet.tcp.bbr.measure.use_google=0).
一直找不到原因, 突然想起来这个 vm 的时间总是慢很多, 看到它自动选的是 TSC, 修改为 HPET 后, 问题解决.
另外, 理论上 TSC 应该更好, 但是在某些环境下, TSC 通过读取 CPU 时钟不准, 不如读取主板的 HPET 准确.
当前的时钟来源
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
可用的时钟来源
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
自从有了Let's Encrypt, SSL证书随便申请. 自从有了crt.sh, 刚申请的证书立马公开显示出来. 所以网站域名就从证书上泄露了.
一个想法: 通过 DNS-01 申请泛域名证书, 然后部署使用, 这样就不会出现基于特定域名的证书, 从而不泄露网站域名.
从某个版本开始, 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
目前 9.20.2 还是没有, 看起来是定为 Not planned.
replicate-do-db 和 replicate-ignore-db 是不安全的, 要用 replicate-wild-do-table 和 replicate-wild-ignore-table. 对于数据库的过滤, 用 % 定义表名称.