syzkaller Linux 内核配置指南:一份可复制的 .config 清单(KCOV 覆盖率、KASAN 检测与沙箱)
测试操作系统网络安全【免费下载链接】syzkallersyzkaller is an unsupervised coverage-guided kernel fuzzer项目地址https://gitcode.com/gh_mirrors/syz/syzkaller点击查看免费下载syzkaller 是一个无监督的、基于覆盖率引导coverage-guided的 Linux 内核模糊测试器。它能否高效工作很大程度上取决于被测内核的编译配置覆盖率收集、漏洞检测、沙箱隔离、符号表与调试信息、fault injection 等能力全部由内核.config决定。本文以仓库官方文档 docs/linux/kernel_configs.md 为骨架完整整理 syzkaller 推荐的 Linux 内核配置项并以 syzkaller 实际运行中的参考配置 和底层源码executor、vminfo 等印证每个配置的真实用途。读完本文你可以为自己的 fuzzing 环境拼出一份可直接make menuconfig或合并进.config的内核配置。参考配置从哪里抄作业官方文档明确推荐以 syzbot 的 upstream-apparmor-kasan.config 作为参考配置。这是一份由syz-kconf自动生成、针对 Linux x86_64 的完整.config文件头部标注了生成工具与内核版本涵盖了本文将要讨论的绝大部分推荐项——包括CONFIG_KCOVy、CONFIG_KASANy、CONFIG_NAMESPACESy、CONFIG_FAULT_INJECTIONy以及内核命令行中的net.ifnames0见 参考配置 L227-L231、L503-L504、L9517、L9737-L9752 附近。在实际搭建环境时可以把它当作基线再按需裁剪。Syzkaller 核心功能所需的配置覆盖率收集KCOV 系列最重要的四项覆盖率是 syzkaller 引导模糊测试方向的燃料文档强调它对高效 fuzzing 极为重要最低要求如下CONFIG_KCOVy CONFIG_KCOV_INSTRUMENT_ALLy CONFIG_KCOV_ENABLE_COMPARISONSy CONFIG_DEBUG_FSyCONFIG_KCOV开启内核覆盖率收集接口。在 executor/executor_linux.h 中执行器直接open(/sys/kernel/debug/kcov, O_RDWR)并使用KCOV_INIT_TRACE64/KCOV_INIT_TRACE32初始化缓冲区——这正对应CONFIG_DEBUG_FSy的依赖/sys/kernel/debug由 debugfs 提供。调试时可用ls /sys/kernel/debug、ls /sys/kernel/debug/kcov确认 kcov 已生效见 troubleshooting。CONFIG_KCOV_INSTRUMENT_ALL对内核所有代码插桩避免覆盖率黑洞。CONFIG_KCOV_ENABLE_COMPARISONS收集比较操作数comparison operands这是 syzkaller 的 comparison 反馈机制的数据来源。在 executor/executor.cc 中定义了struct kcov_comparison_t4 个 64 位字段并调用convert()将其转为 flatbuffers 的ComparisonRaw用于指导后续变异在 BSD 侧则对应KCOV_MODE_TRACE_CMP模式见 executor/executor_bsd.h。注意旧内核CONFIG_KCOV_ENABLE_COMPARISONS需要 gcc 8并且如果你的内核较旧还需移植以下两个提交kcov: support comparison operands collection kcov: fix comparison callback signature内存泄漏检测kmemleak要借助 Kernel Memory Leak Detectorkmemleak检测内核内存泄漏启用CONFIG_DEBUG_KMEMLEAKy在 executor/common_linux.h 中syzkaller 的 leak 检测通过写/sys/kernel/debug/kmemleakKMEMLEAK_FILE完成setup_leak()先scanoff关闭后台扫描、scan触发扫描、sleep 5 秒后再扫描并clear以冲刷启动期的假泄漏随后在检查阶段再次 scan/读回并比较校验和来降低误报。若setup_leak因EBUSY失败代码会提示increase CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE or unset CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF。对应地pkg/vminfo/features.go 中的FeatureLeak会由管理器自动探测并启用该能力。Web 界面展示代码覆盖率调试信息CONFIG_DEBUG_INFOysyzkaller 的 Web 界面需要将覆盖率 PC 地址还原为源码位置这依赖内核的调试信息vmlinux 符号。参考配置中同样开启了CONFIG_DEBUG_INFOy并采用 DWARF4见 参考配置 L9408-L9412。验证方法把 kcov 测试程序输出的十六进制地址交给addr2line -a -i -f -e $VMLINUXVMLINUX即配置中的kernel_obj能还原出行号即说明调试信息可用。系统调用检测与内核位宽KALLSYMSCONFIG_KALLSYMSy CONFIG_KALLSYMS_ALLysyzkaller 启动时会在 VM 内探测哪些系统调用可用、内核是 32 位还是 64 位这依赖/proc/kallsyms。在 pkg/vminfo/linux.go 中/proc/kallsyms被列入RequiredFiles()并从中正则解析_stext/_etext的地址来确定内核镜像范围linuxParseCoreKernel/proc/modules与/sys/module/*/sections/.text则用于计算内核模块的地址区间——这些地址将用于覆盖率数据的规范化。更好的沙箱隔离命名空间syzkaller 默认用沙箱限制被测程序的权限命名空间是隔离的基础CONFIG_NAMESPACESy CONFIG_UTS_NSy CONFIG_IPC_NSy CONFIG_PID_NSy CONFIG_NET_NSy CONFIG_CGROUP_PIDSy CONFIG_MEMCGy其中CONFIG_NET_NS网络命名空间是namespace沙箱中网络隔离的关键CONFIG_CGROUP_PIDS用于限制进程数防止失控CONFIG_MEMCGmemory cgroup用于内存隔离与统计。这些配置在 参考配置 L205-L231 附近 均已置y。若想使用namespace沙箱sandbox: namespace还需要CONFIG_USER_NSy在虚拟机中运行kvm_guest.config文档指出在 VM 中运行 syzkaller 一般需要make kvm_guest.config——这是 Linux 内核自带的 KVM guest 最小配置片段在编译内核时叠加到现有配置之上即可例如make defconfig kvm_guest.config。它确保 virtio 等虚拟化设备驱动就绪配合 QEMU/KVM 使用。若 SSH 连不上 VM还应检查网络配置是否过于精简参考 troubleshooting 中建议的CONFIG_VIRTIO_NETy、CONFIG_E1000y、CONFIG_E1000Ey。Debian 镜像的额外要求configfs 与 securityfs仓库用 tools/create-image.sh 生成 Debian 镜像脚本会向镜像的/etc/fstab写入securityfs挂载到/sys/kernel/security与configfs挂载到/sys/kernel/config条目见 create-image.sh L171-L172。因此内核必须支持这两个文件系统CONFIG_CONFIGFS_FSy CONFIG_SECURITYFSy建议禁用 KASLRRANDOMIZE_BASE文档建议禁用内核地址空间布局随机化KASLR# CONFIG_RANDOMIZE_BASE is not set理由与 kcov 的覆盖率数据稳定性直接相关若内核随机化基址收集到的 PC 地址会发生偏移影响覆盖率合并与报告解析。文档特别指出如果你的内核没有以下两个提交则必须禁用CONFIG_RANDOMIZE_BASEarm64: setup: introduce kaslr_offset()kcov: make kcov work properly with KASLR enabled建议禁用可预测网络接口命名net.ifnames0systemd 的可预测网络接口命名机制会把接口改名为enp0s3之类的名字导致 VM 内接口名与 syzkaller 预期不一致、SSH 连接失败。官方文档给出两种禁用方式方式一内核配置层面CONFIG_CMDLINE_BOOLy CONFIG_CMDLINEnet.ifnames0参考配置中CONFIG_CMDLINE_BOOLy且CONFIG_CMDLINE内已包含net.ifnames0见 参考配置 L503-L504。方式二syzkaller manager 配置层面在vm段加cmdline: net.ifnames0详见 docs/linux/troubleshooting.md 中给出的完整config.json示例type: qemu、count: 4等。文档同时提醒该方式不能保证在所有虚拟化技术上都生效——所以内核命令行方式更可靠。判断是否需要处理若 VM 报 Failed to start Raise network interfaces 或 syzkaller 连不上 VM优先检查此配置。Bug 检测配置检测器选型总览syzkaller 设计上配合以下内存/未定义行为检测器使用检测器说明上游状态KASAN内核地址消毒器检测 use-after-free 与越界上游可用CONFIG_KASANyKTSAN内核线程消毒器原型可用KMSAN内核内存消毒器未初始化内存原型可用KUBSAN内核未定义行为消毒器上游可用CONFIG_UBSANy其中 KASAN 是最常用的主力检测器。开启 KASAN 以检测 use-after-free 和越界访问CONFIG_KASANy CONFIG_KASAN_INLINEyCONFIG_KASAN_INLINE采用内联插桩虽然代码体积更大但能捕获更多种类的错误。syzkaller 的崩溃解析器对 KASAN 报告有专门支持在 pkg/report/linux.go 中可看到针对BUG: KASAN:的多种模式越界读写、double-free/invalid-free、KASAN_HW_TAGS报告等都会被归为crash.KASAN类型见 pkg/report/crash/types.go说明 KASAN 产出已深度集成进报告管道。故障注入fault injection 系列若想测试内核的故障处理路径错误路径的健壮性启用以下配置syzkaller 会自动拾取该能力FeatureFault见 pkg/flatrpc/flatrpc.go 中的FeatureFault枚举以及 pkg/vminfo/features.go 中对应的 feature 探测CONFIG_FAULT_INJECTIONy CONFIG_FAULT_INJECTION_DEBUG_FSy CONFIG_FAULT_INJECTION_USERCOPYy CONFIG_FAILSLABy CONFIG_FAIL_PAGE_ALLOCy CONFIG_FAIL_MAKE_REQUESTy CONFIG_FAIL_IO_TIMEOUTy CONFIG_FAIL_FUTEXy其中CONFIG_FAULT_INJECTION_DEBUG_FS提供 debugfs 接口/sys/kernel/debug/fail*供 executor 写入 fail-nth 之类的注入控制参考配置完整开启了这一组见 参考配置 L9737-L9746并额外启用了CONFIG_FAULT_INJECTION_CONFIGFSy。注意旧内核若测试旧内核还需要以下提交fault-inject: support systematic fault injection fault-inject: simplify access check for fail-nth fault-inject: fix wrong should_fail() decision in task context fault-inject: add /proc/pid/fail-nth其他高价值调试配置多多益善文档态度很明确任何其他调试配置越多越好并列出被实践证明特别有用的一组CONFIG_LOCKDEPy CONFIG_PROVE_LOCKINGy CONFIG_DEBUG_ATOMIC_SLEEPy CONFIG_PROVE_RCUy CONFIG_DEBUG_VMy CONFIG_REFCOUNT_FULLy CONFIG_FORTIFY_SOURCEy CONFIG_HARDENED_USERCOPYy CONFIG_LOCKUP_DETECTORy CONFIG_SOFTLOCKUP_DETECTORy CONFIG_HARDLOCKUP_DETECTORy CONFIG_BOOTPARAM_HARDLOCKUP_PANICy CONFIG_DETECT_HUNG_TASKy CONFIG_WQ_WATCHDOGy这些配置的作用大致如下CONFIG_LOCKDEP/CONFIG_PROVE_LOCKING是锁依赖与死锁静态验证CONFIG_PROVE_RCU校验 RCU 使用规则CONFIG_DEBUG_VM开启大量 VM 层运行时断言CONFIG_REFCOUNT_FULL把 refcount 溢出检测做成完整实现CONFIG_FORTIFY_SOURCE/CONFIG_HARDENED_USERCOPY分别加强字符串/结构体边界与用户拷贝边界检查LOCKUP_DETECTOR系列与CONFIG_DETECT_HUNG_TASK、CONFIG_WQ_WATCHDOG用于探测软/硬锁死、挂起任务与 workqueue 卡死。参考配置中可见CONFIG_LOCKDEPyL9590、CONFIG_PROVE_LOCKINGyL9581、CONFIG_DEBUG_VMyL9499、CONFIG_DETECT_HUNG_TASKyL9558等均已开启。调大超时阈值降低误报率锁死/挂起检测的默认超时较短在高负载 fuzzing 下容易误报。文档建议调大CONFIG_DEFAULT_HUNG_TASK_TIMEOUT140 CONFIG_RCU_CPU_STALL_TIMEOUT100参考配置中正是CONFIG_DEFAULT_HUNG_TASK_TIMEOUT140L9559与CONFIG_RCU_CPU_STALL_TIMEOUT100L9633另外还配合CONFIG_BOOTPARAM_HUNG_TASK_PANICy让严重挂起直接 panic 以便捕获。运行期也可用内核参数workqueue.watchdog_thresh140、watchdog_thresh55等做等价调节同样体现在参考配置的CONFIG_CMDLINE中。从源码看配置如何被真正消费为了加深理解这里把文档中的配置项与仓库代码的调用点对应起来方便读者自行深入配置项消费它的仓库代码具体机制CONFIG_KCOV/CONFIG_DEBUG_FSexecutor/executor_linux.h打开/sys/kernel/debug/kcovioctl 初始化 trace 缓冲区并映射内存CONFIG_KCOV_ENABLE_COMPARISONSexecutor/executor.cckcov_comparison_t结构解析比较操作数转成ComparisonRaw反馈给 fuzzerCONFIG_KALLSYMSpkg/vminfo/linux.go从/proc/kallsyms解析_stext/_etext确定内核代码区间用于模块地址计算与覆盖率规范化CONFIG_DEBUG_KMEMLEAKexecutor/common_linux.h通过/sys/kernel/debug/kmemleak的 scan/clear 流程做泄漏检测FeatureLeakfault injection 系列pkg/flatrpc/flatrpc.go、pkg/vminfo/features.goFeatureFault自动探测executor 向 debugfs fail 接口注入故障CONFIG_KASANpkg/report/linux.go解析BUG: KASAN:报告并归类为crash.KASAN这一对应关系也解释了为什么文档把某些配置标注为必需例如没有CONFIG_KALLSYMSpkg/vminfo/linux.go 的RequiredFiles()探测就会失败没有CONFIG_DEBUG_FSexecutor 连/sys/kernel/debug/kcov都无法打开。落地步骤小结以 upstream-apparmor-kasan.config 为基线或从make defconfig开始确保本文Syzkaller 核心功能一节的全部配置为yKCOV 四件套、KALLSYMS、命名空间、configfs/securityfs按目标检测器叠加CONFIG_KASANy或 KTSAN/KMSAN/KUBSAN与 fault injection 系列追加 LOCKDEP 等调试配置并调大CONFIG_DEFAULT_HUNG_TASK_TIMEOUT/CONFIG_RCU_CPU_STALL_TIMEOUT对 VM 场景执行make kvm_guest.config并处理# CONFIG_RANDOMIZE_BASE is not set与net.ifnames0内核命令行或 manager 配置二选一编译内核后按 docs/linux/setup.md 启动 syzkaller并用ls /sys/kernel/debug/kcov快速验证覆盖率接口可用。配置完成后即可拥有高覆盖率反馈 内存安全检测 故障注入 强沙箱隔离的完整 fuzzing 内核这也是 syzbot 长期运行的配置形态。赞分享测试操作系统网络安全【免费下载链接】syzkallersyzkaller is an unsupervised coverage-guided kernel fuzzer项目地址https://gitcode.com/gh_mirrors/syz/syzkaller点击查看免费下载相关推荐syzkaller Linux 内核覆盖率数据管道从 kcov PC 采集到源码级报告syzkaller Linux 内核覆盖率数据管道从 kcov PC 采集到源码级报告 syzkaller 以覆盖率作为无监督模糊测试的核心反馈信号内核在编测试操作系统网络安全syzkaller 内核覆盖率收集与符号化解析完全指南KCOV 与 binutils 工具链实战syzkaller 内核覆盖率收集与符号化解析完全指南KCOV 与 binutils 工具链实战 本文围绕 syzkaller 在内核模糊测试中的覆盖率Co网络安全开发工具质量保障syzkaller 覆盖率采集与报告指南KCOV、Sanitizer Coverage 与 syz-cover 全解析syzkaller 覆盖率采集与报告指南KCOV、Sanitizer Coverage 与 syz cover 全解析 syzkaller 是内核模糊测试工具网络安全开发工具质量保障上一篇让AI替你调试网页JS:js-reverse-mcp逆向MCP Server,从安装到第一次断点调试下一篇fish-shell complete 命令完全指南从零编写可编程 Tab 补全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

