linux中无windows式的“小/内核/完整”三级转储分类,而是按场景区分:进程级转储(gcore)、内核崩溃转储(kdump+vmcore)、全内存镜像(lime/dd);kdump为唯一稳定系统级崩溃捕获机制,依赖crashkernel预留内存与makedumpfile过滤控制大小。
linux 中没有“小内存转储”“内核转储”“完整转储”这种 windows 风格的三级分类设置。这些术语常见于 windows 的 system properties → 启动和故障恢复 → 写入调试信息,但在 linux 下对应的是不同机制、不同工具链的内存捕获方式,不能直接类比或通过一个统一界面切换。
区分三类目标场景及对应配置方式
虽然名称相似,但 Linux 下三者本质不同:
-
进程级内存转储(≈ Windows 小转储用途):只抓单个用户进程的内存快照,体积小(几 MB 到几百 MB),用于调试崩溃、逆向、取证。常用
gcore或/proc/[pid]/mem直接读取。 -
内核崩溃转储(≈ Windows 内核转储):系统发生 panic 时,由
kdump服务捕获崩溃瞬间的内核内存镜像(vmcore),默认大小约 200–500 MB(取决于物理内存和过滤配置),不包含用户进程完整内存。 -
全内存镜像(≈ Windows 完整转储):极少见且不推荐常规使用。需手动用
dd if=/dev/mem(需内核开启CONFIG_STRICT_DEVMEM=n)或 LiME 模块获取物理内存全部内容,体积等于 RAM 容量(如 32 GB),对取证或高级分析有意义,但生产环境几乎不用。
设置内核崩溃转储(kdump)——最接近“内核转储”
这是 Linux 中唯一能稳定、安全捕获系统级崩溃状态的机制:
- 安装并启用 kdump:
sudo apt install kdump-tools(Debian/Ubuntu)或sudo yum install kexec-tools(RHEL/CentOS) - 分配 crashkernel 内存:在
/etc/default/grub中添加crashkernel=256M,再运行sudo update-grub && sudo reboot - 配置保存位置:编辑
/etc/kdump.conf,例如:path /var/crash(本地目录)nfs 192.168.1.100:/nfs/kdump(网络存储) - 启用服务:
sudo systemctl enable --now kdump - 测试是否生效:
echo c | sudo tee /proc/sysrq-trigger,然后检查/var/crash/是否生成vmcore文件
控制转储内容大小:靠 makedumpfile 过滤
kdump 默认使用 makedumpfile 压缩并过滤内存页,这才是决定“转储是大是小”的关键:
在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
- 最小化转储(推荐):去掉缓存页、零页、用户进程页等无关内容
core_collector "makedumpfile -l --message-level 1 -d31"(写入/etc/kdump.conf) - 保留用户空间(仅当需要分析特定进程崩溃上下文):
core_collector "makedumpfile -l --message-level 1 -d15"(-d15 比 -d31 多保留部分用户页) - 禁用压缩(不建议):
core_collector "cp",但文件会极大
进程级内存转储(轻量、灵活、无需重启)
适用于开发调试、恶意软件解包、临时取证:
- 确认目标进程 PID:
pgrep -f "myapp" - 用 gcore 抓取:
sudo gcore -o /tmp/core.myapp $(pgrep myapp) - 若权限受限或进程受保护,可尝试:
sudo dd if=/proc/$(pgrep myapp)/mem of=/tmp/myapp.mem bs=4096 2>/dev/null(需提前从/proc/[pid]/maps确定有效地址范围) - 注意:
/proc/[pid]/mem默认仅允许 ptrace 跟踪的进程访问,需确保调试权限已开放(ptrace_scope设为 0 或使用 cap_sys_ptrace)
Linux 不提供图形化开关来一键选择“小/内核/完整”三种模式。实际使用中,按需选用对应工具即可:日常调试用 gcore,系统级故障分析配 kdump,专业内存取证考虑 LiME 或虚拟机快照导出。










