LANG 环境变量被强制改为 en_US.UTF-8 问题排查与修复
主机:Fedora 44 (qbh-x220) · 用户:qibohan · 修复日期:2026-09-09
一、问题现象
桌面环境(niri + systemd user 环境)中 LANG 显示为 en_US.UTF-8,而不是预期的 zh_CN.UTF-8。
导致中文环境变量丢失,影响:
- 应用程序界面语言(切换为英文)
- 中文 locale 相关的排序、日期、分词行为
主机:Fedora 44 (qbh-x220) · 用户:qibohan · 修复日期:2026-09-09
桌面环境(niri + systemd user 环境)中 LANG 显示为 en_US.UTF-8,而不是预期的 zh_CN.UTF-8。
导致中文环境变量丢失,影响:
/etc/profile.d/lang.sh 的 CJK fallback 逻辑| 项目 | 值 |
|---|---|
| 操作系统 | Arch Linux (Kernel 7.1.9) |
| 蓝牙适配器 | XX:XX:XX:XX:XX:XX (Qualcomm) |
| 蓝牙协议栈 | BlueZ 5.87 |
| 目标设备 | XY_SPP_XXXXVXXX |
| MAC 地址 | AA:BB:CC:DD:EE:FF |
| SPP 波特率 | 9600 (蓝牙 SPP 不使用波特率,此为软件层配置) |
| MAC | 名称 | 用途 |
|---|---|---|
| AA:BB:CC:DD:EE:FF | XY_SPP_XXXXVXXX | ✅ 目标交换机 SPP Console |
| AA:BB:CC:DD:EE:01 | XY_BLE_XXXXVXXX | BLE 版本 (未使用) |
| AA:BB:CC:DD:EE:02 | XXX的AirPods | 无关 |
| AA:BB:CC:DD:EE:03 | LYWSD03MMC | 温湿度传感器 (无关) |
1 | bluetoothctl pair AA:BB:CC:DD:EE:FF |
日期: 2026-09-08
环境: Fedora 44 (远程 user@192.168.x.x)
目标: 系统全局字体切换为 Noto 后,Edge 浏览器菜单字体仍显示异常
系统字体已全部切换为 Noto 系列,但 Edge 浏览器的菜单/界面字体仍不正确
(渲染为 Noto CJK 变体而非 Noto Sans,观感异常)。
Edge 以 Flatpak 方式安装 (com.microsoft.Edge),运行于沙箱环境中,
其 fontconfig 链路与宿主机完全隔离:
| 隔离点 | 说明 |
|---|---|
/etc/fonts/local.conf 不可见 |
系统级字体配置不在沙箱挂载路径内 |
XDG_CONFIG_HOME 被重定向 |
沙箱内指向 ~/.var/app/com.microsoft.Edge/config,与宿主机 ~/.config 隔离 |
| 沙箱字体路径重定义 | 05-flatpak-fontpath.conf 将字体目录重置为 /run/host/fonts 挂载点 |
结果: 沙箱内 fontconfig 未收到任何 Noto 锁定配置,fc-match sans-serif 匹配到 Noto Sans CJK SC(中文变体)而非纯拉丁 Noto Sans。
日期:2026-09-07
环境:Arch Linux + niri (Wayland/scrollable-tiling) + AMD Ellesmere 双屏
软件:wemeet-bin 3.26.10.401-1 + xdg-desktop-portal 1.22.1 (main) + xdg-desktop-portal-wlr 0.8.2
在 niri Wayland 环境下,腾讯会议无法正常共享屏幕:
niri-portals.conf 指向 gnome 后端):共享后黑屏(无视频流)wemeet 的定制模块 libscreen_share_module.so 存在异步调用链缺陷:
1 | 规范要求的正确顺序: wemeet 实际执行: |
系统: Arch Linux | 内核:
linux 7.0.12.arch1-1
桌面: KDE Plasma 6 + niri (Wayland)
生成日期: 2026-06-25
pacman -Qe),不含自动依赖(AUR) 标记来自 AUR,需用 yay -S 安装pacman -S 即可| 包名 | 说明 | 安装方式 |
|---|---|---|
base |
Arch 最小系统包集 | pacman -S base |
base-devel |
基础编译工具(gcc, make 等) | pacman -S base-devel |
linux |
Linux 内核及模块 | pacman -S linux |
linux-firmware |
Linux 固件集 | pacman -S linux-firmware |
sudo |
提权工具 | pacman -S sudo |
grub |
引导加载程序 | pacman -S grub |
efibootmgr |
EFI 引导管理 | pacman -S efibootmgr |
最近在给协会建统一身份认证,为了减少资源浪费,我选了一台在集群里已有的一台跑了很少业务的Centos7,但是中间发现当初分配给这个实例的硬盘只有16G (因为当时就打算跑很小的一个容器) 记录一下我扩容LVM的过程,以后可能还会用到