IHP 框架安全指南:XSS、SQL 注入、CSRF 与认证安全的自动化防护与手动加固

IHP 框架安全指南:XSS、SQL 注入、CSRF 与认证安全的自动化防护与手动加固

后端 【免费下载链接】ihp 🔥 The fastest way to build type safe web apps. IHP is a new batteries-included web framework optimized for longterm productivity and programmer happiness 项目地址: https://gitcode.com/gh_mirrors/ih/ihp 点击查…

2026/10/13 3:12:46 阅读更多 →
TensorSpace 模型预处理实战:将单一输出预训练模型转换为层间多输出可视化格式

TensorSpace 模型预处理实战:将单一输出预训练模型转换为层间多输出可视化格式

数据可视化深度学习3D渲染AI 可解释性 【免费下载链接】tensorspace Neural network 3D visualization framework, build interactive and intuitive model in browsers, support pre-trained deep learning models from TensorFlow, Keras, TensorFlow.js 项目地址&#xff1…

2026/10/13 3:12:46 阅读更多 →
GESP图形化编程三级解析

GESP图形化编程三级解析

解析:答案:A解析:答案:B解析:程序从上往下执行答案:D解析:考察双重循环答案:A解析:答案:B解析:克隆体拥有和本体一样的功能,本体可以干…

