<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>首页 on Breaking Dawn</title><link>https://breaking-dawn.cn/</link><description>Recent content in 首页 on Breaking Dawn</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 22 Jul 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://breaking-dawn.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>说明：本组双系统笔记由 AI 整理，后续将逐篇重制</title><link>https://breaking-dawn.cn/p/ai-curated-notice/</link><pubDate>Wed, 22 Jul 2026 09:00:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ai-curated-notice/</guid><description>&lt;p&gt;这组内容来自个人在配置 &lt;strong&gt;Ubuntu 22.04 LTS 与 Windows 11 双系统&lt;/strong&gt; 过程中收藏的资料与踩坑记录。为了便于回顾和检索，现阶段先由 AI 协助完成主题归类、文字整理、风险提示与排版。&lt;/p&gt;
&lt;h2 id="阅读前请注意"&gt;阅读前请注意
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;每篇文末均保留了原始参考链接；正文是重新组织后的摘要和操作建议，并非对原文的复制。&lt;/li&gt;
&lt;li&gt;电脑型号、固件版本、磁盘布局、驱动版本和 Secure Boot 状态都会影响结果。EFI、GRUB、内核、显卡驱动等文章尤其需要先备份、确认分区和准备恢复介质。&lt;/li&gt;
&lt;li&gt;文中命令以 Ubuntu 22.04 LTS 与 Windows 11 为背景；软件包版本和上游项目可能已经更新，请优先查看文末官方文档。&lt;/li&gt;
&lt;li&gt;原收藏中涉及非授权软件破解的内容没有转载，已替换为正版安装与开源替代方案说明。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="后续计划"&gt;后续计划
&lt;/h2&gt;&lt;p&gt;目前这些文章的目的，是把当时分散的资料变成可检索、带出处、有边界的临时知识库。后续有时间时，我会结合自己的实际设备、截图、命令输出和验证结果，&lt;strong&gt;逐篇重制&lt;/strong&gt;为更完整的原创实践记录。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本文性质：站点说明与维护承诺&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>update-alternatives：在 Linux 中管理同一命令的多个实现</title><link>https://breaking-dawn.cn/p/linux-update-alternatives/</link><pubDate>Tue, 21 Jul 2026 10:45:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/linux-update-alternatives/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS / Debian 系。&lt;code&gt;update-alternatives&lt;/code&gt; 管理的是系统级符号链接，不等同于语言版本管理器或 PATH 顺序。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;同一个命令名可能有多种实现，例如 &lt;code&gt;editor&lt;/code&gt;、&lt;code&gt;java&lt;/code&gt;、&lt;code&gt;cc&lt;/code&gt;。Debian 系统用 alternatives 链接组决定默认目标，避免用户直接手改 &lt;code&gt;/usr/bin&lt;/code&gt; 下的链接。&lt;/p&gt;
&lt;h2 id="查看与交互选择"&gt;查看与交互选择
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;update-alternatives --display editor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-alternatives --config editor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第一条会显示当前链接、可选项和优先级；第二条提供编号选择。切换前先确认候选程序来自可信软件包，并在切换后核对版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v editor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;readlink -f &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v editor&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="创建自定义链接组时要非常具体"&gt;创建自定义链接组时要非常具体
&lt;/h2&gt;&lt;p&gt;只有当软件本身没有注册 alternatives 且确有系统级需求时，才使用 &lt;code&gt;--install&lt;/code&gt;。下面是占位示例，路径、名称、优先级都必须换成实际值：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-alternatives --install /usr/local/bin/example-tool example-tool /opt/example-v2/bin/example-tool &lt;span class="m"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-alternatives --config example-tool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要用 alternatives 直接管理 &lt;code&gt;python&lt;/code&gt;、&lt;code&gt;pip&lt;/code&gt;、Node.js、CMake 等开发工具的全部生态。它们通常还牵涉虚拟环境、包管理器、IDE 与项目级版本要求；更适合使用 &lt;code&gt;venv&lt;/code&gt;、nvm、容器或项目工具链。&lt;/p&gt;
&lt;h2 id="取消手工加入的候选项"&gt;取消手工加入的候选项
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-alternatives --remove example-tool /opt/example-v2/bin/example-tool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;移除前先切换到另一个有效候选项。由 APT 安装的软件包应优先通过 APT 卸载，让软件包维护脚本处理对应 alternatives。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://developer.aliyun.com/article/1578188" target="_blank" rel="noopener"
 &gt;update-alternatives 命令使用方法与软件多版本管理&lt;/a&gt;（阿里云开发者社区）&lt;/li&gt;
&lt;li&gt;手册参考：&lt;a class="link" href="https://manpages.ubuntu.com/manpages/jammy/man1/update-alternatives.1.html" target="_blank" rel="noopener"
 &gt;Ubuntu Jammy：update-alternatives(1)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将原始资料整理为“查看—切换—谨慎注册—移除”的可回退流程。&lt;/p&gt;</description></item><item><title>OpenCode 在 Linux 终端显示已复制但剪贴板为空：Wayland 与 X11 修复</title><link>https://breaking-dawn.cn/p/linux-terminal-copy-paste/</link><pubDate>Tue, 21 Jul 2026 10:40:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/linux-terminal-copy-paste/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS，使用 OpenCode 时选中文字后显示 &lt;code&gt;Copied to clipboard&lt;/code&gt;，但在其他应用中无法粘贴。本文针对 OpenCode 的剪贴板依赖缺失，不是普通终端快捷键设置问题。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="问题原因"&gt;问题原因
&lt;/h2&gt;&lt;p&gt;OpenCode 需要调用桌面会话对应的剪贴板工具。Wayland 会话通常使用 &lt;code&gt;wl-clipboard&lt;/code&gt; 提供的 &lt;code&gt;wl-copy&lt;/code&gt; / &lt;code&gt;wl-paste&lt;/code&gt;；X11 会话常使用 &lt;code&gt;xclip&lt;/code&gt;。若系统缺少对应工具，OpenCode 可能显示复制成功，但实际没有可供其他程序读取的剪贴板内容。&lt;/p&gt;
&lt;h2 id="1-确认当前图形会话"&gt;1. 确认当前图形会话
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$XDG_SESSION_TYPE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见输出为 &lt;code&gt;wayland&lt;/code&gt; 或 &lt;code&gt;x11&lt;/code&gt;。不要根据桌面名称猜测；同一台 Ubuntu 机器可能在登录时切换 Wayland 与 “Ubuntu on Xorg”。&lt;/p&gt;
&lt;h2 id="2-按会话类型安装剪贴板工具"&gt;2. 按会话类型安装剪贴板工具
&lt;/h2&gt;&lt;p&gt;若输出为 &lt;code&gt;wayland&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install wl-clipboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若输出为 &lt;code&gt;x11&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install xclip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后退出并重新启动 OpenCode，再测试复制。通常不需要重启系统。&lt;/p&gt;
&lt;h2 id="3-可选直接验证系统剪贴板"&gt;3. 可选：直接验证系统剪贴板
&lt;/h2&gt;&lt;p&gt;Wayland：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;clipboard test&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; wl-copy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wl-paste
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;X11：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;clipboard test&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xclip -selection clipboard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xclip -o -selection clipboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;两条命令能输出相同文本时，说明系统剪贴板工具已经可用；若 OpenCode 仍失败，再检查 OpenCode 的版本与上游 issue。普通终端中的 &lt;code&gt;Ctrl+C&lt;/code&gt; 仍是中断前台程序，文本复制一般使用 &lt;code&gt;Ctrl+Shift+C&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://jishuzhan.net/article/2036985979320467458" target="_blank" rel="noopener"
 &gt;opencode 在 Linux 终端中无法复制文字的解决方法&lt;/a&gt;（技术栈）&lt;/li&gt;
&lt;li&gt;上游问题：&lt;a class="link" href="https://github.com/anomalyco/opencode/issues/7048" target="_blank" rel="noopener"
 &gt;anomalyco/opencode #7048&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;工具参考：&lt;a class="link" href="https://github.com/bugaevc/wl-clipboard" target="_blank" rel="noopener"
 &gt;wl-clipboard&lt;/a&gt;、&lt;a class="link" href="https://github.com/astrand/xclip" target="_blank" rel="noopener"
 &gt;xclip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文已依据补充提供的原始 HTML 重制，保留其 Wayland / X11 分流方案，并增加了工具验证与 OpenCode 重启步骤。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 调整 GRUB 默认启动项与等待时间</title><link>https://breaking-dawn.cn/p/ubuntu-grub-menu-settings/</link><pubDate>Tue, 21 Jul 2026 10:35:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-grub-menu-settings/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;风险提示&lt;/strong&gt;：修改前先备份配置。不要手工编辑 &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt;，该文件由 &lt;code&gt;update-grub&lt;/code&gt; 自动生成，更新后会被覆盖。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;安装 Ubuntu 后，GRUB 往往成为默认引导菜单。常见需求是缩短等待时间、默认进入 Windows 11，或固定进入一个已验证可用的旧内核。&lt;/p&gt;
