MoreRSS

site iconAllen Hua修改

Java工程师,常驻南京。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Allen Hua的 RSS 预览

由于 Linux 桌面环境下没有一个好用的语音输入法,做了一个 web 浏览器版本的

2026-05-11 10:41:00

功能比较简单,基于百度实时语音识别 wss API 实现的 web 浏览器“语音输入法”,支持简体中文(普通话和部分方言)和英语,将语音实时转成文字。

GitHub地址: https://github.com/hellodk34/baidu-asr 喜欢的话帮忙点个⭐

动图演示

demo.gif

剩下的内容看 GitHub 仓库 README 吧~ 这里就不赘述了。做这个主要是满足自用,嘿嘿,偶尔需要用到的时候还是有用的。

debian13(debian trixie)安装了nvidia闭源驱动后从x11切换到wayland的方法

2026-05-08 10:58:00

我的 debian 13环境如下

  • Debian 13 (Trixie)
  • GNOME Shell 48.7
  • NVIDIA 550.163
  • RTX 3060 Laptop
  • Intel(i7-11800H) + NVIDIA 混合显卡
  • Wayland

之前还是用的开源驱动 nouveau。安装好了 nvidia 闭源驱动后发现默认回退到了 x11(display protocol),检索到下面这些可参考文章(中文环境)

  1. https://www.cnblogs.com/embedded-notes/p/18944596
  2. https://blog.see2night.top/posts/debian-12-gnome-%E6%A1%8C%E9%9D%A2%E6%8A%98%E8%85%BE
  3. https://www.bilibili.com/opus/1094844441492979717
  4. https://ivonblog.com/posts/debian-install-nvidia-drivers/

但是这些文章对于我来说都只是可参考,但是不能实践,我的环境如上,通过与 chatgpt 的多轮对话,我现在成功切换到了 wayland。并且独显电源管理这边也安全落地。

$ echo $XDG_SESSION_TYPE
wayland

下面讲一下如何配置的

让 Wayland 生效的修改总结

最终真正需要的修改,其实只有三项。


1. 启用 NVIDIA DRM KMS

创建:

/etc/modprobe.d/nvidia-kms.conf

内容:

options nvidia-drm modeset=1

然后:

sudo update-initramfs -u

作用:

启用 NVIDIA DRM KMS

这是:

Wayland 的基础前提

否则:

cat /sys/module/nvidia_drm/parameters/modeset

会是:

N

GDM 会直接退回 X11。


2. 启用 NVIDIA Wayland 电源管理支持

创建:

/etc/modprobe.d/nvidia-power-management.conf

内容:

options nvidia NVreg_PreserveVideoMemoryAllocations=1

然后:

sudo update-initramfs -u

作用:

允许 suspend/resume 时保留 VRAM

这是:

GNOME 48 + NVIDIA Wayland 的关键条件

否则:

61-gdm.rules

会执行:

WaylandEnable=false

3. 启用 NVIDIA suspend/resume services

执行:

sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-resume.service
sudo systemctl enable nvidia-hibernate.service

作用:

满足 GDM 的 Wayland 安全检查

否则:

ENV{NVIDIA_SUSPEND}!="enabled"
    -> disable wayland

下面是一些不需要的操作,也是上面贴出来的几篇文章提及的:

不需要:

修改:

/etc/gdm3/daemon.conf

因为:

/run/gdm3/custom.conf

会动态覆盖它。


不需要:

修改 grub:

nvidia-drm.modeset=1

modprobe 的方案更好,通过 modprobe 配置模块参数是 Linux 驱动配置的标准方式。。


不需要:

注释:

/usr/lib/udev/rules.d/61-gdm.rules

因为:

系统实际上已经满足:官方允许 Wayland 的条件

不需要暴力绕过检查。


这样配置已经是“NVIDIA 官方推荐 Wayland 配置”

这比:

  • 强行注释 gdm.rules
  • hack daemon.conf
  • disable checks

稳定得多。

