必看:NvidiaGraphicsDrivers ——Debian Wiki

启用专有/争议存储库

命令忘了,手动编辑吧=-=手动编辑是不可能的,一行命令能解决我为什么要再打开编辑器?
sudo apt-add-repository non-free
sudo apt-add-repository contrib
你还可以使用--remove参数禁用某个存储库,比如main

安装驱动

sudo apt install nvidia-driver firmware-misc-nonfree

启用wayland

使用NVIDIA驱动程序启用内核模式设置

echo 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX nvidia-drm.modeset=1"' | sudo tee /etc/default/grub.d/nvidia-modeset.cfg
sudo update-grub
## 避免休眠问题
sudo apt install nvidia-suspend-common  #可能已被安装
sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-hibernate.service
sudo systemctl enable nvidia-resume.service

验证是否已启用PreserveVideoMemoryAllocations NVIDIA模块参数

cat /proc/driver/nvidia/params | grep PreserveVideoMemoryAllocations
我们希望他输出1
这时候你大概还没有在安装后重启操作系统,所以这个文件压根还不存在。为了一劳永逸,你可以执行如下命令提前解决,反正多重复一次也没什么关系。
echo 'options nvidia NVreg_PreserveVideoMemoryAllocations=1' | sudo tee /etc/modprobe.d/nvidia-power-management.conf
sudo reboot #重启直接选择Wayland登录,如果你刚安装好的的操作系统没被你动过别的地方那么Wayland应该可用正常使用。

本文标题很长,但是没有废话:请再次确定你的设备情况是否与我相同
解决Debian12 N卡驱动更新到bookworm-backports 版本BIOS 使用dGPU(独显直连)模式时被迫从wayland切换到X11导致开机无法自动切换到KDE登录界面的问题

为什么我不得不使用X11

我通过backports更新到了最新的Nvidia driver 版本:
NVIDIA Driver Version:535.183.06
NVML Version:12.535.183.06
这个版本即使设置nvidia_drm.modeset=1 wayland登录仍然会卡在黑屏+鼠标的界面动弹不得。
即使时过去的Stable版本驱动可使用wayland,也不可避免出现多窗口时闪屏的问题且无法修复。
所以我不得不使用x11。

解决问题

sudo nvidia-settings
选择X Server Display Configuration
确定此页面配置信息无误后点击右下角Save to X Configuration File
点击保存即可。
接下来关机重启X11登录试试吧!

今天下午从下班开始陆续收到某不知SEO站点广告机器人发送的七八条垃圾评论,令我感到极度恶心。遂搜索评论验证插件,最终决定使用CaptchaPlus
该插件支持 hCaptcha 和Turnstile,看网友评论效果不错。
今天开始试装,如无法发送评论请通过mastodon或matrix联系我,链接在关于页面。

准备工作

一个Canokey Pigeon,本地gpg密钥。(推荐主密钥+子密钥,仅将子密钥转移到Canokey里。)
如果你还没有准备好GPG密钥,请参考使用GPG 生成SSH密钥替代密码进行SSH登录认证 & 续期GPG密钥

阅读官方文档/社区案例

CanoKeys 使用文档
Canokey 签名和认证应用指南——Dejavu’s Blog
我在Debian12上使用非root账户 依赖systemd,因此需要创建并修改以下文件:

sudo nano /etc/udev/rules.d/69-canokeys.rules
# GnuPG/pcsclite
SUBSYSTEM!="usb", GOTO="canokeys_rules_end"
ACTION!="add|change", GOTO="canokeys_rules_end"
ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="42d4", ENV{ID_SMARTCARD_READER}="1"
LABEL="canokeys_rules_end"

# FIDO2/U2F
# note that if you find this line in 70-u2f.rules, you can ignore it
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="42d4", TAG+="uaccess", GROUP="plugdev", MODE="0660"

# make this usb device accessible for users, used in WebUSB
# change the mode so unprivileged users can access it, insecure rule, though
#SUBSYSTEMS=="usb", ATTR{idVendor}=="20a0", ATTR{idProduct}=="42d4", MODE:="0666"
# if the above works for WebUSB (web console), you may change into a more secure way
# choose one of the following rules
# note if you use "plugdev", make sure you have this group and the wanted user is in that group
#SUBSYSTEMS=="usb", ATTR{idVendor}=="20a0", ATTR{idProduct}=="42d4", GROUP="plugdev", MODE="0660"
SUBSYSTEMS=="usb", ATTR{idVendor}=="20a0", ATTR{idProduct}=="42d4", TAG+="uaccess"