&lt;h2 id="先备份并查看菜单项"&gt;先备份并查看菜单项
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/default/grub /etc/default/grub.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grep -E &lt;span class="s1"&gt;&amp;#39;^(GRUB_DEFAULT|GRUB_TIMEOUT)&amp;#39;&lt;/span&gt; /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grep -E &lt;span class="s2"&gt;&amp;#34;^menuentry |^submenu &amp;#34;&lt;/span&gt; /boot/grub/grub.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后一条只用于查看当前生成的菜单标题；配置应始终修改 &lt;code&gt;/etc/default/grub&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="调整等待时间"&gt;调整等待时间
&lt;/h2&gt;&lt;p&gt;编辑配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudoedit /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如将等待时间设为 5 秒：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;GRUB_TIMEOUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="设定默认启动项"&gt;设定默认启动项
&lt;/h2&gt;&lt;p&gt;最稳妥的是用菜单中显示的&lt;strong&gt;完整标题&lt;/strong&gt;，而不是猜数字序号。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;GRUB_DEFAULT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Windows Boot Manager (on /dev/nvme0n1p1)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;标题必须与本机 &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt; 中的菜单项完全一致；磁盘名、分区号会因机器不同而不同。若只是想在下次重启临时选择某项，保留默认设置，在 GRUB 菜单中手动选择更安全。&lt;/p&gt;
&lt;p&gt;保存后生成配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启前请确认输出中同时发现了 Ubuntu 与 Windows Boot Manager。若配置误改，可用备份恢复：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/default/grub.bak /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="固定旧内核的建议"&gt;固定旧内核的建议
&lt;/h2&gt;&lt;p&gt;内核出现驱动回归时，优先在 &lt;strong&gt;Advanced options for Ubuntu&lt;/strong&gt; 中手动选择旧内核验证。需要长期固定时，应在 &lt;code&gt;/etc/default/grub&lt;/code&gt; 设置确定的菜单标题，并同时评估内核安全更新；详见本站的《Ubuntu 内核更新与固定版本》一文。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/perfect886/article/details/119783211" target="_blank" rel="noopener"
 &gt;Ubuntu 修改启动项等待时间、启动项顺序、更改启动内核&lt;/a&gt;（perfect886，CSDN）&lt;/li&gt;
&lt;li&gt;官方参考：&lt;a class="link" href="https://www.gnu.org/software/grub/manual/grub/grub.html" target="_blank" rel="noopener"
 &gt;GNU GRUB Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文不采用直接编辑 &lt;code&gt;grub.cfg&lt;/code&gt; 的方法，改为可由 &lt;code&gt;update-grub&lt;/code&gt; 持续维护的配置方式。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 安装 NVIDIA 驱动与 Secure Boot：优先使用发行版流程</title><link>https://breaking-dawn.cn/p/ubuntu-nvidia-secure-boot/</link><pubDate>Tue, 21 Jul 2026 10:30:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-nvidia-secure-boot/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;风险提示&lt;/strong&gt;：显卡驱动、内核、Secure Boot 和混合显卡模式相互影响。操作前请确保能从 GRUB 启动旧内核，或准备好 Ubuntu Live USB；不要在正常桌面环境里随意手工删除 NVIDIA、Nouveau 或 EFI 文件。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;在 Ubuntu 22.04 中，最稳妥的起点是发行版的“附加驱动”或 &lt;code&gt;ubuntu-drivers&lt;/code&gt;。它会根据硬件选择受支持的驱动包，并把内核模块、更新和卸载纳入 APT 管理。&lt;/p&gt;
&lt;h2 id="标准安装流程"&gt;标准安装流程
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ubuntu-drivers devices
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ubuntu-drivers install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启后验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能显示驱动版本与 GPU 信息，基本安装已完成。笔记本混合显卡还应测试外接显示器、睡眠唤醒和电池模式，而不只是运行一次 &lt;code&gt;nvidia-smi&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="secure-boot-开启时会发生什么"&gt;Secure Boot 开启时会发生什么
&lt;/h2&gt;&lt;p&gt;驱动若通过 DKMS 构建，Ubuntu 可能要求创建 MOK（Machine Owner Key）密码。重启时会进入蓝色的 MOK 管理界面：选择 &lt;strong&gt;Enroll MOK&lt;/strong&gt;，按提示确认密钥并输入刚才设置的密码。只有完成注册，Secure Boot 才会信任该本机生成的内核模块。&lt;/p&gt;
&lt;p&gt;若不想注册 MOK，也可以在固件中关闭 Secure Boot，但这会降低启动链的验证范围。两种策略应二选一、保持一致；不要先安装模块再随意切换 Secure Boot 状态。&lt;/p&gt;
&lt;h2 id="不要把手工签名当作第一方案"&gt;不要把手工签名当作第一方案
&lt;/h2&gt;&lt;p&gt;手动生成密钥、签名 &lt;code&gt;.ko&lt;/code&gt; 文件和直接导入主板 &lt;code&gt;db&lt;/code&gt; 适合自编译内核模块或特殊固件问题，但步骤与主板实现强相关，内核更新后还需要维护。对 Ubuntu 仓库 NVIDIA 驱动，应优先完成发行版提供的 MOK 流程；只有在标准流程失败且明确需要自定义模块时，才根据硬件和上游文档单独处理。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://zhuanlan.zhihu.com/p/673326042" target="_blank" rel="noopener"
 &gt;UEFI 安全启动模式下安装 Ubuntu NVIDIA 驱动&lt;/a&gt;（知乎）&lt;/li&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://www.cnblogs.com/cyMessi/p/18627184" target="_blank" rel="noopener"
 &gt;Ubuntu 22.04 LTS 安装 NVIDIA 显卡驱动&lt;/a&gt;（cyMessi，博客园）&lt;/li&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/bfonline/article/details/146406862" target="_blank" rel="noopener"
 &gt;华硕主板上的 Ubuntu 驱动签名方案&lt;/a&gt;（Kevin从心开始，CSDN）&lt;/li&gt;
&lt;li&gt;官方参考：&lt;a class="link" href="https://help.ubuntu.com/community/NvidiaDriversInstallation" target="_blank" rel="noopener"
 &gt;Ubuntu Community Help Wiki：NVIDIA drivers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文合并三条原始资料，并将重点放在 Ubuntu 的推荐驱动与 MOK 注册流程，避免把主板专用手工签名步骤当作通用方案。&lt;/p&gt;</description></item><item><title>Linux 上使用数据库客户端：正版 Navicat 与开源替代方案</title><link>https://breaking-dawn.cn/p/linux-database-client-legal/</link><pubDate>Tue, 21 Jul 2026 10:20:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/linux-database-client-legal/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;合规说明&lt;/strong&gt;：本文不提供破解、补丁、许可证绕过或受限软件下载的内容。商业软件请使用有效许可证、试用版或教育授权。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;在 Ubuntu 上管理 MySQL、PostgreSQL、SQLite 等数据库时，先按团队规范决定客户端；数据库连接配置、SSH 密钥和生产凭据比“装什么软件”更需要谨慎保管。&lt;/p&gt;
&lt;h2 id="商业软件从官方渠道获取"&gt;商业软件：从官方渠道获取
&lt;/h2&gt;&lt;p&gt;若团队使用 Navicat，请从 &lt;a class="link" href="https://www.navicat.com/en/download/navicat-premium" target="_blank" rel="noopener"
 &gt;Navicat 官方下载页&lt;/a&gt; 获取适用于 Linux 的安装包，并使用组织或个人的有效授权。安装前确认发行版支持范围、CPU 架构与更新渠道；不要从第三方网盘或来历不明的二次打包版本安装。&lt;/p&gt;
&lt;h2 id="开源替代dbeaver-community"&gt;开源替代：DBeaver Community
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://dbeaver.io/download/" target="_blank" rel="noopener"
 &gt;DBeaver Community&lt;/a&gt; 是常见的开源跨平台数据库客户端。它适合同时连接多种数据库；驱动和插件会随版本变化，建议从项目官方页面选择适合 Ubuntu 的安装包或仓库方式。&lt;/p&gt;