2026/10/13 3:12:46 阅读更多 →

最新新闻

Python+Django+Vue实现流浪狗救助捐赠平台全栈开发实战

Python+Django+Vue实现流浪狗救助捐赠平台全栈开发实战

从接到这个项目需求的第一天起,我就很清楚它要解决的不只是"给流浪狗一个展示页面"这么简单。真正的痛点在信息不对称:救助站有狗没人领、有需求找不到稳定的捐赠来源,热心市民想帮忙却不知道钱和物具体用到了哪里。所以这个基于Py…

2026/10/13 4:03:59 阅读更多 →
m3u8直链解析源码实战:HLS分片地址提取与避坑指南

m3u8直链解析源码实战:HLS分片地址提取与避坑指南

简介:这份资源是一套m3u8直链解析源码,面向需要为视频站点或自建播放器接入m3u8解析能力的开发者,尤其适合使用ckplayer播放器、希望快速实现直链播放与解析整合的技术人员。压缩包共33个文件,约453KB,以png、jpg图片素…

2026/10/13 4:03:59 阅读更多 →
Linux Socket编程预备知识:从网络分层到字节序实战

Linux Socket编程预备知识:从网络分层到字节序实战

套接字Socket编程这块,很多人一上来就打开编辑器写代码,结果被各种编译错误、段错误、连接失败搞得一头雾水。其实问题多半不是出在代码上,而是预备知识没补齐。这篇东西就是写给那些正准备接触Linux网络编程的人,先从预备阶段把网络分层、地址结构、字节序、端口这些底层逻辑理…