修改后
sudo udevadm control --reload-rules && sudo udevadm trigger

安装必要的依赖

sudo apt install libpcsclite1 pcscd scdaemon
否则在执行:gpg --card-status 查看智能卡状态时会出现如下错误
gpg: 从 ‘scdaemon’ 获取版本时出现错误: 没有智能卡守护进程gpg: OpenPGP 卡不可用:没有智能卡守护进程

依赖正常安装后先查看本地密钥列表
xfox@JiaoLoong5-76s:~$ gpg --list-keys

/home/xfox/.gnupg/pubring.kbx

pub rsa4096 2022-10-09 [SC] [有效至:2028-01-31]

  7CF9D5312AC4AF470A6F83E052DD030D36987CE3

uid [ 未知 ] x fox mailto:axfox@foxmail.com
sub rsa4096 2022-10-09 [E] [有效至:2025-10-08]
sub ed25519 2024-02-01 [A] [有效至:2028-01-31]

开始转移

转移后的本地计算机的密钥将消失,如果你希望他仍然存在必须提前导出备份)
gpg --expert --edit-key yourmail@mail.com/指纹
key 1 # 勾选第一个子密钥(勾选后回显内容里可见被勾选密钥前有一个*
keytocard #写入以上勾选的一个密钥
key 1 # 取消勾选
重复以上操作将你需要转移到Canokey的所有子密钥迁移进去。
此时输入save 即可保存你的操作。

特别注意 LOOK at ME!

官方文档要求你修改~/.gnupg/scdaemon.conf 但是,你不应该完全按照docs写的那样操作!

pcsc-driver /usr/lib/libpcsclite.so #Debian用户无需此行!系统缺省路径即为正确路径,如果一定要填写,务必按照你的硬件架构填写正确的库文件路径!
card-timeout 5 #你不写也不是不能用
disable-ccid  #Debian12/13无需此行!仅在GnuPG版本超过2.4的发行版上启用!

省流: Debian用户别去改~/.gnupg/scdaemon.conf

为什么要使用Wine

因为我打算使用网易云音乐,但是他的Linux客户端已经没人维护里,Debain12无法安装也无法启动。隔壁QQ音乐是可安装但是和提供的Appimage一样打开就闪退。
暂时还不能完全离开这些专有服务,只能去用wine了。

开始安装

有个惊喜,不知道是不是维护者看到了我发的帖子,总之Wine官网的下载安装页面更新了,简中Wiki的万年遗留错误也修了。

现在官方文档很清楚,我不再重复。
参见:Debian-Ubuntu安装 WineHQ 安装包

解决证书问题

有的人会卡在第二步:


xfox@JiaoLoong5-76s:~$  sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
--2024-09-15 00:21:18--  https://dl.winehq.org/wine-builds/winehq.key
正在解析主机 dl.winehq.org (dl.winehq.org)... 2a04:4e42:8c::729, 146.75.114.217
正在连接 dl.winehq.org (dl.winehq.org)|2a04:4e42:8c::729|:443... 已连接。错误: “dl.winehq.org” 的证书不可信。

如果你去搜索,恐怕很容易找到这样的内容: 使用--no-check-certificate参数 ,特别是*SDN的垃圾帖子。
但是,这是非常危险且不被推荐的!这意味着你和服务器的通信可能不知不觉的受到中间人篡改。

手动信任证书

浏览器打开https://dl.winehq.org/ 在证书详情页面选择导出,接下来

sudo cp _.winehq.pem /usr/local/share/ca-certificates/winehq.crt
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

然后继续执行即可。

额外的

证书验证失败也可能是你的本地设备时间偏差过大导致的。
timedatectl #查看当前时间处于什么状态,是否偏差过大 ,Windows+Linux双系统易出此问题
sudo apt update
sudo apt install systemd-timesyncd
sudo systemctl enable systemd-timesyncd
sudo systemctl start systemd-timesyncd
sudo systemctl status systemd-timesyncd
sudo timedatectl set-local-rtc 0 #设置本地时间为UTC时间
timedatectl #检查时间