&lt;h2 id="连接生产库前的最小检查"&gt;连接生产库前的最小检查
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;使用只读或最小权限账号，避免日常使用超级管理员账号。&lt;/li&gt;
&lt;li&gt;通过密码管理器或 SSH Agent 管理凭据，不把密码写入连接截图、脚本或 Git 仓库。&lt;/li&gt;
&lt;li&gt;首次连接先确认主机名、端口、环境标签与证书；生产库与测试库应使用明显不同的连接颜色或名称。&lt;/li&gt;
&lt;li&gt;导出 / 导入数据前确认文件包含范围和目标库，特别是 Windows 11 与 Ubuntu 共享目录中的备份文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;官方来源：&lt;a class="link" href="https://www.navicat.com/en/download/navicat-premium" target="_blank" rel="noopener"
 &gt;Navicat Premium for Linux 下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;替代方案来源：&lt;a class="link" href="https://dbeaver.io/download/" target="_blank" rel="noopener"
 &gt;DBeaver Community 下载&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原始收藏中有一条涉及非授权破解的教程；整理时已删除该类内容并改为合法安装与替代方案说明。&lt;/p&gt;</description></item><item><title>Ubuntu 忘记密码后的恢复：优先重设用户密码，不启用 root</title><link>https://breaking-dawn.cn/p/ubuntu-password-recovery/</link><pubDate>Tue, 21 Jul 2026 10:15:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-password-recovery/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;仅限授权设备&lt;/strong&gt;：以下步骤适用于自己拥有或明确获授权维护的电脑。能够接触设备和 GRUB 菜单的人可能获得本地管理员权限；请同时保护好物理设备和磁盘加密密钥。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Ubuntu 默认把 root 账户锁定，日常管理通过普通用户加 &lt;code&gt;sudo&lt;/code&gt; 完成。忘记登录密码时，通常只需要重设&lt;strong&gt;自己的用户密码&lt;/strong&gt;，没有必要长期启用 root。&lt;/p&gt;
&lt;h2 id="通过恢复模式重设密码"&gt;通过恢复模式重设密码
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;开机时进入 GRUB；如菜单被隐藏，可在开机阶段按住 &lt;code&gt;Shift&lt;/code&gt;（传统 BIOS）或反复按 &lt;code&gt;Esc&lt;/code&gt;（常见 UEFI）尝试显示菜单。&lt;/li&gt;
&lt;li&gt;选择 &lt;strong&gt;Advanced options for Ubuntu&lt;/strong&gt;，再选择带有 &lt;code&gt;(recovery mode)&lt;/code&gt; 的内核。&lt;/li&gt;
&lt;li&gt;在恢复菜单中选择 &lt;strong&gt;root – Drop to root shell prompt&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;将根文件系统重新挂载为可写，然后为目标用户设置新密码：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o remount,rw /
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd 用户名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;把 &lt;code&gt;用户名&lt;/code&gt; 替换为实际 Linux 用户名；它通常不是 Windows 账户邮箱。若不确定，可在恢复 shell 中查看 &lt;code&gt;/home&lt;/code&gt; 下的目录名。&lt;/p&gt;
&lt;h2 id="bitlocker-与磁盘加密提醒"&gt;BitLocker 与磁盘加密提醒
&lt;/h2&gt;&lt;p&gt;此操作不应修改 Windows 分区。若 Ubuntu 使用全盘加密，系统会先要求解锁磁盘；如果忘记的是磁盘解锁口令而非登录密码，恢复路径不同，不能通过简单的 &lt;code&gt;passwd&lt;/code&gt; 解决。&lt;/p&gt;
&lt;p&gt;完成恢复后，请检查是否仍有不需要的管理员账户，并为重要数据保留离线备份。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://www.sysgeek.cn/reset-root-password-ubuntu/" target="_blank" rel="noopener"
 &gt;如何在 Ubuntu 上重置 Root 密码&lt;/a&gt;（系统极客）&lt;/li&gt;
&lt;li&gt;官方参考：&lt;a class="link" href="https://help.ubuntu.com/community/LostPassword" target="_blank" rel="noopener"
 &gt;Ubuntu Community Help Wiki：LostPassword&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将“重置 root”调整为 Ubuntu 更推荐的普通用户密码恢复方式。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 使用 nvm 管理多个 Node.js 版本</title><link>https://breaking-dawn.cn/p/ubuntu-nvm-node/</link><pubDate>Tue, 21 Jul 2026 10:10:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-nvm-node/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS 的 Bash / Zsh 用户。nvm 是“按用户、按 shell”工作的工具，不会成为系统范围的 &lt;code&gt;apt&lt;/code&gt; 软件包。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;nvm 适合同时维护多个 Node.js 项目：一个老项目使用旧 LTS，另一个项目使用新版本，而不需要反复卸载系统 Node。&lt;/p&gt;
&lt;h2 id="从官方发布页安装"&gt;从官方发布页安装
&lt;/h2&gt;&lt;p&gt;从 &lt;a class="link" href="https://github.com/nvm-sh/nvm#installing-and-updating" target="_blank" rel="noopener"
 &gt;nvm 官方仓库的安装说明&lt;/a&gt; 复制&lt;strong&gt;当前发布版本&lt;/strong&gt;的安装命令。执行 &lt;code&gt;curl | bash&lt;/code&gt; 类命令前，建议先打开脚本链接审阅，或采用官方 README 提供的 Git 安装方式。&lt;/p&gt;
&lt;p&gt;安装器通常会把下面这一类加载代码写入 &lt;code&gt;~/.bashrc&lt;/code&gt; 或其他 shell 配置文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;NVM_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.nvm&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt; -s &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$NVM_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nvm.sh&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; . &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$NVM_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nvm.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重新打开终端，或执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v nvm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意要用 &lt;code&gt;command -v nvm&lt;/code&gt;，而不是 &lt;code&gt;which nvm&lt;/code&gt;：nvm 是 shell 函数，不是普通可执行文件。&lt;/p&gt;
&lt;h2 id="常用工作流"&gt;常用工作流
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvm install --lts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvm use --lts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvm &lt;span class="nb"&gt;alias&lt;/span&gt; default &lt;span class="s1"&gt;&amp;#39;lts/*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;项目根目录可以放置 &lt;code&gt;.nvmrc&lt;/code&gt;，例如写入 &lt;code&gt;22&lt;/code&gt; 或具体版本号；进入项目后执行 &lt;code&gt;nvm use&lt;/code&gt;，使每个项目都用其要求的运行时。不要对 nvm 管理的全局 npm 包使用 &lt;code&gt;sudo&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="双系统边界"&gt;双系统边界
&lt;/h2&gt;&lt;p&gt;Ubuntu 上的 nvm 与 Windows 11 中安装的 Node.js / nvm-windows 相互独立。不要试图让两边共享 &lt;code&gt;~/.nvm&lt;/code&gt;、&lt;code&gt;node_modules&lt;/code&gt; 或全局 npm 目录；文件权限、原生模块和路径格式都不同。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://github.com/nvm-sh/nvm" target="_blank" rel="noopener"
 &gt;nvm-sh/nvm 官方仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;文档参考：&lt;a class="link" href="https://github.com/nvm-sh/nvm#usage" target="_blank" rel="noopener"
 &gt;nvm README：安装、验证与使用&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文基于项目官方文档整理，避免固化会过期的安装脚本版本号。&lt;/p&gt;</description></item><item><title>Ubuntu 内核更新与固定版本：先保留回退，再考虑 hold</title><link>https://breaking-dawn.cn/p/ubuntu-kernel-update-control/</link><pubDate>Tue, 21 Jul 2026 10:05:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-kernel-update-control/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;安全提示&lt;/strong&gt;：内核更新也包含安全修复。除非某个已确认的驱动 / 硬件回归正在影响使用，不建议长期冻结内核；应记录原因与恢复日期。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Ubuntu 通常会保留一个或多个旧内核，这正是遇到新内核与 NVIDIA、VirtualBox 等 DKMS 模块不兼容时最好的回退手段。第一选择应是从 GRUB 的“Advanced options for Ubuntu”启动上一个可用内核，而不是马上阻止所有升级。&lt;/p&gt;
&lt;h2 id="先确认当前状态"&gt;先确认当前状态
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dpkg -l &lt;span class="s1"&gt;&amp;#39;linux-image*&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;^ii&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-cache policy linux-generic linux-image-generic linux-headers-generic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;记录可正常使用的内核版本、显卡驱动版本和故障表现。待问题解决并在新内核上验证后，再清理旧内核；不要删除当前正在运行的版本。&lt;/p&gt;
&lt;h2 id="需要短期暂停更新时"&gt;需要短期暂停更新时
&lt;/h2&gt;&lt;p&gt;Ubuntu 的内核通常由元包推进。下面只是在问题排查期间暂停元包更新；包名需以本机 &lt;code&gt;apt-cache policy&lt;/code&gt; 输出为准：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-mark showhold
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;恢复更新：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-mark unhold linux-generic linux-image-generic linux-headers-generic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;固定单个、已安装的版本包，往往不能阻止元包引入新版本；反过来，冻结元包又会连带停止内核安全更新。因此应该把 hold 当作短期隔离措施，而不是永久配置。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/RayChiu757374816/article/details/122043270" target="_blank" rel="noopener"
 &gt;Ubuntu 锁定内核不让它升级&lt;/a&gt;（RayChiu，CSDN）&lt;/li&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/checknet/article/details/122257816" target="_blank" rel="noopener"
 &gt;Ubuntu 固定内核版本&lt;/a&gt;（checknet，CSDN）&lt;/li&gt;
