Fontconfig 参考资料:Font configuration
Fontconfig 是一个用于向应用程序提供可用的字体 列表,以及字体渲染配置的库。
Fontconfig 的默认字体路径是 /usr/share/fonts/ 和 ~/.local/share/fonts(以及过时的 ~/.fonts/)。Fontconfig 将在这些路径下递归查找字体。
用户配置文件位于 $XDG_CONFIG_HOME/fontconfig/fonts.conf 中(通常是 $HOME/.config/fontconfig/fonts.conf)。全局配置文件位于 /etc/fonts/local.conf。 用户配置优先级高于全局配置。两个文件使用相同的语法。 Fontconfig 配置文件使用 XML 格式,其需要的头部如下:
1 2 3 4 5 6 7 <?xml version="1.0" ?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd" > <fontconfig > </fontconfig >
中文字体显示奇怪 June 4, 2024
本次更新后中文不再是 Noto Sans 字体,变成了更细、发虚的字体(各种意义上太难看了
Arch论坛看了下: 由于近期 noto-fonts-cjk 打包变化,导致默认CJK回落字体不再是 Noto 系列字体。详情
解决方案: 在 ~/.config/fontconfig/ 下 新建一个字体文件(xxx.conf),让 Noto Sans CJK SC 优先使用即可: 参考:修正简体中文显示为异体(日文)字形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" ?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd" > <fontconfig > <alias > <family > sans-serif</family > <prefer > <family > Noto Sans CJK SC</family > <family > Noto Sans CJK TC</family > <family > Noto Sans CJK JP</family > </prefer > </alias > <alias > <family > monospace</family > <prefer > <family > Noto Sans Mono CJK SC</family > <family > Noto Sans Mono CJK TC</family > <family > Noto Sans Mono CJK JP</family > </prefer > </alias > </fontconfig >
Waydroid 没有waydroid,我怎么玩碧蓝航线啊(悲
ERROR: Can’t open /dev/binder: No such file or directory December 24, 2024
更新后发现 waydroid 挂了,表现为 waydroid session start 出错:
1 2 [13:02:43] Failed to add presence handler: None [gbinder] ERROR: Can't open /dev/binder: No such file or directory
看看 binder_linux-dkms 貌似也没啥问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 $ pacman -Qi binder_linux-dkms-git 名字 : binder_linux-dkms-git 版本 : r57.ee4c25f-3 描述 : Android kernel driver fork by @choff in DKMS format, binder only 架构 : any URL : https://github.com/choff/anbox-modules 软件许可 : GPL-2.0-only 组 : 无 提供 : 无 依赖于 : dkms 可选依赖 : 无 依赖它 : 无 被可选依赖 : 无 与它冲突 : binder_linux-dkms anbox-modules-dkms 取代 : binder_linux-dkms 安装后大小 : 279.35 KiB 打包者 : lilac-alarm (on behalf of i7arch) <i7arch@member.fsf.org> 编译日期 : 2024年10月03日 星期四 19时16分59秒 安装日期 : 2024年10月07日 星期一 19时46分44秒 安装原因 : 单独指定安装 安装脚本 : 否 验证者 : SHA-256 校验值 数字签名
去论坛看了下发现上周core/linux已经启用了 binderfs 的MR合并,那可能是冲突了?然而卸载了binder_linux-dkms-git并没有成功启动。
最后根据waydroid文档的建议,尝试重置镜像之后就能正常使用了。
[gbinder] Service manager /dev/anbox-binder has appearedJanuary 18, 2025
今天重装了系统,发现Waydroid是挂的,一直在启动中挂起:
1 2 3 4 $ waydroid session start [11:22:15] Starting waydroid session [gbinder] Service manager /dev/anbox-binder has appeared
日志里只有lxc的地方看上去有点奇怪,但是我看不懂(
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 $ waydroid log (000837) [22:08:19] % mkdir -p /dev/binderfs (000837) [22:08:19] % mount -t binder binder /dev/binderfs (000837) [22:08:19] % ln -s /dev/binderfs/anbox-hwbinder /dev/binderfs/anbox-vndbinder /dev/binderfs/anbox-binder /dev/binderfs/features /dev/binderfs/binder-control /dev/ (000837) [22:08:19] Save config: /var/lib/waydroid/waydroid.cfg (000837) [22:08:19] % modprobe -q ashmem_linux (000837) [22:08:19] % lxc-info --version 6.0.3 (000837) [22:08:19] % mkdir -p /var/lib/waydroid/lxc/waydroid (000837) [22:08:19] % sh -c cat "/usr/lib/waydroid/data/configs/config_base" "/usr/lib/waydroid/data/configs/config_3" "/usr/lib/waydroid/data/configs/config_4" > "/var/lib/waydroid/lxc/waydroid/config" (000837) [22:08:19] % sed -i s/LXCARCH/x86_64/ /var/lib/waydroid/lxc/waydroid/config (000837) [22:08:19] % cp -fpr /usr/lib/waydroid/data/configs/waydroid.seccomp /var/lib/waydroid/lxc/waydroid/waydroid.seccomp (000837) [22:08:19] % systemctl is-active -q apparmor (000837) [22:08:19] % mv /var/lib/waydroid/config_nodes /var/lib/waydroid/lxc/waydroid (000592) [22:08:19] % lxc-info -P /var/lib/waydroid/lxc -n waydroid -sH STOPPED (000592) [22:08:19] % modprobe -q ashmem_linux (000592) [22:08:19] % chmod 666 -R /dev/anbox-binder (000592) [22:08:19] % chmod 666 -R /dev/anbox-vndbinder (000592) [22:08:19] % chmod 666 -R /dev/anbox-hwbinder (000592) [22:09:15] % /usr/lib/waydroid/data/scripts/waydroid-net.sh start vnic is waydroid0 (000592) [22:09:15] % systemctl is-active -q nfcd (000592) [22:09:15] % chmod 777 -R /dev/dri (000592) [22:09:15] % chmod 777 -R /dev/fb0 (000592) [22:09:15] % chmod 777 -R /dev/video0 (000592) [22:09:15] % chmod 777 -R /dev/video1 (000592) [22:09:15] % mv /var/lib/waydroid/config_session /var/lib/waydroid/lxc/waydroid (000592) [22:09:15] % mount -o ro /usr/share/waydroid-extra/images/system.img /var/lib/waydroid/rootfs (000592) [22:09:15] % mkdir -p /var/lib/waydroid/overlay_work/system (000592) [22:09:15] % mount -t overlay -o ro,lowerdir=/var/lib/waydroid/overlay:/var/lib/waydroid/rootfs,upperdir=/var/lib/waydroid/overlay_rw/system,workdir=/var/lib/waydroid/overlay_work/system,xino=off overlay /var/lib/waydroid/rootfs (000592) [22:09:15] % mount -o ro /usr/share/waydroid-extra/images/vendor.img /var/lib/waydroid/rootfs/vendor (000592) [22:09:15] % mkdir -p /var/lib/waydroid/overlay_work/vendor (000592) [22:09:15] % mount -t overlay -o ro,lowerdir=/var/lib/waydroid/overlay/vendor:/var/lib/waydroid/rootfs/vendor,upperdir=/var/lib/waydroid/overlay_rw/vendor,workdir=/var/lib/waydroid/overlay_work/vendor,xino=off overlay /var/lib/waydroid/rootfs/vendor (000592) [22:09:15] % mount -o bind /var/lib/waydroid/waydroid.prop /var/lib/waydroid/rootfs/vendor/waydroid.prop (000592) [22:09:15] Save config: /var/lib/waydroid/waydroid.cfg (000592) [22:09:15] % lxc-start -P /var/lib/waydroid/lxc -F -n waydroid -- /init (000592) [22:09:15] New background process: pid=1129, output=background (000592) [22:09:15] % lxc-info -P /var/lib/waydroid/lxc -n waydroid -sH RUNNING (001076) [22:09:15] Skipping clipboard manager service because of missing pyclip package (001577) [22:09:41] % tail -n 60 -F /var/lib/waydroid/waydroid.log (001577) [22:09:41] *** output passed to waydroid stdout, not to this log ***
排查了很久,根本找不到问题所在。直到我尝试用软解成功启动waydroid。那肯定是显卡的问题。有点纳闷我寻思也是混合模式啊,不应该是优先核显嘛… 而且检查结果也没问题。
1 2 $ glxinfo | grep 'OpenGL renderer' OpenGL renderer string: AMD Radeon 680M (radeonsi, rembrandt, LLVM 19.1.6, DRM 3.59, 6.12.9-arch1-1)
看着waydroid的默认配置,我还是觉得和显卡有关,但是死活找不出原因(
1 2 3 4 5 6 7 8 9 10 11 12 13 /var/lib/waydroid/waydroid_base.prop ------------------------------------ sys.use_memfd=true debug.stagefright.ccodec=0 ro.hardware.gralloc=gbm ro.hardware.egl=mesa ro.hardware.vulkan=radeon ro.hardware.camera=v4l2 ro.opengles.version=196609 waydroid.system_ota=https://ota.waydro.id/system/lineage/waydroid_x86_64/VANILLA.json waydroid.vendor_ota=https://ota.waydro.id/vendor/waydroid_x86_64/MAINLINE.json waydroid.tools_version=1.4.3 ro.vndk.lite=true
直到我看到了一个issues:[gbinder] Service manager /dev/anbox-binder has appeared than hangs
eglinfo看了下,已经确定是同一个问题,内核早加载的时候,优先使用了Nvidia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 $ eglinfo -B GBM platform: EGL API version: 1.5 EGL vendor string: NVIDIA EGL version string: 1.5 EGL client APIs: OpenGL_ES OpenGL OpenGL core profile vendor: NVIDIA Corporation OpenGL core profile renderer: NVIDIA GeForce RTX 3060 Laptop GPU/PCIe/SSE2 OpenGL core profile version: 4.6.0 NVIDIA 565.77 OpenGL core profile shading language version: 4.60 NVIDIA OpenGL compatibility profile vendor: NVIDIA Corporation OpenGL compatibility profile renderer: NVIDIA GeForce RTX 3060 Laptop GPU/PCIe/SSE2 OpenGL compatibility profile version: 4.6.0 NVIDIA 565.77 OpenGL compatibility profile shading language version: 4.60 NVIDIA OpenGL ES profile vendor: NVIDIA Corporation OpenGL ES profile renderer: NVIDIA GeForce RTX 3060 Laptop GPU/PCIe/SSE2 OpenGL ES profile version: OpenGL ES 3.2 NVIDIA 565.77 OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20 ...
解决办法是,在 /etc/mkinitcpio.conf 的HOOK数组上添加回来 kms ,并重做 mkinitcpio ,重启之后,gbm就会优先让AMD工作。最后再重置waydroid镜像就正常工作了
在HOOK数组删 kms 模块的原因 但是当我加上 kms 后,也没在 journalctl -b 找到 nouveau 的东西,估计没啥大问题。
镜像Bug May 20, 2025
今天久违更新了镜像,发现 adb shell wm size 1280x720 后鼠标触摸出错,只能点击部分区域(1280x720大小),应该是把Los20版本的一些东西搞到Los18版本出现的不兼容。
解决方法是回到推出Los20测试镜像前的Los18镜像,即版本时间线为2025-04-13的system和vendor。
关于如何自定义镜像版本:https://docs.waydro.id/faq/using-custom-waydroid-images
屏幕刷新率 February 04, 2025
今天更新后发现核显的刷新率只能以60HZ显示了(习惯了240HZ看60HZ真难受)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 $ wlr-randr eDP-1 "Thermotrex Corporation TL160ADMP11-0 (eDP-1)" Make: Thermotrex Corporation Model: TL160ADMP11-0 Serial: (null) Physical size: 350x220 mm Enabled: yes Modes: 2560x1600 px, 60.000000 Hz (preferred, current) 1920x1200 px, 60.000000 Hz 1920x1080 px, 60.000000 Hz 1600x1200 px, 60.000000 Hz 1680x1050 px, 60.000000 Hz 1280x1024 px, 60.000000 Hz 1440x900 px, 60.000000 Hz 1280x800 px, 60.000000 Hz 1280x720 px, 60.000000 Hz 1024x768 px, 60.000000 Hz 800x600 px, 60.000000 Hz 640x480 px, 60.000000 Hz Position: 0,0 Transform: normal Scale: 1.500000 Adaptive Sync: disabled
1 2 $ uname -aLinux ATRI 6.13.1-arch1-1 #1 SMP PREEMPT_DYNAMIC Sun, 02 Feb 2025 01:02:29 +0000 x86_64 GNU/Linux
切换了一下内核发现又能核显240HZ了,估计是内核的bug。不太懂,摆了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 $ wlr-randr eDP-1 "Thermotrex Corporation TL160ADMP11-0 (eDP-1)" Make: Thermotrex Corporation Model: TL160ADMP11-0 Serial: (null) Physical size: 350x220 mm Enabled: yes Modes: 2560x1600 px, 239.998001 Hz (preferred, current) 2560x1600 px, 59.999001 Hz (preferred) 1920x1200 px, 239.998001 Hz 1920x1080 px, 239.998001 Hz 1600x1200 px, 239.998001 Hz 1680x1050 px, 239.998001 Hz 1280x1024 px, 239.998001 Hz 1440x900 px, 239.998001 Hz 1280x800 px, 239.998001 Hz 1280x720 px, 239.998001 Hz 1024x768 px, 239.998001 Hz 800x600 px, 239.998001 Hz 640x480 px, 239.998001 Hz Position: 0,0 Transform: normal Scale: 1.500000 Adaptive Sync: disabled
1 2 $ uname -aLinux ATRI 6.12.12-1-lts #1 SMP PREEMPT_DYNAMIC Sat, 01 Feb 2025 18:47:29 +0000 x86_64 GNU/Linux
August 20, 2025 七月的某次更新修复了这个问题,具体内容有点忘记了,做个结果补记一下
/home挂载失败 开机显示 貌似是硬盘的问题,但是其他分区能挂载,应该不是整个盘炸了
由开机时的报错提示看应该是 /home 出了问题
1 [FAILED] Failed to start File System Check on /dev/disk/by-uuid/0d34532b-4120-4ad6-8153-e208696ac4f1. See 'systemctl status "systemd-fsck@dev-disk-by\\x2duuid-0d34532b\\x2d4120\\x2d4ad6\\x2d8153\\x2de208696ac4f1.service"' for details. [DEPEND] Dependency failed for /home. [DEPEND] Dependency failed for Local File Systems. [ OK ] Started D-Bus User Bus.
挂载失败?使用 blkid 对比了/etc/fstab上的UUID好像也没问题。
1 2 3 4 5 6 7 8 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:5 0 1.9T 0 disk /mnt/data nvme1n1 259:0 0 931.5G 0 disk ├─nvme1n1p1 259:1 0 1G 0 part /boot ├─nvme1n1p2 259:2 0 32G 0 part [SWAP] ├─nvme1n1p3 259:3 0 128G 0 part / └─nvme1n1p4 259:4 0 770.5G 0 part
使用 mount -a 查看显示分区出现错误,奇怪的是再次使用 lsblk 查看又能挂载了(重试了几次发现是 mount -a 命令导致的,并且使用 mount -a 一次之后再次使用将不显示分区出现错误,检测不出错误了)
1 2 3 4 5 6 7 8 9 10 11 [ 34.606814] EXT4-fs (nvme1n1p4): warning: mounting fs with errors, running e2fsck is recommended NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme1n1 259:0 0 931.5G 0 disk ├─nvme1n1p1 259:1 0 1G 0 part /boot ├─nvme1n1p2 259:2 0 32G 0 part [SWAP] ├─nvme1n1p3 259:3 0 128G 0 part / └─nvme1n1p4 259:4 0 770.5G 0 part /home nvme0n1 259:5 0 1.9T 0 disk /mnt/data
按提示使用e2fsck(Linux 系统中用于检查和修复 ext2、ext3、ext4 文件系统的命令行工具)
由于薛定谔的挂载,还是手动卸载挂载 /home 先
然后使用工具修复
1 2 3 4 ...... /dev/nvme0n1p4: ***** FILE SYSTEM WAS MODIFIED ***** /dev/nvme0n1p4: 309933/50503680 files (1.3% non-contiguous), 17569752/201985024 blocks
重启完事
原因猜测: 这几天我没有进行系统更新啥的,也没有修改系统设置。 唯一让我觉得有关联的事情就是,前段时间宿舍频繁停电,可能埋下了问题。 也有可能是其他原因。
强制关机导致文件系统受损 Jan 01, 2026
那天我正在虚拟机干活,隐约记得的是,在虚拟机打开微信的小程序后整个虚拟机卡住了,CPU占用率80%,但是宿主机还没有崩溃,然后我选择关闭虚拟机,然后…就又又又损坏了文件系统……
具体表现是开机进不了系统,显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [ OK ] Stopped Virtual Console Setup. Starting Virtual Console Setup... [ OK ] Found device WD Blue SN570 1TB SSD root. [ OK ] Reached target Initrd Root Device. Starting File System Check on /dev/disk/by-uuid/84c2a117-1984-4674-a991 [FAILED] Failed to start File System Check on /dev/disk/by-uuid/84c2a117-1984-4674-a991. See 'systemctl status systemd-fsck-root.service’ for details. [DEPEND] Dependency failed for /sysroot. [DEPEND] Dependency failed for Initrd Root File System. [DEPEND] Dependency failed for Mountpoints Configured in the Real Root. [ OK ] Stopped target Basic System. [ OK ] Reached target Emergency Mode. [ OK ] Stopped target System Initialization. [ OK ] Started Emergency Shell. [ OK ] Reached target Emergency Mode. You are in emergency mode. After logging in, type "journalctl -xb” to view system logs, “systemctl reboot" to reboot, or "exit" to continue bootup. Cannot open access to console, the root account is locked. See sulogin(8) man page for more details. Press Enter to continue
大概是这个样的,但是按了回车后依旧卡住没反应,只能请出我的 ArchLinux ISO 了……
进去首先先扫扫硬盘分区看看能不能扫出来,
1 2 3 4 5 6 7 8 $ lsblk -o +FSTYPE,PARTTYPENAME,UUID NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS FSTYPE PARTTYPENAME UUID nvme0n1 259:0 0 931.5G 0 disk ├─nvme0n1p1 259:2 0 1G 0 part /boot vfat EFI System C495-41D3 ├─nvme0n1p2 259:3 0 32G 0 part [SWAP] swap Linux swap 1bc97bf5-4fc2-412c-a482-08ba80bb7389 ├─nvme0n1p3 259:4 0 128G 0 part / ext4 Linux filesystem 04c2a117-1984-4b74-a991-8c869db4c7bc └─nvme0n1p4 259:5 0 770.5G 0 part /home ext4 Linux filesystem 0d34532b-4120-4ad6-8153-e208696ac4f1 nvme1n1 259:1 0 1.9T 0 disk /mnt/data ext4 909f516c-e629-4444-8c0b-745465bc8d70
扫出来了的话,因为我的文件系统是 EXT4,所以要用到 fsck 。
使用 fsck 以只读的方式去读下分区:
我听大佬说 fsck 修复不是万能的,可能还会加剧损坏,那我只好先备份我的 /home 下的一些重要资料了(我有两个盘)。 当然这也是为什么上面使用只读的方式扫盘的原因,而不是直接修复。
果然是系统分区出的问题,读 nvme0n1p3 系统分区时弹出一堆信息,显示 error。
还是先备份吧…… Archlinux ISO 的默认挂载目录是 /mnt(不需要自己创建),先创建两个挂载点,然后 挂载源与目标分区 :
1 2 3 4 5 6 7 mkdir -p /mnt/source /mnt/backupmount /dev/nvme1n1p4 /mnt/source mount /dev/nvme0n1 /mnt/backup
这时可以用 ls 之类的看看 /mnt/source 的文件,选出要备份的目录/文件,使用 cp 或者 rsync 完成数据复制,例:
1 2 3 4 cp -a /mnt/source/download/ /mnt/backup/download/cp -a /mnt/source/Document/ /mnt/backup/Document/cp -a /mnt/source/software/ /mnt/backup/software/......
然后就是修复文件系统了,但是在这之前,需要把挂载的分区全部卸载避免损坏!!! (建议重启一下自动卸载)
然后就是让它自动修复了,反正我也看不懂怎么判断选择要修复的 Inode 相关的东西:
之后貌似成功了,使用 fsck 读取不再提示损坏。 最后关机重启结束。
原因猜测:smartmontools扫过一下硬盘也没事。基本每次断电文件系统都会出问题,也许是我的 EXT4 的 Commit 时间设置太过激进了吗?
xdg-desktop-portal 启动失败 Jun 19, 2026 原因是:https://github.com/flatpak/xdg-desktop-portal/issues/1983
这导致了我无法进行屏幕捕获,并且使用 waydroid 的时候会导致 D-bus 某个通知功能空转,占用 cpu 使温度居高不下。
解决办法是在 issue 的评论区
1 2 3 4 mkdir -p ~/.config/systemd/usercp /usr/lib/systemd/user/xdg-desktop-portal.service \ ~/.config/systemd/user/
然后在 ~/.config/systemd/user/xdg-desktop-portal.service 删掉
1 2 3 PartOf=graphical-session.target Requisite=graphical-session.target After=graphical-session.target