2026/10/13 4:03:59 阅读更多 →
Cisco ASA防火墙9.5(2)综合配置实战:NAT、ACL与双出口切换详解

Cisco ASA防火墙9.5(2)综合配置实战:NAT、ACL与双出口切换详解

做网络这行的,肯定绕不开Cisco ASA防火墙9.5(2)这个版本。它不像新平台那么抢眼,但在中低端安全接入场景里,稳定性和资料完整度绝对算得上老牌选手。很多兄弟接手一台设备,翻来覆去就那几条命令,可一旦要动NAT、ACL、双…

2026/10/13 4:03:59 阅读更多 →
GTC 2026深度解读:从五层蛋糕框架看懂GPU技术版图

GTC 2026深度解读:从五层蛋糕框架看懂GPU技术版图

这几年只要圈里聊起 GPU 技术大会,大家嘴里多半都会蹦出一个词:五层蛋糕。我第一次听到这个比喻时也愣了一下,后来把历年的技术发布、生态发展和行业落地串在一起看,才发现这个说法虽然听起来像甜品店菜单,其实正好把整…

2026/10/13 4:03:59 阅读更多 →
darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

直接跑./darknet就报错error while loading shared libraries: libopencv_highgui.so.3.2,这种动态库缺失的问题,估计每个搞深度学习目标检测的人都被它堵过一阵子。明明编译都过了,运行却翻车,查了半天也不知道到底哪里没对上。如…

2026/10/13 4:02:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →