让最小 Linux 脱离 QEMU:GRUB 引导与磁盘镜像制作
前几篇我们的最小 Linux 一直靠 QEMU 的 `-kernel` 和 `-initrd` 参数"喂"给虚拟机——QEMU 充当保姆,把内核和文件系统直接放进内存。这种方式快速方便,但系统完全依赖 QEMU:换个虚拟机就跑不起来,关机所有数据丢失,连引导过程都被跳过了。
阅读全文前几篇我们的最小 Linux 一直靠 QEMU 的 `-kernel` 和 `-initrd` 参数"喂"给虚拟机——QEMU 充当保姆,把内核和文件系统直接放进内存。这种方式快速方便,但系统完全依赖 QEMU:换个虚拟机就跑不起来,关机所有数据丢失,连引导过程都被跳过了。
阅读全文上一篇让最小 Linux 脱离了 QEMU 的保姆模式,做了一块包含 GRUB、内核和根文件系统的自引导磁盘。这篇把同一块磁盘搬到 VMware Workstation 里——看起来只是格式转换,实际上踩了好几个坑:磁盘格式、控制器驱动、终端设备、内核日志刷屏。每个都值得单独说说。
阅读全文上一篇编译了一个 14 MB 的 defconfig 内核。但内核本身只是一个"管理者"——管理 CPU、内存、设备,提供系统调用接口。它不包含任何用户能直接使用的东西:没有 shell、没有 `ls`、没有 `cat`。这些全部存在于根文件系统(rootfs)里。
阅读全文上一篇 [WSL 里全量编译 Linux 内核](./wsl-kernel-build-guide) 用的是 `allmodconfig`——把所有模块全打开,验证工具链完整性。这次目标不同:编译一个能在 QEMU 里跑起来的精简内核,为后面的 BusyBox rootfs 和最小系统做准备。
阅读全文前两篇准备好了两个核心组件:14 MB 的 defconfig 内核和 2.4 MB 的静态 BusyBox。这篇把它们组装起来,在 QEMU 里启动一个完整的最小 Linux 系统——从创建 rootfs、写 init 脚本、打包 initramfs,到 QEMU 启动和调试。
阅读全文用 [Relay](https://github.com/andeya/ide-relay-mcp) 做 Cursor Agent 的人机回环时,遇到一个让人抓狂的问题:Agent 调用 `relay_interactive_feedback` 等待我输入回复,我还没打完字,连接就断了——`MCP error -32001: Request timed out`。
阅读全文上一篇 [公司内网安装 WSL2](../engineering/wsl-install-guide) 把环境搭好了。接下来的目标是编译一次 Linux 内核——后面要做单片机的内核裁剪,先在 PC 上把全量编译跑通,确认工具链和环境没问题,后续裁剪时心里才有底。
阅读全文事情的起因是想编译 Linux 内核——后续打算做单片机的内核裁剪,先在 PC 上跑通全量编译作为基础。虚拟机太重,双系统切换麻烦,WSL2 是最合适的选择——原生 Linux 内核跑在轻量虚拟机里,文件系统性能够用,还能和 Windows 侧无缝共享文件。
阅读全文Cursor CLI 支持 **Max Mode**——扩展上下文窗口和工具调用限制,代价是更高的 token 消耗。在 Cursor IDE 里这是一个 toggle,但在 CLI 中只能通过 `cli-config.json` 的 `maxMode` 字段控制,且 CLI 读取后会自动重置为 `false`(一次性消费)。
阅读全文VSCode Copilot Chat 从 2025 年下半年开始支持一个低调但实用的功能:**Thinking Block**。当你选择一个支持 extended thinking 的模型(如 Claude Sonnet/Opus Thinking),模型的思考过程会以一个可折叠的 "Thinking..." 块实时流式显示在聊天窗口中,思考完成后自动折叠,再展示正式回答。
阅读全文GitHub Copilot Chat 的模型选择器下拉菜单里,你通常只能看到 GitHub 官方提供的模型(GPT-4o、Claude Sonnet 等)。但如果你装了某些第三方扩展,下拉菜单里会突然多出 Ollama、LM Studio 甚至自建 API 后面的模型。这背后的机制是 VSCode 的 **Language Model Chat Provider API**——一个允许任何扩展向…
阅读全文VSCode 扩展是 JavaScript/TypeScript 程序,运行在 VSCode 宿主进程提供的沙箱环境中,通过 `vscode` 命名空间的 API 与编辑器交互。听起来简单,但当你真正开始写的时候,会发现 VSCode 扩展开发有一套相当独特的约定和心智模型——和写普通 Node.js 应用的感觉完全不同。
阅读全文Cursor 和 GitHub Copilot 是目前最流行的两个 AI 编程助手,但它们各有各的生态围墙。Cursor 有丰富的模型选择(Claude Opus/Sonnet、GPT-4o、Gemini Pro 等 40+ 模型)和强大的 Agent 能力,但只能在 Cursor IDE 中使用。GitHub Copilot Chat 有更好的 VSCode 原生集成和社区生态,但模型选择受限于…
阅读全文把 Cursor 的 AI Agent 能力做成一个 U 盘级别的便携工具——解压即用、用完即删、不污染宿主系统。这个需求来自一个真实场景:需要在不同用户的 Windows 机器上快速启动 AI 助手协助排查问题,而这些机器上不可能预装 Cursor IDE。
阅读全文Cursor CLI(`agent` 命令)是 Cursor IDE 的终端版本,提供完整的 AI Agent 能力但不需要 GUI。它支持的配置项比大多数人以为的要多——MCP Server、Skills、Rules、项目指令文件都可以在 CLI 环境下使用。本文整理了经过实际验证的 CLI 配置方法,包括哪些 IDE 功能在 CLI 下可用、哪些不可用,以及各种隐藏参数。
阅读全文上一篇 [Fedora 上安装 DEB 包的完整指南](./fedora-install-deb) 讲了如何在 Fedora aarch64 上通过手动解压 DEB 包来安装应用。本篇记录后续问题:**怎么更新**。
阅读全文Cursor Agent CLI 天然支持多模态——Read 工具可以直接"看"本地图片文件。但 OpenClaw 作为中间层,收到的是 OpenAI 格式的消息,图片可能是 URL、base64、本地路径等各种形态。需要在消息到达 Cursor 之前,统一把图片转成本地文件。
阅读全文[上一篇](./openclaw-cursor-image-pipeline.md)打通了 URL 和本地图片的分析链路——proxy 下载图片到本地,Cursor Agent 用 Read 工具看。但 WPS 协作的图片既不是 URL 也不是本地文件,而是一个 `storage_key` 编码标识,需要额外的鉴权步骤。
阅读全文WPS 协作里有个"数字员工"体系,OpenClaw 官方提供了 Agentspace 插件,装上之后你在协作 IM 里发消息,就能调度自己电脑上的本地 AI Agent 执行任务。
阅读全文Fedora 用的是 RPM 包管理系统,和 DEB(Debian/Ubuntu)不兼容。但有些软件只提供 DEB 包——特别是在 aarch64 架构上,不少厂商只发了 arm64 DEB 而没有 arm64 RPM(比如 WPS Office、WPS 协作)。
阅读全文手机发一句"帮我看看 auth 模块最近改了啥",家里电脑上的 Cursor Agent 就开始读代码、跑命令,结果推回手机。
阅读全文此文章已加密,请输入密码查看。
阅读全文VitePress 的默认主题是为文档站设计的——干净、专业、信息密度高。但当你把它用作个人博客时,首页的「文档感」就显得有点冷清了。
阅读全文迁移一个博客框架听起来不难——换个构建工具、调一下模板就完事了。但当博客里有加密文章、Git 子模块管理的私有内容、GitHub Pages 自动部署和自定义主题时,这件事就变成了一个涉及构建链、加密方案、CI 流程和前端架构的系统工程。
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文最初整个博客是一个单体仓库,Hexo 框架文件(`package.json`、`scaffolds/`、`themes/`)和用户内容(文章、配置、脚本)混在一起:
阅读全文博客推送新架构(将 `source/_posts` 改为私有 Git 子模块)后,GitHub Actions 显示 build ✅ deploy ✅,GitHub Pages Settings 也显示 "Your site is live",但访问站点始终返回 **404 File not found**。
阅读全文博客部署在 GitHub Pages 上,没有后端服务。对部分涉及公司内部实现的文章做访问控制,采用纯前端加密方案,完整流程:
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文此文章已加密,请输入密码查看。
阅读全文