山间摩旅追风,偶遇一场绚烂晚霞

2026-05-05 17:49:00

我发现老家附近有个两县交界公路,很想去探索一翻,不知道今天那边还有多少人居住。这次恰逢五一假期,又得闲,便骑着摩托去转转。

每次去县城,或者去合肥都会经过的“灌溉用水渠桥”。

HDK09275.JPG

我们这边是群山环抱的,这个时节,放眼望去全是绿色,我感觉回家就像度假,养眼又让人心情放松。

HDK09288.JPG

彩虹公路的加入,让农村更吸引城里人周末/节假日来旅游和消费。

HDK09290.JPG

这谁家孵了很多小鸡🐣,嘿嘿蛮可爱的。

HDK09293.JPG

山间遇到一水库,待了一会只听见山上的动物们歌唱,只有风的穿行形成的噪声,不然静悄悄的。

HDK09296.JPG

这个五一假期,空气气溶胶AOD数值都比较低,不下雨的日子里空气能见度都挺好的,这张能远眺天柱山天柱峰,很是壮观,云朵的HDR效果也非常不错。

HDK09300.JPG

一山又一山⛰️,连绵不绝的。

HDK09303.JPG

又看到一个新的看天柱峰的视角。

HDK09305.JPG

翻过了一座山,来到了隔壁县城的隔壁镇隔壁村子。老屋早已无人居住,想必都移居山下了。曾经炊烟袅袅、满是生机,但如今只剩空屋孤院,再也不见往日烟火人声。

HDK09309_mozaic.JPG

下山发现几个超绝的远眺平台,原来下面就是“平原”了,人口都集中到那了。ps: 说平原只是相对的,这里是大别山深处,不是传统认识中的广袤平原。

HDK09316_mosaic.JPG

远处还能看到沪武高速的身影,因为这条高速的开通,我们从合肥回老家能快很多。

HDK09322.JPG

这种果子我们小时候叫“麦泡”,我查了一下,它叫蓬蘽(péng lěi),也常被叫做野草莓、三月泡、红萢,是很多人童年里的 “山野零食”~它是蔷薇科悬钩子属的灌木果实,和覆盆子(山莓)是近亲。注意不能和蛇莓弄混。

HDK09327.JPG

看到令我惊喜的“水上公路”,两边的路没有硬化,没有想到在我们家附近也能看到这种“很网红”的漫水公路。

HDK09337.JPG

开始等一个夕阳🌇,原本看了晚霞预报,今天我们这里微烧或小烧,都不打算期待的,但是看这阵势似乎值得等待。尽管已经被母亲的电话催了好几次喊着快回家。

HDK09342.JPG

天边越来越红。

HDK09344.JPG

其实远处的山头就是我们镇上海拔最高的山,也是我们县城(县级市)海拔最高的山,海拔1539米。

HDK09347.JPG

电线乱入~

HDK09348.JPG

wow开始染红了天!说真的我没有p图,索尼A7C2+腾龙28-200镜头直出。本文所有照片均jpeg直出,在索尼VV创意外观基础上做了很小的微调。我现在不喜欢 ps/lr 这些流程,太繁琐,大部分post出来的照片都是直出。

HDK09352.JPG

晚霞达到了鼎盛。

HDK09354.JPG

但天色也很快暗下来,不想摸黑骑车就轰着油门回家了。一次很愉快的山间摩旅,原本不是很期待的火烧云却在最后成了最大的惊喜。人生亦是如此,很多猝不及防的美好,往往都藏在随性奔赴的路上,风里自由,晚霞温柔,便是人间最好的治愈。

最近使用debian系统的一些心得

2026-05-02 18:14:00

我将分为三个方面来简单聊聊:多系统共存和debian安装、驱动我的硬件、程序使用。

多系统共存和debian系统安装

现在都 2026年了,虽然这两年固态硬盘涨价了,但我还是建议使用 whole ssd 用于安装 Windows 11/Linux,就是不要在同一块ssd上分区了,更不要分区安装多系统。理由很简单,单块存储用于独立系统,这样治理和维护都更加方便。