&lt;li&gt;命令参考：&lt;a class="link" href="https://manpages.ubuntu.com/manpages/jammy/man8/apt-mark.8.html" target="_blank" rel="noopener"
 &gt;APT &lt;code&gt;apt-mark&lt;/code&gt; 手册&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文合并两篇原始资料，并补充了 Ubuntu 22.04 的内核元包和安全更新风险。&lt;/p&gt;</description></item><item><title>Linux 的 .profile、.bashrc、.bash_profile：该把配置写到哪里</title><link>https://breaking-dawn.cn/p/bash-startup-files/</link><pubDate>Tue, 21 Jul 2026 10:00:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/bash-startup-files/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS 默认 Bash。先用 &lt;code&gt;echo &amp;quot;$SHELL&amp;quot;&lt;/code&gt; 确认自己使用的是 Bash；Zsh、Fish 有不同的加载规则。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;最简原则：&lt;strong&gt;交互式终端行为放 &lt;code&gt;.bashrc&lt;/code&gt;，登录后只需执行一次的环境设置放 &lt;code&gt;.profile&lt;/code&gt;&lt;/strong&gt;。不要把同一段初始化同时复制到多个文件，否则每打开一个终端都可能重复追加 PATH 或启动工具。&lt;/p&gt;
&lt;h2 id="ubuntu-2204-中三个文件的角色"&gt;Ubuntu 22.04 中三个文件的角色
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;文件&lt;/th&gt;
					&lt;th&gt;通常何时读取&lt;/th&gt;
					&lt;th&gt;合适内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;~/.bashrc&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;每个交互式 Bash 终端&lt;/td&gt;
					&lt;td&gt;别名、提示符、补全、交互工具初始化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;~/.profile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;图形登录，或 Bash 没有前两个登录配置时的登录 shell&lt;/td&gt;
					&lt;td&gt;PATH、登录环境变量；Ubuntu 默认模板通常让它加载 &lt;code&gt;.bashrc&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;~/.bash_profile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Bash 登录 shell；优先级高于 &lt;code&gt;.profile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;仅在自己明确需要 Bash 专用登录配置时创建&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;系统级配置应单独看待：&lt;code&gt;/etc/profile&lt;/code&gt; 负责登录 shell 的全局环境设置，并可能加载 &lt;code&gt;/etc/profile.d/&lt;/code&gt; 下的脚本；Ubuntu 的交互式 Bash 全局配置通常是 &lt;code&gt;/etc/bash.bashrc&lt;/code&gt;，&lt;strong&gt;不是&lt;/strong&gt;一些教程中写的 &lt;code&gt;/etc/bashrc&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="bash-登录时的优先顺序"&gt;Bash 登录时的优先顺序
&lt;/h2&gt;&lt;p&gt;Bash 作为登录 shell 时，依次尝试读取：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;~/.bash_profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不存在时读取 &lt;code&gt;~/.bash_login&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;前两者都不存在时读取 &lt;code&gt;~/.profile&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;三者只会命中其中一个。Ubuntu 的默认 &lt;code&gt;~/.profile&lt;/code&gt; 通常会在交互式 Bash 环境中加载 &lt;code&gt;~/.bashrc&lt;/code&gt;；一旦自行新建 &lt;code&gt;.bash_profile&lt;/code&gt;，Bash 就不再自动读取 &lt;code&gt;.profile&lt;/code&gt;。如果确实要创建它，通常应显式加载 &lt;code&gt;.profile&lt;/code&gt;，避免丢失系统默认的 PATH 设置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f ~/.profile &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; . ~/.profile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="修改后的即时验证"&gt;修改后的即时验证
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%s\n&amp;#39;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v 需要检查的命令
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;source&lt;/code&gt; 只影响当前终端。对图形登录环境变量、输入法或桌面程序，应该注销再登录，不要仅凭当前终端的结果判断成功。&lt;/p&gt;
&lt;h2 id="常见误区"&gt;常见误区
&lt;/h2&gt;&lt;p&gt;不要把需要用户交互的命令、会输出大量文字的命令或启动 GUI 程序写进 &lt;code&gt;.profile&lt;/code&gt;。它们可能在登录管理器、远程会话或脚本中被调用，造成登录变慢或环境异常。&lt;/p&gt;
&lt;p&gt;另一个常见误解是“每个 shell 脚本都会读取 &lt;code&gt;.bashrc&lt;/code&gt;”。默认的非交互式 Bash 不会读取 &lt;code&gt;~/.bashrc&lt;/code&gt;；只有显式 &lt;code&gt;source&lt;/code&gt;，或设置了 &lt;code&gt;BASH_ENV&lt;/code&gt; 时才可能读取额外配置。因此，脚本所需的环境变量应在脚本、systemd 单元或项目环境中明确声明。对于 nvm、conda 等工具，优先复制其官方安装器给出的单一初始化片段，并放到对应 shell 的推荐文件。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://zhuanlan.zhihu.com/p/405174594" target="_blank" rel="noopener"
 &gt;Linux 文件 profile、bashrc、bash_profile 区别&lt;/a&gt;（linux技术栈，知乎）&lt;/li&gt;
&lt;li&gt;手册参考：&lt;a class="link" href="https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html" target="_blank" rel="noopener"
 &gt;GNU Bash Manual：Bash Startup Files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文已依据补充提供的原始 HTML 核对其登录配置顺序，并修正了 &lt;code&gt;/etc/bashrc&lt;/code&gt; 路径和“.bashrc 会被所有脚本读取”等不适用于 Ubuntu 22.04 的表述。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 安装 CMake：稳定版、项目版与版本核对</title><link>https://breaking-dawn.cn/p/ubuntu-install-cmake/</link><pubDate>Tue, 21 Jul 2026 09:55:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-install-cmake/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。先阅读项目的 &lt;code&gt;CMakeLists.txt&lt;/code&gt;、README 或 CI 配置，确认最低版本；“越新越好”并不总是正确。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="优先选择ubuntu-系统仓库"&gt;优先选择：Ubuntu 系统仓库
&lt;/h2&gt;&lt;p&gt;对于没有明确版本要求的项目，系统仓库的 CMake 最易维护：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install cmake
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cmake --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v cmake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会随着 Ubuntu 的安全更新维护，卸载、升级和依赖关系也由 APT 管理。&lt;/p&gt;
&lt;h2 id="项目要求更高版本时"&gt;项目要求更高版本时
&lt;/h2&gt;&lt;p&gt;若项目明确要求比仓库更新的 CMake，优先使用 &lt;a class="link" href="https://cmake.org/download/" target="_blank" rel="noopener"
 &gt;CMake 官方下载页&lt;/a&gt; 提供的发行包，或采用项目自己的容器 / 工具链配置。安装后务必核对实际生效版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cmake --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; -a cmake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果同时存在 &lt;code&gt;/usr/bin/cmake&lt;/code&gt; 与 &lt;code&gt;/usr/local/bin/cmake&lt;/code&gt;，后者通常会优先执行。记录该差异，避免同一台机器上不同终端、CI 或 IDE 使用了不同版本。&lt;/p&gt;
&lt;h2 id="不建议直接沿用旧教程的做法"&gt;不建议直接沿用旧教程的做法
&lt;/h2&gt;&lt;p&gt;许多旧教程使用 &lt;code&gt;apt-key&lt;/code&gt;、针对旧版 Ubuntu 代号的第三方源，或在 &lt;code&gt;/usr/local&lt;/code&gt; 源码编译安装。这些方式会造成密钥管理过时、软件源不匹配或覆盖系统版本。只有在必须补丁 CMake 本身时，才考虑从源码编译，并把版本、安装位置和卸载方法写入项目文档。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/Man_1man/article/details/126467371" target="_blank" rel="noopener"
 &gt;Ubuntu 安装 CMake 的三种方法&lt;/a&gt;（Man_1man，CSDN）&lt;/li&gt;
&lt;li&gt;官方参考：&lt;a class="link" href="https://cmake.org/download/" target="_blank" rel="noopener"
 &gt;CMake Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文保留“按需求选择安装方式”的思路，并移除了过时发行版软件源示例。&lt;/p&gt;</description></item><item><title>ROG / 华硕笔记本在 Ubuntu 22.04 上使用 asusctl 与显卡模式工具</title><link>https://breaking-dawn.cn/p/asusctl-supergfxctl/</link><pubDate>Tue, 21 Jul 2026 09:50:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/asusctl-supergfxctl/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS，且硬件为受支持的华硕 / ROG 机型。&lt;code&gt;asusctl&lt;/code&gt; 是社区项目，不是华硕官方 Windows 驱动的等价替代品。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;asusctl&lt;/code&gt; 可为部分机型提供键盘灯效、充电限制、性能档位等控制；不同机型支持度差异很大。显卡模式切换牵涉 NVIDIA 驱动、内核和 Secure Boot，风险高于普通桌面设置，应单独验证。&lt;/p&gt;
&lt;h2 id="先确认机型与支持能力"&gt;先确认机型与支持能力
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /sys/class/dmi/id/product_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /sys/class/dmi/id/board_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;asusctl --help
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;asusctl -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;asusctl -s&lt;/code&gt; 列出的功能才是当前机器和驱动实际报告可用的能力。不要把其他机型的 Aura 灯效配置、风扇曲线或 &lt;code&gt;/etc/asusd/&lt;/code&gt; 文件直接复制过来。&lt;/p&gt;
&lt;h2 id="安装原则"&gt;安装原则
&lt;/h2&gt;&lt;p&gt;优先使用 asus-linux 项目针对 Ubuntu 的&lt;strong&gt;当前安装文档和软件源&lt;/strong&gt;。旧教程中“下载源码、手动 &lt;code&gt;make install&lt;/code&gt;”的办法容易绕开包管理器，后续内核更新或卸载时会留下难以追踪的文件。安装前先确认项目仍支持 Ubuntu 22.04 与你的型号，并记录原本的电源/显卡模式。&lt;/p&gt;
&lt;p&gt;完成安装后，只做无破坏检查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl status asusd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;asusctl -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认服务正常后，再逐项调整充电阈值、灯光或性能模式。每次只改一项并测试睡眠、重启和电源状态。&lt;/p&gt;
&lt;h2 id="关于-supergfxctl"&gt;关于 supergfxctl
&lt;/h2&gt;&lt;p&gt;收藏中的 &lt;code&gt;supergfxctl&lt;/code&gt; GitLab 仓库已标记为归档。显卡模式工具的归属、安装方式和支持机型可能已经变化，因此不应使用归档仓库中的旧命令直接安装。请从 asus-linux 的当前主页进入维护中的项目文档；不支持的机型应使用 Ubuntu “附加驱动”和 NVIDIA 的标准 PRIME 流程。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/qq_35395195/article/details/128271907" target="_blank" rel="noopener"
 &gt;在 Ubuntu 中为 ROG 笔记本安装 asusctl&lt;/a&gt;（MAVER1CK，CSDN）&lt;/li&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://gitlab.com/asus-linux/supergfxctl" target="_blank" rel="noopener"
 &gt;asus-linux / supergfxctl GitLab 仓库&lt;/a&gt;（已归档）&lt;/li&gt;
&lt;li&gt;项目主页：&lt;a class="link" href="https://asus-linux.org/" target="_blank" rel="noopener"
 &gt;asus-linux.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将两条资料合并，并明确标注了归档项目与机型差异的限制。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 配置 Fcitx5 中文拼音输入法</title><link>https://breaking-dawn.cn/p/ubuntu-fcitx5-pinyin/</link><pubDate>Tue, 21 Jul 2026 09:45:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-fcitx5-pinyin/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。若系统已经稳定使用 IBus，不必为了“更强功能”强行更换；不要让两个输入法框架同时接管环境变量。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Fcitx5 是输入法框架，本身不等于拼音引擎。Ubuntu 上常用组合是 &lt;code&gt;fcitx5&lt;/code&gt; 加 &lt;code&gt;fcitx5-chinese-addons&lt;/code&gt;，再用图形配置工具添加“拼音”。&lt;/p&gt;
&lt;h2 id="安装"&gt;安装
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;im-config -n fcitx5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行完后注销再登录；若仍不生效，重启一次会更彻底。随后打开应用菜单中的 &lt;strong&gt;Fcitx 5 Configuration&lt;/strong&gt;，点击“添加输入法”，取消“仅显示当前语言”，搜索并添加“拼音”。&lt;/p&gt;
&lt;h2 id="使用与检查"&gt;使用与检查
&lt;/h2&gt;&lt;p&gt;默认可用 &lt;code&gt;Ctrl + Space&lt;/code&gt; 切换输入法。若快捷键无反应，先在 Fcitx5 配置中检查“全局选项”而不是直接修改配置文件。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fcitx5-diagnose &lt;span class="p"&gt;|&lt;/span&gt; less
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;诊断报告会显示当前桌面会话、环境变量、已安装组件和冲突配置。特别注意：旧教程常要求手工写入 &lt;code&gt;GTK_IM_MODULE&lt;/code&gt;、&lt;code&gt;QT_IM_MODULE&lt;/code&gt;、&lt;code&gt;XMODIFIERS&lt;/code&gt;；Ubuntu 22.04 配合 &lt;code&gt;im-config&lt;/code&gt; 时通常不需要重复写入，重复配置反而可能导致应用无法调出候选框。&lt;/p&gt;
&lt;h2 id="wayland-提示"&gt;Wayland 提示
&lt;/h2&gt;&lt;p&gt;Ubuntu 22.04 的 GNOME 可能运行在 Wayland 会话。多数 GTK/Qt 程序可正常使用 Fcitx5；个别 Electron、Java 或旧版应用若不能输入中文，应先更新应用，或仅为该应用参考其官方 Wayland/Fcitx5 支持说明，不要全局退回到旧框架。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://bbs.deepin.org/post/256386" target="_blank" rel="noopener"
 &gt;Fcitx5 输入法设置优化&lt;/a&gt;（深度科技论坛）&lt;/li&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://zhuanlan.zhihu.com/p/675895900" target="_blank" rel="noopener"
 &gt;Debian 12 安装 Fcitx5 中文拼音输入法&lt;/a&gt;（知乎）&lt;/li&gt;
&lt;li&gt;项目参考：&lt;a class="link" href="https://fcitx-im.org/wiki/Fcitx_5" target="_blank" rel="noopener"
 &gt;Fcitx 5 Wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;两篇原始参考分别面向 Deepin 与 Debian；本文已按 Ubuntu 22.04 的软件包名称和桌面流程重新整理。&lt;/p&gt;</description></item><item><title>Ubuntu 安装或修复时出现 grub-install 错误：UEFI 排查与恢复</title><link>https://breaking-dawn.cn/p/ubuntu-grub-install-repair/</link><pubDate>Tue, 21 Jul 2026 09:40:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-grub-install-repair/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;风险提示&lt;/strong&gt;：分区名会因磁盘、NVMe、加密和 LVM 配置而不同。下面的 &lt;code&gt;/dev/nvme0n1pX&lt;/code&gt; 仅是占位示例，绝不能原样套用。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;grub-install&lt;/code&gt; 失败最常见的原因不是 GRUB 文件本身，而是启动模式或 EFI 挂载点不对：安装 U 盘以 Legacy/CSM 模式启动、系统磁盘是 GPT/UEFI 方案却没有挂载 EFI 系统分区，或目标分区识别错误。&lt;/p&gt;
&lt;h2 id="安装前的三项确认"&gt;安装前的三项确认
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;在固件中使用 UEFI 模式启动 Ubuntu 安装 U 盘；安装器终端中可用 &lt;code&gt;test -d /sys/firmware/efi &amp;amp;&amp;amp; echo UEFI&lt;/code&gt; 验证。&lt;/li&gt;
&lt;li&gt;Windows 11 的双系统通常应共享已有的 FAT32 EFI 系统分区，&lt;strong&gt;挂载为 &lt;code&gt;/boot/efi&lt;/code&gt;，不要格式化&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;若设备有 NVIDIA 显卡，黑屏时可仅在本次启动的 GRUB 菜单临时添加 &lt;code&gt;nomodeset&lt;/code&gt;；进入系统并安装合适驱动后应移除该临时参数。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="用-live-usb-修复已安装的-ubuntu"&gt;用 Live USB 修复已安装的 Ubuntu
&lt;/h2&gt;&lt;p&gt;从 Live USB 以 UEFI 模式启动，先通过“试用 Ubuntu”进入桌面，使用 &lt;code&gt;lsblk -f&lt;/code&gt; 确认 Linux 根分区与 EFI 分区。以下示例假设根分区是 &lt;code&gt;/dev/nvme0n1p6&lt;/code&gt;、EFI 分区是 &lt;code&gt;/dev/nvme0n1p1&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount /dev/nvme0n1p6 /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mount /dev/nvme0n1p1 /mnt/boot/efi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; dir in /dev /dev/pts /proc /sys /run&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; sudo mount --bind &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/mnt&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chroot /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;进入 chroot 后再安装引导项：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grub-install --target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-efi --efi-directory&lt;span class="o"&gt;=&lt;/span&gt;/boot/efi --bootloader-id&lt;span class="o"&gt;=&lt;/span&gt;ubuntu --recheck
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;update-grub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;卸载并重启前先退出 chroot：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; dir in /run /sys /proc /dev/pts /dev&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; sudo umount &lt;span class="s2"&gt;&amp;#34;/mnt&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount /mnt/boot/efi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo umount /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 &lt;code&gt;grub-install&lt;/code&gt; 仍失败，保留完整错误信息，并再次检查 Live USB 是否确实以 UEFI 启动、EFI 分区是否为 FAT32、是否已挂载到正确位置。不要编辑生成文件 &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt; 来“永久修复”问题。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://www.cnblogs.com/hskcool/p/14223676.html" target="_blank" rel="noopener"
 &gt;安装系统时遇到 grub-install Error 的解决&lt;/a&gt;（不食花生的猫，博客园）&lt;/li&gt;
&lt;li&gt;官方参考：&lt;a class="link" href="https://help.ubuntu.com/community/Grub2" target="_blank" rel="noopener"
 &gt;Ubuntu Community Help Wiki：GRUB 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文保留原始问题出处，但采用 UEFI/Live USB 的通用恢复流程，避免修改自动生成的 GRUB 配置文件。&lt;/p&gt;</description></item><item><title>误格式化 Windows EFI 分区后：以 bcdboot 重建 UEFI 引导</title><link>https://breaking-dawn.cn/p/windows-efi-boot-repair/</link><pubDate>Tue, 21 Jul 2026 09:35:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/windows-efi-boot-repair/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;风险提示&lt;/strong&gt;：EFI 分区通常只有 100–300 MB，却可能同时保存 Windows 和 Ubuntu 的启动文件。本文只重建 Windows 启动文件；操作前请拍照记录分区列表，并准备 Windows 11 安装 / 恢复 U 盘。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;如果 Windows 11 无法从 UEFI 启动，而系统分区和数据分区仍在，最稳妥的途径是进入 Windows 恢复环境，用 &lt;code&gt;bcdboot&lt;/code&gt; 从现有 Windows 系统目录重新生成启动文件。&lt;/p&gt;
&lt;h2 id="1-进入-windows-恢复命令提示符"&gt;1. 进入 Windows 恢复命令提示符
&lt;/h2&gt;&lt;p&gt;从 Windows 11 安装 U 盘启动，选择“修复计算机” → “疑难解答” → “高级选项” → “命令提示符”。不要在 Ubuntu 中创建或格式化 EFI 分区来代替这一步。&lt;/p&gt;
&lt;h2 id="2-确认-efi-分区和-windows-分区"&gt;2. 确认 EFI 分区和 Windows 分区
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;diskpart
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;list vol
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;EFI 系统分区通常是 FAT32、约 100–300 MB、没有盘符。Windows 分区在恢复环境中&lt;strong&gt;不一定是 &lt;code&gt;C:&lt;/code&gt;&lt;/strong&gt;；先用 &lt;code&gt;dir C:\Windows&lt;/code&gt;、&lt;code&gt;dir D:\Windows&lt;/code&gt; 等确认真正包含 &lt;code&gt;Windows&lt;/code&gt; 目录的盘符。&lt;/p&gt;
&lt;p&gt;确认无误后，仅给 EFI 分区临时分配盘符（以下 &lt;code&gt;N&lt;/code&gt; 必须替换为 &lt;code&gt;list vol&lt;/code&gt; 中的卷号）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select vol N
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;assign letter=S
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="3-重建-windows-启动文件"&gt;3. 重建 Windows 启动文件
&lt;/h2&gt;&lt;p&gt;假设 Windows 目录确实位于 &lt;code&gt;C:\Windows&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bcdboot C:\Windows /s S: /f UEFI
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;成功后关机、拔掉安装 U 盘，再在固件启动菜单中选择 &lt;strong&gt;Windows Boot Manager&lt;/strong&gt;。若 Windows 能启动而 Ubuntu 项消失，这是正常现象：随后可用 Ubuntu Live USB 重新安装 GRUB，而不必再次格式化 EFI 分区。&lt;/p&gt;
&lt;h2 id="复核与善后"&gt;复核与善后
&lt;/h2&gt;&lt;p&gt;进入 Windows 后，确认磁盘管理中 EFI 分区仍为 FAT32 系统分区；不要为了“清理”而删除它。临时盘符 &lt;code&gt;S:&lt;/code&gt; 不应长期保留，可在管理员命令提示符中用 DiskPart 移除盘符。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://bbs.pcbeta.com/viewthread-1727468-1-1.html" target="_blank" rel="noopener"
 &gt;Win10 的 EFI 分区被格式化后如何重建引导&lt;/a&gt;（远景论坛）&lt;/li&gt;
&lt;li&gt;命令参考：&lt;a class="link" href="https://learn.microsoft.com/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di?view=windows-11" target="_blank" rel="noopener"
 &gt;Microsoft：BCDBoot 命令行选项&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将原始 Windows 10 场景改写为 Windows 11，并补充了双系统 EFI 分区共享时的风险说明。&lt;/p&gt;</description></item><item><title>Linux 中查找命令与文件：which、whereis、locate、find 怎么选</title><link>https://breaking-dawn.cn/p/linux-command-search/</link><pubDate>Tue, 21 Jul 2026 09:30:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/linux-command-search/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。命令搜索与文件搜索是两件不同的事，先明确目标会少走很多弯路。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;想找什么&lt;/th&gt;
					&lt;th&gt;优先命令&lt;/th&gt;
					&lt;th&gt;特点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;当前 shell 实际会执行哪个命令&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;command -v 名称&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;能识别 shell 内建命令、别名和函数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;PATH 中的可执行文件&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;which 名称&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;简单，但不适合判断别名或函数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;二进制、源码、手册的大致位置&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;whereis 名称&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;快，搜索范围有限&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;已建立索引的文件名&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;locate 关键词&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;非常快，结果可能不是最新&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;在真实目录树中精确查找&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;find 路径 条件&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;最可靠，但大范围搜索较慢&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="找我现在运行的是谁"&gt;找“我现在运行的是谁”
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;command&lt;/span&gt; -v python
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; -a python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;command -v&lt;/code&gt; 最适合脚本与日常判断；&lt;code&gt;type -a&lt;/code&gt; 会列出所有同名候选项。若安装了多个 Node、Python 或 CMake，这比单独使用 &lt;code&gt;which&lt;/code&gt; 更能说明实际调用顺序。&lt;/p&gt;
&lt;p&gt;原始资料用“复制 &lt;code&gt;ls&lt;/code&gt; 到家目录”的实验说明了一个关键差异：&lt;code&gt;which&lt;/code&gt; 只会返回位于 &lt;code&gt;$PATH&lt;/code&gt; 中、且具有可执行权限的候选文件。需要列出全部候选项时可使用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;which -a ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但不要把个人家目录为了测试而长期加入全局 &lt;code&gt;PATH&lt;/code&gt;；这会让同名程序覆盖系统命令，增加排障与安全风险。&lt;/p&gt;
&lt;h2 id="whereis快速定位软件相关文件"&gt;&lt;code&gt;whereis&lt;/code&gt;：快速定位软件相关文件
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;whereis ls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;whereis -b ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;whereis&lt;/code&gt; 查找预定义系统目录中的二进制文件、源码和手册页，适合快速了解软件安装位置。&lt;code&gt;-b&lt;/code&gt; 只显示二进制文件。它不是“遍历整个硬盘”的工具；找不到结果不代表文件一定不存在。&lt;/p&gt;
&lt;h2 id="按文件名找文件"&gt;按文件名找文件
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -type f -iname &lt;span class="s1"&gt;&amp;#39;*report*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find /etc -type f -name &lt;span class="s1"&gt;&amp;#39;*.conf&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-iname&lt;/code&gt; 忽略大小写；第二个示例把权限错误重定向掉，避免干扰结果。搜索全盘前先限制目录，例如从 &lt;code&gt;$HOME&lt;/code&gt;、&lt;code&gt;/etc&lt;/code&gt; 或项目目录开始。&lt;/p&gt;
&lt;h2 id="使用-locate-前先理解索引"&gt;使用 locate 前先理解“索引”
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;locate ssh_config
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;locate -r &lt;span class="s1"&gt;&amp;#39;\bls$&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo updatedb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;locate&lt;/code&gt; 查询的是文件名数据库，并不实时遍历磁盘；刚创建或删除的文件可能还没反映出来。Ubuntu 22.04 常使用 &lt;code&gt;plocate&lt;/code&gt; 提供该功能，&lt;code&gt;updatedb&lt;/code&gt; 会刷新索引，耗时与磁盘内容有关。原始资料的 &lt;code&gt;locate -r '\bls$'&lt;/code&gt; 示例展示了用正则把宽泛的文件名匹配缩小到以 &lt;code&gt;ls&lt;/code&gt; 结尾的路径。&lt;/p&gt;
&lt;h2 id="find在指定目录中精确搜索"&gt;&lt;code&gt;find&lt;/code&gt;：在指定目录中精确搜索
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; /bin -type f -name &lt;span class="s1"&gt;&amp;#39;ls&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -type f -iname &lt;span class="s1"&gt;&amp;#39;*report*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find /etc -type f -name &lt;span class="s1"&gt;&amp;#39;*.conf&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;find&lt;/code&gt; 直接遍历目录树，是最可靠也最灵活的工具。必须明确写出起始路径：未提供路径时，&lt;code&gt;find&lt;/code&gt; 默认从当前目录 &lt;code&gt;.&lt;/code&gt; 开始，而不是从根目录 &lt;code&gt;/&lt;/code&gt; 开始。搜索全盘前先限制目录，例如从 &lt;code&gt;$HOME&lt;/code&gt;、&lt;code&gt;/etc&lt;/code&gt; 或项目目录开始。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://zhuanlan.zhihu.com/p/35727707" target="_blank" rel="noopener"
 &gt;linux 命令 which、whereis、locate、find 的区别&lt;/a&gt;（splinzer，知乎）&lt;/li&gt;
&lt;li&gt;手册参考：&lt;a class="link" href="https://www.gnu.org/software/findutils/manual/html_mono/find.html" target="_blank" rel="noopener"
 &gt;GNU findutils 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文已依据补充提供的原始 HTML 重新核对，并保留其“复制 &lt;code&gt;ls&lt;/code&gt;、修改权限、刷新索引”的对比思路；具体行为仍以 Ubuntu 22.04 本机命令输出为准。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 与 Windows 11 双系统时间不一致</title><link>https://breaking-dawn.cn/p/ubuntu-windows-time-sync/</link><pubDate>Tue, 21 Jul 2026 09:25:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-windows-time-sync/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS + Windows 11 双系统。以下设置会影响主板 RTC 的解释方式；修改后请分别进入两套系统核对时区与自动校时。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;双系统时间相差数小时，通常不是网络校时失败，而是两套系统对主板硬件时钟（RTC）的理解不同：Linux 通常把 RTC 视为 UTC，Windows 默认倾向把 RTC 当本地时间。&lt;/p&gt;
&lt;h2 id="更适合双系统的做法让-ubuntu-使用本地-rtc"&gt;更适合双系统的做法：让 Ubuntu 使用本地 RTC
&lt;/h2&gt;&lt;p&gt;在保留 Windows 默认行为的情况下，可在 Ubuntu 执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-local-rtc &lt;span class="m"&gt;1&lt;/span&gt; --adjust-system-clock
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到 &lt;code&gt;RTC in local TZ: yes&lt;/code&gt; 即表示设置生效。&lt;code&gt;--adjust-system-clock&lt;/code&gt; 会根据当前 RTC 重新调整系统时钟；执行前确认 Ubuntu 的时区已设为正确的地区，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl set-timezone Asia/Shanghai
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="另一种策略让-windows-使用-utc"&gt;另一种策略：让 Windows 使用 UTC
&lt;/h2&gt;&lt;p&gt;也可以通过 Windows 注册表让 Windows 使用 UTC。不过这会影响 Windows 恢复、休眠、与某些设备工具的兼容性，且变更应由熟悉 Windows 注册表的用户完成。对于普通的 Ubuntu + Windows 双系统，优先选择上面的 Ubuntu 侧设置，改动更集中、回退也更简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo timedatectl set-local-rtc &lt;span class="m"&gt;0&lt;/span&gt; --adjust-system-clock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="验证清单"&gt;验证清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;在 Ubuntu 执行 &lt;code&gt;timedatectl&lt;/code&gt;，确认时区与 NTP 同步状态。&lt;/li&gt;
&lt;li&gt;重启进 Windows 11，确认时区自动设置正确。&lt;/li&gt;
&lt;li&gt;再重启回 Ubuntu，核对时间没有偏移。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若时间每次开机都随机跳变，还应检查 BIOS 时间与主板 CMOS 电池，而不是反复修改系统设置。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/X_T_S/article/details/110142773" target="_blank" rel="noopener"
 &gt;解决 Ubuntu 和 Windows 双系统时间不同步&lt;/a&gt;（X_T_S，CSDN）&lt;/li&gt;
&lt;li&gt;命令参考：&lt;a class="link" href="https://www.freedesktop.org/software/systemd/man/latest/timedatectl.html" target="_blank" rel="noopener"
 &gt;timedatectl 手册&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将原始 Windows 10 场景更新为 Windows 11，并采用 Ubuntu 22.04 可用的 &lt;code&gt;timedatectl&lt;/code&gt; 方式。&lt;/p&gt;</description></item><item><title>Ubuntu 功能键变成多媒体键：先确认硬件，再做可回退配置</title><link>https://breaking-dawn.cn/p/ubuntu-fn-media-keys/</link><pubDate>Tue, 21 Jul 2026 09:20:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-fn-media-keys/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。功能键由 BIOS/UEFI、键盘固件和 Linux 驱动共同决定；不同品牌的解决方案不能互相照搬。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;当按下 F11 却调节音量时，先确认这是不是键盘设计的“多媒体优先”模式。多数笔记本可在 BIOS/UEFI 中切换 Hotkey Mode、Action Keys Mode 或 Function Key Behavior；部分键盘支持 &lt;code&gt;Fn + Esc&lt;/code&gt; 切换。优先使用这两种方式，因为它们不会引入系统级驱动副作用。&lt;/p&gt;
&lt;h2 id="在-ubuntu-中确认按键事件"&gt;在 Ubuntu 中确认按键事件
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo libinput debug-events
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行后按一次目标键，观察系统收到的是 &lt;code&gt;KEY_F11&lt;/code&gt; 还是音量等媒体键。按 &lt;code&gt;Ctrl+C&lt;/code&gt; 结束。若系统已经收到媒体键事件，桌面环境只是按硬件报告的键码处理，修改应用快捷键通常无效。&lt;/p&gt;
&lt;h2 id="关于-hid_apple-参数"&gt;关于 &lt;code&gt;hid_apple&lt;/code&gt; 参数
&lt;/h2&gt;&lt;p&gt;网络上常见的 &lt;code&gt;hid_apple&lt;/code&gt; 与 &lt;code&gt;fnmode&lt;/code&gt; 方案是给&lt;strong&gt;Apple USB / 蓝牙键盘&lt;/strong&gt;使用的，并不适用于普通 Windows 笔记本内置键盘。只有在 &lt;code&gt;lsmod | grep hid_apple&lt;/code&gt; 有结果，且确实使用 Apple 键盘时，才应研究该模块的参数。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lsmod &lt;span class="p"&gt;|&lt;/span&gt; grep hid_apple
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对华硕、联想、戴尔等笔记本，若 BIOS 中没有选项，应查找该机型的 Linux 支持文档或厂商工具。改内核启动参数、黑名单驱动前，请记录原始内容并准备从 GRUB 进入旧内核。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/m0_52910424/article/details/132063361" target="_blank" rel="noopener"
 &gt;Ubuntu 如何关闭 Fn 功能键 / F11 只能控制音量&lt;/a&gt;（Drailife，CSDN）&lt;/li&gt;
&lt;li&gt;输入事件工具参考：&lt;a class="link" href="https://wayland.freedesktop.org/libinput/doc/latest/tools.html" target="_blank" rel="noopener"
 &gt;libinput debug-events 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原始参考中的模块参数具有设备针对性；本文特别补充了适用边界与回退原则。&lt;/p&gt;</description></item><item><title>Linux 磁盘空间排查：正确使用 df、du 与大文件定位</title><link>https://breaking-dawn.cn/p/linux-disk-space/</link><pubDate>Tue, 21 Jul 2026 09:15:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/linux-disk-space/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。执行清理操作前，请先确认路径和数据归属；不要因空间不足而直接删除不认识的系统目录。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;df&lt;/code&gt; 看的是&lt;strong&gt;文件系统&lt;/strong&gt;剩余空间，&lt;code&gt;du&lt;/code&gt; 看的是&lt;strong&gt;目录内容&lt;/strong&gt;占用。两者结合，能快速判断是哪个分区满了、又是哪个目录导致的。&lt;/p&gt;
&lt;h2 id="第一步确认哪个分区满了"&gt;第一步：确认哪个分区满了
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df -hT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关注挂载点为 &lt;code&gt;/&lt;/code&gt;、&lt;code&gt;/home&lt;/code&gt;、&lt;code&gt;/boot&lt;/code&gt; 的行。&lt;code&gt;Use%&lt;/code&gt; 接近 100% 时，先不要升级系统或安装大型软件包；这可能让包管理操作中断。&lt;/p&gt;
&lt;h2 id="第二步从大目录逐层缩小"&gt;第二步：从大目录逐层缩小
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo du -xhd1 / &lt;span class="p"&gt;|&lt;/span&gt; sort -h
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;du -xhd1 &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sort -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-x&lt;/code&gt; 让 &lt;code&gt;du&lt;/code&gt; 不跨越到其他挂载点，避免把 Windows NTFS 分区、移动硬盘等内容混在统计里。通常先检查 &lt;code&gt;/var&lt;/code&gt;、&lt;code&gt;/home&lt;/code&gt;、&lt;code&gt;/usr&lt;/code&gt;；在 &lt;code&gt;/var&lt;/code&gt; 下，日志、软件包缓存和容器数据经常占用较多空间。&lt;/p&gt;
&lt;p&gt;继续深入某个目录时，替换路径即可：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo du -xhd1 /var &lt;span class="p"&gt;|&lt;/span&gt; sort -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="第三步定位异常大文件"&gt;第三步：定位异常大文件
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo find /var -xdev -type f -size +1G -printf &lt;span class="s1"&gt;&amp;#39;%10s %p\n&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sort -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到大文件后，先判断它是否为日志、下载缓存、虚拟机磁盘或数据库文件。对日志可使用 &lt;code&gt;journalctl --disk-usage&lt;/code&gt; 查看 systemd 日志占用；不要直接删除正在写入的日志文件。&lt;/p&gt;
&lt;h2 id="一个容易忽略的差异"&gt;一个容易忽略的差异
&lt;/h2&gt;&lt;p&gt;若 &lt;code&gt;df&lt;/code&gt; 显示空间已满而 &lt;code&gt;du&lt;/code&gt; 找不到对应内容，可能是进程仍打开着一个“已删除文件”。可用下面命令排查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo lsof +L1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认对应服务后，以正常方式重启服务或系统，才会释放这部分空间。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/jadeandplum/article/details/112466387" target="_blank" rel="noopener"
 &gt;Linux 查看磁盘空间命令（df、du）&lt;/a&gt;（jadeandplum，CSDN）&lt;/li&gt;
&lt;li&gt;手册参考：&lt;a class="link" href="https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html" target="_blank" rel="noopener"
 &gt;GNU Coreutils: df invocation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文将原始命令按“整体—目录—文件—异常占用”的排查顺序重新组织。&lt;/p&gt;</description></item><item><title>Ubuntu 22.04 为应用创建开始菜单与桌面启动器</title><link>https://breaking-dawn.cn/p/ubuntu-desktop-entry/</link><pubDate>Tue, 21 Jul 2026 09:05:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-desktop-entry/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS 默认 GNOME 桌面。适合 AppImage、解压后运行的程序，或没有自动添加菜单项的软件。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Linux 的“快捷方式”是符合 Desktop Entry 规范的 &lt;code&gt;.desktop&lt;/code&gt; 文件。对当前用户，文件应放在 &lt;code&gt;~/.local/share/applications/&lt;/code&gt;；只有需要所有用户都能看到时，才使用 &lt;code&gt;/usr/share/applications/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="创建一个当前用户可用的启动器"&gt;创建一个当前用户可用的启动器
&lt;/h2&gt;&lt;p&gt;假设程序实际路径为 &lt;code&gt;/opt/example/example&lt;/code&gt;、图标为 &lt;code&gt;/opt/example/example.png&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.local/share/applications
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.local/share/applications/example.desktop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;写入下面的最小配置，并将路径替换成自己的真实路径：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Desktop Entry]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Comment&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;示例应用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/opt/example/example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/opt/example/example.png&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Terminal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Categories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Utility;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存后执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x ~/.local/share/applications/example.desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;update-desktop-database ~/.local/share/applications 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在“显示应用程序”中搜索 &lt;code&gt;Example&lt;/code&gt;；若没有立刻出现，注销再登录或重启 GNOME Shell 会刷新菜单缓存。&lt;/p&gt;
&lt;h2 id="常见问题"&gt;常见问题
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Exec=&lt;/code&gt; 必须是实际可执行文件的绝对路径。程序本身没有执行权限时，可先执行 &lt;code&gt;chmod +x /实际/程序路径&lt;/code&gt;。需要在终端内运行的命令行程序，才把 &lt;code&gt;Terminal&lt;/code&gt; 设为 &lt;code&gt;true&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不要把不明来源的脚本直接写进 &lt;code&gt;Exec=&lt;/code&gt;。启动器与双击可执行文件一样，会以当前用户权限运行其中的命令。&lt;/p&gt;
&lt;h2 id="桌面图标"&gt;桌面图标
&lt;/h2&gt;&lt;p&gt;Ubuntu 的 GNOME 桌面默认对桌面文件有额外的“允许启动”限制。建议优先把启动器留在应用菜单；确有需要时，将同一个 &lt;code&gt;.desktop&lt;/code&gt; 文件复制到桌面，再在文件管理器中选择“允许启动”。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://blog.csdn.net/McwoLF/article/details/106972524" target="_blank" rel="noopener"
 &gt;在 Linux 下为软件程序添加快捷方式和开始菜单&lt;/a&gt;（McwoLF，CSDN）&lt;/li&gt;
&lt;li&gt;规范参考：&lt;a class="link" href="https://specifications.freedesktop.org/desktop-entry/latest/" target="_blank" rel="noopener"
 &gt;Desktop Entry Specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文未复制原文，示例已按 Ubuntu 22.04 的当前用户目录重新整理。&lt;/p&gt;</description></item><item><title>Ubuntu 中 dpkg 返回错误代码 1：从检查到修复</title><link>https://breaking-dawn.cn/p/ubuntu-dpkg-repair/</link><pubDate>Tue, 21 Jul 2026 09:00:00 +0800</pubDate><guid>https://breaking-dawn.cn/p/ubuntu-dpkg-repair/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用环境&lt;/strong&gt;：Ubuntu 22.04 LTS。本文只处理 &lt;code&gt;apt&lt;/code&gt; / &lt;code&gt;dpkg&lt;/code&gt; 的软件包状态问题，不适用于磁盘损坏或系统无法启动的情形。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;E: Sub-process /usr/bin/dpkg returned an error code (1)&lt;/code&gt; 不是一个单独的故障原因，而是安装流程最后给出的概括性结果。真正的线索通常出现在它之前：可能是某个包的配置脚本失败、依赖缺失、磁盘空间耗尽，或安装被中断。&lt;/p&gt;
&lt;h2 id="先找到真正报错的包"&gt;先找到真正报错的包
&lt;/h2&gt;&lt;p&gt;先重新执行一次，并保留完整输出；重点看最后一个出现 &lt;code&gt;error processing package&lt;/code&gt; 或 &lt;code&gt;post-installation script&lt;/code&gt; 的包名。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -f
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg --configure -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这三个命令依次更新软件包索引、修复可满足的依赖、继续完成尚未配置的包。大多数“错误代码 1”到这里就能恢复。&lt;/p&gt;
&lt;h2 id="仍失败时的排查顺序"&gt;仍失败时的排查顺序
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;查看可用空间：&lt;code&gt;df -h&lt;/code&gt;；&lt;code&gt;/&lt;/code&gt; 或 &lt;code&gt;/var&lt;/code&gt; 写满会导致配置脚本失败。&lt;/li&gt;
&lt;li&gt;查看最近的包管理日志：&lt;code&gt;sudo tail -n 120 /var/log/dpkg.log&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;用前面找到的包名重新安装：&lt;code&gt;sudo apt install --reinstall 包名&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;只有确认该包可以移除且没有关键依赖时，才考虑 &lt;code&gt;sudo apt remove 包名&lt;/code&gt; 后再安装。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要把删除 &lt;code&gt;/var/lib/dpkg/info&lt;/code&gt; 当作常规修复方式。该目录保存已安装软件包的维护脚本与元数据；直接改动前必须有备份，并应先确认是元数据损坏而非某个具体包的配置错误。&lt;/p&gt;
&lt;h2 id="修复后的确认"&gt;修复后的确认
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt -f install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg --audit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若 &lt;code&gt;dpkg --audit&lt;/code&gt; 没有输出未完成的软件包，说明包管理状态已恢复。对驱动、内核、引导加载器等重要组件，建议在重启前确认没有待处理的错误。&lt;/p&gt;
&lt;h2 id="出处"&gt;出处
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原始参考：&lt;a class="link" href="https://www.cnblogs.com/bymo/p/9046586.html" target="_blank" rel="noopener"
 &gt;解决 apt-get 安装中的 dpkg error code (1)&lt;/a&gt;（焦距，博客园）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文为基于原始参考重新编排的排障笔记；命令应以当前终端输出为准。&lt;/p&gt;</description></item></channel></rss>