原委

今天下班回家一开mumble发现有延迟数值正常显示但是连不上服务器:连接服务器失败:远端主机关闭了这个连接。

排查问题

ssh home.xfox.fun 有EN经典报错:网络不可达
我还以为又宕机了,但是经过检查我的J3160活得好好的 ssh -4 -p 22022 home.xfox.fun一连就上了。
这时候再对比JiaoLoong5 nslookup回报的IPv6地址和J3160上执行ip addr返回的地址确定是DDNS出问题了,没有更新最新的ipv6地址。
看过我之前文章的同学应该知道我在使用Podman替代Docker部署NewFuture/DDNS实现ipv6 DDNS,但是在不久前更新过容器镜像后我发现服务不稳定,因为容器会自动停止运行。
自从我使用这个容器,日志里一直存在警告:
WARNING:root:Cache file is out of dated.
我不确定这是否对容器稳定性造成了影响,但是在我设定了restart=always的情况下容器还是停止了那可太玄学了。
所以我这次放弃了容器部署,直接本地从官方源码仓库部署。

开始部署

git clone https://github.com/NewFuture/DDNS

仓库文件会存储在当前目录下的DDNS文件夹里。

cd DDNS 
pyhton run.py

然后你可能得到提示:-bash: python: 未找到命令
这是因为Debain12默认安装了Python3但是默认没有将python命令软链接到pyhon3

为了解决这个问题你可以使用apt安装一个软件包:python-is-python3 (这是很久之前闲来无事apt search 发现的,没想到今天就又用上了。)如果你不想优雅的解决问题那就自己手动创建链接吧=-=。
这一步是必须的,因为NewFuture/DDNS/blob/v3.0.2/systemd.sh里写死了命令行:
ExecStart=/usr/bin/env python /usr/share/DDNS/run.py -c /etc/DDNS/config.json
所以你要么去修改源码加个3,要么....就像我现在教你的一样。
接下来执行:

sudo ./systemd.sh install

即可利用systemd注册一个名为ddns的服务。
但是需要注意一个小坑,git clone 拉下仓库文件后默认没有config.json
所以直接执行install的时候systemd.sh里的cp config.json /etc/DDNS/config.json这行压根就不会生效。
你的/etc/DDNS/里就不会有config.json
为了避免这个问题,你最好下拉仓库后先执行python run.py 让ddns脚本先在DDNS仓库文件里生成一个config.json

修改配置文件

先参考配置参数表再修改官方生成的示例配置文件。

启用服务

sudo systemctl enable ddns
sudo systemctl restart ddns

检查状态

sudo systemctl status ddns

参考内容:Force SSH Client to Use IPv4 or IPv6

假设我要连接的主机为:home.xfox.fun

两种方案

  1. 命令行直接使用特定参数指定使用ipv4/6
  2. 编辑配置文件对特定主机指定使用ipv4/6

    命令行参数

指定使用ipv4连接: ssh -4 home.xfox.fun
指定使用ipv6连接:ssh -6 home.xfox.fun

编写配置文件

对于配置文件闻之亦有两种选择:

  1. 全局用户生效 /etc/ssh/ssh_config
  2. 当前用户生效 ~/.ssh/config

Host home.xfox.fun
AddressFamily inet6 #对于ipv4 写为inet即可

之前用的是fcitx-rime,也就是基于fcitx4的,大致流程是一致的,但是需要注意配置文件路径有所改变。

安装并配置环境变量

sudo apt install fcitx5-rime
im-config
点击“是” 选择启动小企鹅输入法(即使在Wayland下你也应该这么做,否则开机后可能需要手动启动fcitx5.)
nano .bash_profile

export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx

保存

配置rime

cd ~/.local/share/fcitx5/rime/
touch default.custom.yaml
nano default.custom.yaml

# default.custom.yaml
# 用户  输入法配置
patch:  
  schema_list:  # 输入方案列表
    - schema: luna_pinyin_simp  # 不使用其它输入方案, 只保留明月拼音-简化字输入方案
  menu:
    page_size: 5  # 候选词为5个

重启即可