在win/debian 双系统的实践时,我将windows这边的多块存储分区的BitLocker 全都关掉了,因为BIOS/UEFI设置中的secure boot 在关掉之后有可能无法启动 win(需要输入恢复key),尤其是在 boot EFI配置在 ssd2上的 debian grub 上时。

我将win上各个卷(windows上的磁盘分区,C盘,D盘,E盘这个概念)BitLocker全部关闭,bios中的secure boot 保持开启。

ssd1整盘用于 win11,ssd2用于debian整盘安装。我的机械革命游戏本还有 ssd3,我插入了一块sata3固态,用于win这边,让win的可用空间更大。

来讲一下debian的安装这块,建议下载 DVD 完整镜像,这样在系统安装引导时能更从容。比如 ustc 的镜像站点 https://mirrors.ustc.edu.cn/debian-cd/13.4.0/amd64/iso-dvd/

至于 netinst 镜像,你要是做一个 Live Linux 那还是很推荐的,但要是安装桌面环境,这种镜像会在安装引导时从网络拉取很多软件包,如果你的网络环境不够科学,那将是漫长的等待。

即使是DVD镜像,在安装的后面阶段也会从网络拉取很多软件包,要是等不及的话可以在网络设置那部分直接跳过处理(实际上没有给跳过选项),可以选择有线连接但是拔掉网线。快速部署好系统写入ssd2,拔掉U盘重启进入系统后再慢慢配置。

驱动硬件

在linux发行版上驱动你的电脑硬件,在2026年依然是一个比较让人头疼的事情,如果你没有选 ubuntu 认证的硬件 https://ubuntu.com/certified/laptops 使用的硬件型号比较相似还好,特别小众的机型尝试Linux会很痛苦。

  • 摄像头,新发行版新内核一般很容易驱动
  • 指纹,目前还挺难解决,最好选择 Ubuntu 认证设备
  • 自带扬声器和自带麦克风,这个看声卡,选用较新发行版,使用较新内核,查看内核对于各个声卡的支持 https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html
  • 网卡,有线/无线,这个选用较新内核一般容易解决
  • 电源管理也一样,选用较新内核即可

我现在的两个笔记本,都是机械革命的,一个是 Debian Trixie(debian13),另一个安装了 debian forky(是未来的debian14,是当前的 debian testing),都比较成功的驱动,用起来很不错,尤其让我满意的是续航,待机续航,还有系统稳定性,比起 win11 还要好些。

程序使用

这个其实没啥好说的,主要软件都来自于 apt source,另外一部分来自软件官网(下载deb包),不喜欢用 flatpack。。记录一下几种程序,在linux下的配置经历

中文输入法

当前 linux 的输入法框架主要是 ibus 和 fcitx5,fcitx5之前的版本就不用考虑了。中文输入法,我自然选择了使用多年的 rime,对这套输入法使用的逻辑也有了很大了解。

  1. 当我打开了奥维互动地图,选择了一个地点添加地标,发现无法输入中文,最后才知道是奥维互动地图程序采用了内置的qt框架,和ibus通信失败导致 ibus-rime 唤起失败
  2. 我将 ibus-rime 和 ibus 彻底 purge 后重启,发现重启后无法进入 GNOME GUI桌面,才知道是 gnome-shell 强依赖 ibus。只好在纯字符终端将 ibus 相关包安装回来,成功进入系统
  3. 最后我在保留了 ibus 和 ibus-rime 的情况下也安装了 fcitx5 和 fcitx5-rime,并且配置开机后默认启动 fcitx5,最终解决了奥维互动地图中中文输入的问题(这个可以同理到各种qt应用中文输入问题)
  4. fcitx5 的 rime 部署可能没有 ibus-rime 那么优雅。ibus 的输入法程序在 gnome 设置中集成了,并且UI更美观,但是rime本身的皮肤系统无法在ibus上生效,这点是fcitx5胜出。但是fcitx5 的rime配置和部署,都要在 fcitx5 配置这个程序中进行,虽然可以绑定全局快捷键,但我习惯进入它的GUI点击
  5. 最终我全面转向更先进的fcitx5 框架
  6. rime 使用 [email protected]:iDvel/rime-ice.git 这个仓库,我再改成适用于我的

剪贴板历史记录软件

我很喜欢 windows 下的 ditto,非常非常的好用。我想找到 linux 下的替代,既要完整记录剪贴板内容,又要有方便的全局快捷键呼出。最终我在 debian forky 上选择并配置了 CopyQ,在 debian trixie 上使用的是 gpaste-2。

截图程序

转来转去,最终仍然回到了 gnome-shell 集成的截图程序,从 GNOME 42(2022 年 3 月发布) 开始,GNOME 桌面不再默认使用独立的 gnome-screenshot 工具,截图功能正式集成到 GNOME Shell 内部,成为原生交互界面。我一开始不喜欢它默认将剪贴板中图片显式保存到了本地硬盘,但是后来想想这个功能也未尝不可,它自动写入的目录我们可以人工干预,可以定期清理,所以这个问题不算是什么问题。但是 gnome-shell 集成的这个截图程序是真的流畅好用,很推荐!

地图程序

地图程序对我来说,一是 web(高德、百度、天地图),二是 google earth pro,三是奥维互动地图。

这里奥维互动地图就因为 qt 程序让我遇到过中文无法输入的问题,最终我切换了输入法框架,全面改向 fcitx5 之后,这些问题都迎刃而解,fcitx5 对于gtk/qt 以及它们各种版本的程序的兼容做得还是比较好的。


其他的,以后想到了再说,欢迎评论区交流。

机械革命无界14Pro笔记本debian forky成功驱动内置扬声器和麦克风

2026-04-26 22:25:00

我的机械革命无界14Pro笔记本安装了debian forky(当下的 debian testing 系统,也是未来的 debian 14代号),今天终于成功驱动了扬声器和麦克风。

先贴出 fastfetch 数据

fastfetch 
        _,met$$$$$gg.          dk@dkwujie14pro
     ,g$$$$$$$$$$$$$$$P.       ---------------
   ,g$$P""       """Y$$.".     OS: Debian GNU/Linux forky/sid (forky) x86_64
  ,$$P'              `$$$.     Host: WUJIE14 PRO
',$$P       ,ggs.     `$$b:    Kernel: Linux 6.19.11+deb14-amd64
`d$$'     ,$P"'   .    $$$     Uptime: 20 mins
 $$P      d$'     ,    $$P     Packages: 2976 (dpkg)
 $$:      $$.   -    ,d$$'     Shell: bash 5.3.9
 $$;      Y$b._   _,d$P'       Display (28U1): 3840x2160 @ 2x in 28", 60 Hz [External]
 Y$$.    `.`"Y$$$$P"'          DE: GNOME 49.5
 `$$b      "-.__               WM: Mutter (Wayland)
  `Y$$b                        WM Theme: Adwaita
   `Y$$.                       Theme: Adwaita [GTK2/3/4]
     `$$b.                     Icons: Adwaita [GTK2/3/4]
       `Y$$b.                  Font: Adwaita Sans (11pt) [GTK2/3/4]
         `"Y$b._               Cursor: Adwaita (32px)
             `""""             Terminal: GNOME Terminal 3.60.0
                               Terminal Font: JetBrains Mono (14pt)
                               CPU: 12th Gen Intel(R) Core(TM) i7-12650H (16) @ 4.70 GHz
                               GPU: Intel UHD Graphics @ 1.40 GHz [Integrated]
                               Memory: 7.11 GiB / 15.35 GiB (46%)
                               Swap: 0 B / 977.00 MiB (0%)
                               Disk (/): 90.31 GiB / 1.83 TiB (5%) - ext4
                               Local IP (wlp3s0): 10.10.10.242/24
                               Battery (AEC3166124-4S1P): 99% [AC Connected]
                               Locale: en_US.UTF-8

