惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
量子位
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】

博客园 - 麦壳饼

JekyllNet .Net 版本的Jekyll , 你博客 文档的静态生成利器 。 为什么要做 WinForms over LVGL 我把 WinFormsVncDemo 真正带到了 VNC 链路上 .Net 7.0 AOT /usr/bin/ld: cannot find -lz 暴力升级你的 ST-Link 及 STM32CubeIDE 如何像使用AspNetCore中的Controllers 和 Actions一样处理MQTT消息 龙芯.Net 6.0 SDK安装 用C#为国产智能手表写“Hello, China. ” CANopen伺服控制-服务数据对象(SDO)详细解析 IoTSharp部署教程-Sqlite分表篇 IoTSharp 已支持国产松果时序数据库PinusDB IoTSharp v1.6.0 发布 增加多种数据库支持 Cannot open libmwv206dec.so, libmwv206dec.so: cannot open shared object file: No such file or directory 引用了Maikebing.Data.Taos的.Net Core项目,在 docker 部署的时候提示缺少taos依赖 基于.Net Core开发的物联网平台 IoTSharp V1.5 发布 如何在龙芯3B4000上部署基于.Net Core 开发的物联网平台IoTSharp 使用C#编写STM32对接物联网平台IoTSharp发送遥测数据 用C#在STM32上写第一个Hello world SilkierQuartz 1.0.21 发布, 是一个 Quartz.NET 的强大且简单的Web管理工具和承载组件
Ubuntu 22.04 systemd 升级失败解决全记录:dpkg “无效的跨设...
麦壳饼 · 2026-03-19 · via 博客园 - 麦壳饼

最近在 Ubuntu 22.04.5 LTS 系统上执行 apt upgrade 时,遇到了 systemd 软件包升级失败的问题。错误信息如下:

dpkg: 处理归档 /var/cache/apt/archives/systemd_249.11-0ubuntu3.17_amd64.deb (--install)时出错:
 无法在安装新的版本前,为 ./usr/bin/systemd-detect-virt 做一个符号链接备份: 无效的跨设备链接
dpkg-deb: 错误: 粘贴 子进程被信号(断开的管道) 终止了

这个错误反复出现,常规的 --force-overwrite、手动删除文件、清理 dpkg 状态等方法均无效。以下是完整诊断与解决过程,供遇到类似问题的朋友参考。问题诊断通过运行以下诊断命令,快速定位到了根本原因:bash

df -T /usr/bin
mount | grep -E 'overlay|overlayfs|union|bind'
cat /proc/mounts | grep /usr

关键输出显示:根分区为 /dev/vda3(ext4)
/dev/vdc1 被 bind mount(绑定挂载) 到 /usr/local/wuying,并且是 只读(ro)
更严重的是:同一个 /dev/vdc1 还被单独 bind mount 到 /usr/bin/systemd-detect-virt 这个具体文件上,同样为只读

dpkg 在升级 systemd 时,需要对 /usr/bin/systemd-detect-virt 创建一个硬链接备份(用于回滚)。但由于该文件实际位于另一个设备(/dev/vdc1),且挂载为只读,硬链接无法跨设备创建,从而报出“无效的跨设备链接”(Invalid cross-device link)。这种将单个系统文件通过 bind mount 覆盖到 /usr/bin 的做法,通常出现在某些国产云桌面、无影(Wuying)、远程桌面或自定义只读文件系统环境中,极易干扰系统核心组件升级。解决步骤步骤 1:解除对 systemd-detect-virt 的 bind mountbash

# 查看挂载情况
mount | grep systemd-detect-virt

# 解除挂载
sudo umount /usr/bin/systemd-detect-virt

# 如果提示 device is busy,使用懒卸载
sudo umount -l /usr/bin/systemd-detect-virt

步骤 2:清理残留文件bash

sudo rm -f /usr/bin/systemd-detect-virt

步骤 3:强制安装并修复依赖bash

sudo dpkg -i --force-overwrite /var/cache/apt/archives/systemd_249.11-0ubuntu3.17_amd64.deb
sudo apt-get install -f

步骤 4:检查并清理其他干扰挂载bash

mount | grep -E '/usr|vdc1'

如果还有其他 /dev/vdc1 挂载到 /usr 下面的关键路径,同样执行 umount 处理。执行以上步骤后,systemd 成功升级,apt-get install -f 不再报错,问题彻底解决。预防与建议避免 bind mount 系统关键路径
将自定义挂载点改为非系统目录,例如 /opt/wuying、/mnt/wuying,避免覆盖 /usr/bin、/usr/lib 等位置。
永久挂载管理
如果需要保留 bind mount,请在 /etc/fstab 或 systemd mount unit 中合理配置,并尽量避免只读挂载覆盖可写系统文件。
容器/虚拟化环境注意
类似错误也常见于 Docker、Podman、overlayfs、WSL2 等环境中,可考虑切换为 fuse-overlayfs 存储驱动。
升级前检查
定期运行 mount | grep -E 'bind|overlay',及早发现潜在冲突。

总结本次问题的根源并非 systemd 软件包本身损坏,而是只读 bind mount 干扰了 dpkg 的备份机制。通过解除特定文件挂载 + 强制安装,问题得到彻底解决。希望这篇记录能帮助到同样遇到 “无效的跨设备链接” 或 systemd 升级失败的朋友。尤其是在使用 /usr/local/wuying 或类似自定义只读挂载的环境中,建议优先检查 mount 信息。欢迎在评论区交流你的解决经验或环境细节,一起完善方案!系统环境:Ubuntu 22.04.5 LTS
内核:5.15.0-144-generic
整理时间:2026 年