1 | fdisk -l # 查看磁盘信息 |
1 | pvcreate /dev/sdb # 创建新的物理卷 |
1 | # 扩展逻辑卷(将所有可用空间都分配给根分区) |
在日常网络管理工作中,我时常需要网络管理协会同学的协助以应对各类问题。然而,出于严格的安全考量和既定的管理规定,我无法向网管会同学开放 AC(无线接入控制器)的管理权限。但为保证网络运维工作的高效推进,及时将 AC 相关数据反馈给他们又显得尤为必要。为此,我展开了一系列深入探索与研究,最终借助飞书自建应用成功找到了一套行之有效的解决方案。接下来,我将详细阐述这一过程。
为达成 AC 数据向网管会同学的反馈目标,我起初运用了抓包 AC 管理控制台 登录后生成的 session token 的技术手段,并自主编写 API 接口以实现与飞书机器人的数据交互。然而在实际运行过程中,我很快察觉到该 session token 存在时效性问题,通常在数日后便会过期失效,进而致使数据获取流程中断,影响了信息反馈的持续性和稳定性。
面对 token 过期导致数据获取中断这个棘手问题,我试着去分析 AC 通信协议和交互流程,还参考了开源社区里不少相关工具。说实话,因为我水平有限,过程特别难,我遇到了各种各样的难题,很多时候都觉得没啥头绪。可能是运气好,最后还真让我摸到了 token 生成的一点规律。下面我就以 Python 为例,给大家分享一下我是怎么动态生成 token 来保证数据稳定获取的,要是有不足的地方,还希望大家多担待。
1 | def gen_hmac_info(ac_ip,ac_user): |
由于当前代码中包含部分敏感信息,尚未完成脱敏处理,出于数据安全与合规性考量,现阶段实际应用代码暂无法对外公开。后续,我计划在完成脱敏及相关处理后,将其发布至 GitHub 平台开源,以便与广大技术爱好者及同行进行交流与分享。在此,仅为大家展示该方案在实际应用中的运行情况与效果呈现 。


本方法仅需增添一个判断条件。由于是在 post_auth 阶段进行判断,故会存在正常的认证过程,然而在最终阶段会返回认证失败的结果。
1 | if ((NAS-IP-Address == "x.x.x.x" || NAS-IP-Address == "x.x.x.x") && Realm == "xxxxxx.edu.cn") { |
将以上内容添加至 sites-enabled/default 文件的post-auth 下即可。
[!tip]
本方法通常应用于高校 eduroam 等建设需求场景下,以禁止本校用户访问本校 eduroam 网络。eduroam 官方文档所介绍的方法会将指定 realm 全部舍弃。而在与锐捷 sam 或卓智 zos 进行搭配时,需要将本校 realm 代理至 sam 和 zos 之上。目前,经过摸索仅得出这一种方法。若有更为优良的方法,恳请各位前辈予以指导
进入Boot模式后,按住键盘上的“Ctrl+Q”键,进入uboot简易命令行,显示为 “bootloader#”。
使用main_config_password_clear命令,跳过密码启动设备。
使用enable命令,进入特权模式。
[!tip]
引导时 Control + B 进入 boot 模式