Pi 远程 SSH 图片剪贴板插件配置与踩坑

前言 在 Mac 上通过 VS Code Remote SSH 连到远端无图形界面的 Fedora 开发机使用 Pi 时,按 Ctrl+V 默认读不到 Mac 本地的剪贴板图片。 解决思路很简单: Mac 端:通过 pngpaste 导出剪贴板图片,用 launchd 监听端口(inetd 模式按需调用); 传输层:通过 SSH 反向隧道(RemoteForward)把 Mac 本地的服务暴露给 Fedora 的 127.0.0.1:7779; Fedora 端:安装 pi-ssh-image-clipboard 插件(fork 自 pasky/pi-ssh-image-clipboard),拦截 Ctrl+V,从 127.0.0.1:7779 读取图片写入 /tmp/,并将文件路径填入 Pi 输入框。 flowchart LR A[Mac 剪贴板] --> B[launchd + pngpaste 127.0.0.1:7779] B -->|SSH RemoteForward| C[Fedora 127.0.0.1:7779] C --> D[pi-ssh-image-clipboard] D --> E[`/tmp/pi-clipboard-UUID.png`] E --> F[Pi 输入框] 整个链路不复杂,但配置时最容易踩的坑是:以为在 ~/.ssh/config 里写了 RemoteForward 就完事了,实际当前已有的 VS Code SSH 连接或 ControlMaster 并不会动态补上新转发。 ...

2026年10月5日 · 4 分钟 · Kerolt

Headless Server Portal 认证与远程桌面排障全记录

背景与网络拓扑 在一台运行 Fedora 44 Server 的无显示器(Headless)高性能计算服务器上,机器同时接入了多套网络。其中,校园有线网需要通过 Dr.COM Web Portal 进行网页登录认证。由于服务器未安装默认图形界面,且存在多网卡出口路由竞争,无法直接弹窗认证。 ...

2026年9月5日 · 14 分钟 · Kerolt

Hermes Session 管理:飞书/微信/CLI 统一会话模型

背景 Hermes 把 CLI、TUI、桌面 app、几十种 messaging 平台(飞书/微信/Telegram/Discord/Slack…)接到同一份"agent core"上。理解它的 session 模型,是理解为什么"我换个入口跟它说话"和"我在同个地方继续说"行为完全不同的关键。 ...

2026年8月25日 · 12 分钟 · Kerolt

Hugo content 目录的页面类型与组织方式

核心结论 Hugo 的 content 目录不是简单的 Markdown 文件仓库,而是一棵 Page Tree。目录层级和特殊文件名会决定页面的 Kind、Section、Type、Bundle 类型、模板选择、资源归属以及默认 URL。 ...

2026年8月9日 · 12 分钟 · Kerolt

Hugo Theme Stack 对默认 Taxonomy 的处理

核心结论 Stack 没有重新实现 Taxonomy 系统。Hugo 负责读取文章 Front Matter、建立 Taxonomy 与 Term 的关联、生成页面对象和 URL;Stack 负责调用 Hugo 提供的 .Site.Taxonomies、.GetTerms 和 .Pages,将这些数据展示为分类徽章、文章标签、侧栏 Widget、归档入口以及列表页面。 ...

2026年8月9日 · 6 分钟 · Kerolt

Git Submodule 版本锁定

核心本质:Submodule 是什么? Git Submodule 并不是简单的“文件夹克隆”,它是父仓库中指向子仓库某个特定提交(Commit ID) 的指针。 .gitmodules 文件:账本。记录子模块的远程仓库地址(URL)和本地存放路径(Path)。 Gitlink (160000 模式):锁。父仓库索引中记录的一个 40 位哈希值。它确保了无论子仓库如何更新,父仓库始终锁定在特定的版本。 版本锁定:如何固定到 Tag (如 v0.2.2)? 在 Git 中,锁定版本不是修改文本文件,而是移动指针。 ...

2026年8月6日 · 2 分钟 · Kerolt

nmcli 快速参考