声卡是 Realtek ALC256,驱动扬声器的过程比较简单,在网上搜一下就很容易得到一个能成功的配置。但是麦克风的驱动着实让我尝试了很多遍才搞定。

重要的参考网站:

https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html

还要特别感谢这篇文章 https://inkcodes.com/2025/09/14/%E6%9C%BA%E6%A2%B0%E9%9D%A9%E5%91%BD%2015x%E7%9A%84%20linux%20%E9%9F%B3%E9%A2%91%E7%88%86%E9%9F%B3%20codec%E6%A3%80%E6%B5%8B%E4%B8%8D%E5%88%B0%E4%BF%AE%E5%A4%8D%E2%80%94%E2%80%94model%E5%8F%82%E6%95%B0/

在此记录一下我这里的配置:

#ls
alsa-alc256.conf  amd64-microcode-blacklist.conf  inteldsp.conf  intel-microcode-blacklist.conf
root@dkwujie14pro [22:01:04] /etc/modprobe.d
#cat alsa-alc256.conf 
options snd-hda-intel model=laptop-amic
root@dkwujie14pro [22:01:07] /etc/modprobe.d
#cat inteldsp.conf 
options snd-intel-dspcfg dsp_driver=3

重点:

  1. options snd-hda-intel model=laptop-amic
  2. options snd-intel-dspcfg dsp_driver=3

配置:
options snd-hda-intel model=laptop-amic

这个参数的作用是:

强制 codec(ALC256)走 “analog internal mic” 路径

说明这台机器:

实际是 模拟内置麦(AMIC)
而不是 DMIC(数字麦)

系统很可能一开始:

误走了 DMIC / 错误 routing
或 SOF 没启用,UCM 不匹配

配置:
options snd-intel-dspcfg dsp_driver=3

这是关键一步,切到 SOF 路径,这一步让系统走:

Intel DSP + SOF(Sound Open Firmware)

而不是 legacy HDA。

在 12 代 Intel 上:

扬声器很多时候 两条路径都能响
但麦克风(尤其是 internal mic)
通常只在 SOF + UCM 配置下才能正确 routing

现在内置扬声器和内置麦克风终于都能工作了,太好了。见下图

终于成功驱动了笔记本的内置扬声器和麦克风.jpg

记录 typecho 1.2.0 升级到 1.3.0 过程

2026-04-25 11:02:00

主要过程

我的 typecho 是基于 docker compose 部署安装的。当前的 compose 文件如下

services:
  typecho:
    container_name: typecho
    image: joyqi/typecho:1.3.0-php7.4-apache
    restart: unless-stopped
    environment:
      TIMEZONE: Asia/Shanghai
      TYPECHO_DB_HOST: mysql-typecho
      TYPECHO_DB_USER: typecho
      TYPECHO_DB_PASSWORD: xxx
      TYPECHO_DB_DATABASE: typecho
      TYPECHO_SITE_URL: https://blog.xxx.com
      TYPECHO_USER_NAME: xxx
      TYPECHO_USER_PASSWORD: xxx
      TYPECHO_USER_MAIL: xxx
      MAX_POST_BODY: 100M
    networks:
        - typecho-net
    volumes:
        - ./typecho-data-1.3.0:/app
    ports:
        - 8090:80
    depends_on:
        - mysql

  mysql:
    container_name: mysql-typecho
    image: mysql:8.0.29
    restart: unless-stopped
    networks:
        - typecho-net
    volumes:
        - ./mysql-data:/var/lib/mysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: xxx
      MYSQL_DATABASE: xxx
      MYSQL_USER: xxx
      MYSQL_PASSWORD: xxx

networks:
  typecho-net:
  • 使用 docker compose up -d 后台启动
  • 使用 docker compose down 删除网络、容器
  • 注意是 docker compose,不是老旧的 docker-compose
  • 如果有将上述 compose 文件命名的比较特殊,比如叫做 typecho.yml,运行 docker compose 命令时需加上 -f typecho.yml

这里我踩了几个坑,因为我有几个 typecho 环境:

1.3.0版本建议使用这个镜像 joyqi/typecho:1.3.0-php7.4-apachejoyqi/typecho:1.3.0-php8.2-apache这个镜像由于 php 版本过高,有运行时兼容性问题,甚至 blog 系统无法正常工作。

1.2.1版本可以使用 joyqi/typecho:1.2.1-php8.0-apache 这个镜像,我的实测是OK的。

1.2.0版本可以使用 joyqi/typecho:1.2.0-php7.4-apache 这个镜像,我的实测是OK的。

typecho 系统运行之后关键的用户数据在 usr/ 目录下,我之前只挂载了这个目录,但是和 usr/ 目录同级的还有 config.inc.php.htaccess 等关键文件,其中config.inc.php可以在新版本安装之后重新走一遍安装流程生成。所以我上面的 compose 文件,我将挂载的容器内目录改成了 /app(即./typecho-data-1.3.0:/app),原本只挂载了/app/usr,这样数据更全,更新系统更安全。

因为我开启了系统地址重写功能,所以容器内的 /etc/apache2/apache2.conf 文件也需要备份一下,在新环境里直接将此文件覆盖过去即可。

所以对于我的这种环境部署,更新typecho版本需要备份的关键数据有:

  1. 容器内 usr/ 目录,这是用户目录,所有的插件,主题,上传的文件都在这里
  2. .htaccess 文件,一般在容器内 /app/.htaccess
  3. /etc/apache2/apache2.conf 文件,备份它,新环境运行起来之后进入容器,使用这个文件替换原本的 apache2.conf 文件

好了,关键就是这三份文件,如果你在寻找 typecho 博客更新的一些文章,或者遇到什么更新困难,错误之类的问题,你需要考虑到你是不是用的 joyqi/typecho:1.3.0-php7.4-apache 这种镜像!!!这个镜像包含了 typecho php 服务和 apache2 服务!!!数据库服务是单独部署的。但有些镜像可能没有 apache2 web server 服务。

官方教程

再来说说官方的 upgrade 教程:https://docs.typecho.org/upgrade ,文中提到,更新 typecho 其实只需要升级这些文件,使用新版本的这些文件替换进去就行了。但因为我们是通过 docker 部署的,建议更新镜像 tag,作者除了维护这些文件,还有 php 运行时环境,可能还涉及到安全:比如镜像内基础镜像的更新、内核的更新。

/admin/
/var/
/index.php
/install.php

其他细碎问题

最后再说一点杂碎的可能被忽略的问题

  • 如果你进入到了 /install.php 页面,点击之后没有反应,你需要考虑到你当前本地挂载的目录是否正确,比如更新了镜像版本之后,你依然使用原本的本地目录,但是挂载到了容器中的 /app 下(你原本挂载到容器中的 /app/usr),所以会造成安装失败
  • 要关注容器内 /app 是否有写入权限。所有者最好是 www-data,权限最好是 755,可以直接在宿主机修改权限和拥有者
  • 新环境运行好之后可以将备份的 usr 目录完全替换新环境的 usr 目录,确保文件所有者和权限正确
  • 安装界面选择了正确的数据库驱动后,对应的数据库主机(也就是 host),可以直接填写 mysql 容器的名称,同一个 compose stack 下运行的服务相互之间可以通过容器名称找到彼此
  • 数据库挂载不要动,不论你是挂载到 volume 的,还是当前文件夹下的某个子文件夹,对应的容器内目录仍然是 /var/lib/mysql,数据库镜像tag也不需要更新
  • 修改了容器内 apache2 的配置,比如 .htaccess 或者 /etc/apache2/apache2.conf 文件,建议通过 docker compose restart 重启 stack 整个服务

大功告成!