基本结构 nmcli [对象] [动作] [参数] 主要对象:con(连接)、dev(设备)、gen(通用) 常用命令 查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 列出所有连接 nmcli con show # 列出活跃连接 nmcli con show --active # 查看连接详情 nmcli con show "连接名" # 查看设备状态 nmcli dev status # 查看设备详情(IP、MAC 等) nmcli dev show enp171s0 创建连接 1 2 3 4 5 6 7 8 9 10 nmcli con add \ con-name "连接名" \ type ethernet \ ifname enp171s0 \ ipv4.addresses 192.168.100.2/24 \ ipv4.method manual \ ipv4.gateway "" \ ipv4.dns "" \ ipv4.never-default yes \ connection.autoconnect yes 参数说明: ...

2026年6月28日 · 4 分钟 · Kerolt

搭建EasyTier中继服务器并进行组网

搭建中继服务器 虽说是搭建中继服务器,但其实 easytier 是点对点去中心化的组网方式,所谓中继服务器就是一个有公网 ip 的节点,用于让其他没有公网 ip 的主机通过它进行中继转发,从而实现异地组网。 ...

2026年6月24日 · 3 分钟 · Kerolt

Clash-Fake-IP模式下Git-SSH连接失败

问题现象 执行 git fetch --all 报错: 1 2 Connection closed by 198.18.0.35 port 22 fatal: Could not read from remote repository. 排查过程 1. 确认 remote 地址 1 2 git remote -v # origin git@github.com:xxx/yyy.git 使用的是 SSH 协议。 2. 排查 DNS 解析 1 2 3 nslookup github.com # Name: github.com # Address: 198.18.0.35 198.18.0.35 不是 GitHub 真实 IP,属于 198.18.0.0/15 保留段。这是 Clash Fake-IP 模式 的特征,即 DNS 返回虚拟 IP,由 Clash 透明代理接管流量。 ...

2026年6月13日 · 2 分钟 · Kerolt

零拷贝技术

一句话概括:零拷贝技术让数据在 磁盘 → 内核缓冲区 → 网卡 之间直接传输,避免用户态与内核态之间的冗余数据拷贝,核心是消除 CPU 参与的数据搬移。 传统 IO 路径(4 次拷贝,2 次 CPU 参与) 1 2 磁盘 → [DMA] → Page Cache (内核) → [CPU] → 用户 Buffer → [CPU] → Socket Buffer (内核) → [DMA] → NIC ① ② ③ ④ ① DMA 读磁盘到 page cache ② CPU 把 page cache 拷到用户态 buffer(read) ③ CPU 把用户态 buffer 拷到 socket buffer(send) ④ DMA 从 socket buffer 发送到网卡 零拷贝的目标:去掉 ② 和 ③ 这两步 CPU 拷贝。 ...

2026年5月18日 · 4 分钟 · Kerolt

【译】从零开始用 Go 构建容器:现代命名空间 + cgroup v2

本文是对 Build a Container from Scratch in Go (Modern Namespaces + cgroup v2) 这篇文章的翻译,以下是正文 作者:Faizan Firdousi 发布时间:2026 年 2 月 18 日 我用 Go 从零构建了一个容器,代码行数尽可能少,并在过程中了解了容器内部通常发生的各种事情——也就是 Docker 抽象掉的那些细节。 ...

2026年5月13日 · 12 分钟 · Kerolt

Go 与汇编

1. 为什么 Go 需要汇编 Go 在以下场景允许直接嵌入汇编: 性能热点:手写 SIMD 指令、避免编译器优化不足 系统调用:部分 runtime 代码(如 runtime·sys_linux_amd64.s)直接发起 syscall 引导/启动:rt0_linux_amd64.s 等启动代码必须在汇编层面完成栈和寄存器初始化 密码学:crypto/aes, crypto/sha256 等标准库大量使用汇编加速 Go 使用 Plan 9 汇编语法,与 AT&T / Intel 语法都不同。 ...

2026年5月11日 · 4 分钟 · Kerolt