Linux内核开发实战:从模块编写到系统编译的完整指南
最近在整理操作系统开发相关的学习资料时发现很多朋友对“从零开始构建一个操作系统”既充满向往又感到无从下手。网上的资料要么过于理论化要么过于零散难以形成一条清晰的实践路径。本文将围绕基于Linux内核的操作系统开发这一核心主题为你梳理一套从环境搭建、内核编译、模块开发到系统集成的完整实战指南。无论你是计算机专业的学生还是希望深入理解操作系统原理的开发者都能通过本文的步骤亲手构建一个可运行的最小系统并理解其背后的核心机制。1. 背景与核心概念为什么需要自己开发操作系统在深入代码之前我们首先要明确“基于Linux内核开发操作系统”究竟意味着什么。这并非指从零编写一个全新的内核那是一项浩大的工程。这里的“开发”更多是指定制、裁剪和扩展现有的、成熟稳定的Linux内核以满足特定场景的需求或者作为深入学习操作系统原理的绝佳实践。1.1 什么是Linux内核Linux内核是操作系统的核心负责管理系统的所有硬件资源CPU、内存、磁盘、网络等并为上层应用程序提供统一的、安全的访问接口。它是一个用C语言和少量汇编编写的、庞大而复杂的开源软件。1.2 基于内核开发的应用场景嵌入式系统智能家电、路由器、工控设备等资源受限的设备需要极度精简和定制化的系统。开发者可以裁剪掉不需要的驱动和功能打造一个专属的微型Linux系统。特殊用途服务器例如需要极致性能或特定安全策略的Web服务器、数据库服务器。通过自定义内核可以优化调度器、网络栈或文件系统。研究与教学这是理解进程管理、内存管理、文件系统、设备驱动等核心概念最有效的方式。通过编写内核模块可以动态地向运行中的内核添加功能。新兴硬件支持为新的或非标准的硬件编写驱动程序使其能在Linux上工作。1.3 核心开发模式我们通常通过两种主要方式与内核交互内核模块Kernel Modules一种可以动态加载到内核或从内核卸载的代码块。它允许我们扩展内核功能而无需重启系统或重新编译整个内核。这是最常用、最安全的入门方式。直接修改内核源码并重新编译当我们需要的修改涉及内核核心架构如调度算法或需要永久集成某些功能时会直接修改源码树中的文件然后编译生成一个新的内核镜像。本文将重点介绍第一种方式内核模块开发并简要引导你完成一次完整的内核编译因为这几乎是所有深度定制的起点。2. 环境准备与版本说明工欲善其事必先利其器。一个稳定、合适的开发环境是成功的第一步。2.1 硬件与操作系统开发机推荐使用一台性能尚可的物理机或虚拟机。虚拟机更为安全便于快照和回滚。VMware Workstation或VirtualBox都是优秀的选择。客户机操作系统我们需要一个Linux发行版作为开发主机。Ubuntu 22.04 LTS或Fedora 36是社区支持最完善的选择拥有丰富的软件包和活跃的社区。本文示例将以Ubuntu 22.04为例。内存与磁盘建议为虚拟机分配至少4GB内存和50GB磁盘空间。内核编译过程会产生大量中间文件需要充足的空间。2.2 软件与工具链在Ubuntu终端中执行以下命令安装必备的编译工具和内核头文件sudo apt update sudo apt upgrade -y # 安装编译工具链GCC, Make等 sudo apt install build-essential -y # 安装内核编译所需的依赖libncurses用于menuconfiglibssl-dev等 sudo apt install libncurses-dev flex bison libssl-dev libelf-dev -y # 安装QEMU一个处理器模拟器用于运行我们编译好的内核无需重启物理机 sudo apt install qemu-system-x86 -y2.3 获取Linux内核源码有两种主要方式获取内核源码从发行版仓库安装内核头文件仅用于模块开发sudo apt install linux-headers-$(uname -r)这种方式获取的头文件与当前运行的内核版本严格匹配适合编写在该内核上运行的内核模块。源码位于/usr/src/目录下。从官方仓库下载完整源码用于内核修改和编译 访问 kernel.org 或使用git克隆稳定版本的分支。这是进行深度开发的标准方式。# 使用git克隆速度较慢但可获取完整历史 # git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git # 或直接下载稳定版压缩包推荐新手 wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz tar -xf linux-6.6.tar.xz cd linux-6.6版本说明内核版本迭代迅速。本文以当时稳定的6.6版本为例但核心概念和操作流程适用于大多数现代内核版本。请根据你的实际需求选择版本长期支持版本LTS如 6.1、6.6 是更稳妥的选择。3. 核心开发第一步编写你的第一个内核模块内核模块是理解内核编程的最佳切入点。它让你能够在不破坏系统稳定性的前提下体验内核代码的编写、编译和运行。3.1 内核模块的基本结构一个最简单的内核模块至少包含两个函数module_init和module_exit。module_init指定模块加载时自动执行的函数。module_exit指定模块卸载时自动执行的函数。创建一个新文件hello.c// hello.c - 第一个内核模块 #include linux/init.h // 包含模块初始化和清理函数的宏 #include linux/module.h // 包含内核模块相关的核心宏和函数 #include linux/kernel.h // 包含内核常用的函数和宏如 printk // 模块许可证声明必须 MODULE_LICENSE(GPL); // 模块作者声明可选 MODULE_AUTHOR(Your Name); // 模块描述可选 MODULE_DESCRIPTION(A simple Hello World kernel module); // 模块加载时执行的函数 static int __init hello_init(void) { // printk 是内核中的打印函数类似于用户空间的 printf。 // KERN_INFO 是日志级别表示普通信息。输出会出现在内核日志中可通过 dmesg 查看。 printk(KERN_INFO Hello, World! Kernel module loaded.\n); return 0; // 返回 0 表示初始化成功 } // 模块卸载时执行的函数 static void __exit hello_exit(void) { printk(KERN_INFO Goodbye, World! Kernel module unloaded.\n); } // 注册模块的入口和出口点 module_init(hello_init); module_exit(hello_exit);3.2 编写Makefile内核模块不能直接用gcc编译需要借助内核的构建系统kbuild。我们需要一个简单的Makefile来告诉make如何编译。在同一目录下创建Makefile注意M大写# Makefile for building the hello kernel module # 指定内核模块的名称最终生成的 .ko 文件 obj-m : hello.o # 获取当前运行内核的构建目录 KERNEL_DIR ? /lib/modules/$(shell uname -r)/build # 指定当前模块源码的目录 PWD : $(shell pwd) # default 目标执行内核的构建系统 default: $(MAKE) -C $(KERNEL_DIR) M$(PWD) modules # 清理编译生成的文件 clean: $(MAKE) -C $(KERNEL_DIR) M$(PWD) clean关键解释obj-m : hello.o告诉kbuild系统我们要构建一个名为hello.ko的模块它由hello.o目标文件生成。-C $(KERNEL_DIR)改变目录到内核构建目录即/lib/modules/$(uname -r)/build这里指向了已安装内核的头文件和构建配置。M$(PWD)告诉内核构建系统模块的源代码位于当前目录$(PWD)。3.3 编译与加载模块编译在包含hello.c和Makefile的目录下直接执行make。make如果一切顺利你会看到类似以下的输出并生成hello.ko、hello.mod.c等文件。其中hello.ko就是编译好的内核模块。make -C /lib/modules/6.2.0-39-generic/build M/path/to/your/module modules make[1]: Entering directory /usr/src/linux-headers-6.2.0-39-generic CC [M] /path/to/your/module/hello.o MODPOST /path/to/your/module/Module.symvers CC [M] /path/to/your/module/hello.mod.o LD [M] /path/to/your/module/hello.ko BTF [M] /path/to/your/module/hello.ko make[1]: Leaving directory /usr/src/linux-headers-6.2.0-39-generic’加载模块使用insmod命令需要root权限。sudo insmod hello.ko查看输出模块加载时hello_init函数中的printk信息被记录到了内核日志。使用dmesg命令查看最新的内核日志。dmesg | tail -5你应该能看到类似这样的输出[ 1234.567890] Hello, World! Kernel module loaded.检查已加载模块使用lsmod命令可以列出所有已加载的模块并确认hello模块在其中。lsmod | grep hello卸载模块使用rmmod命令后跟模块名不是文件名。sudo rmmod hello再次使用dmesg | tail -5查看应该能看到卸载时的告别信息。[ 1234.678901] Goodbye, World! Kernel module unloaded.恭喜你已经成功编写、编译并运行了你的第一个内核模块。这标志着你已经踏入了操作系统底层开发的大门。4. 深入实战编译自定义的Linux内核虽然模块开发很实用但要真正定制一个系统往往需要重新编译内核启用或禁用某些功能甚至打上自己的补丁。下面我们使用QEMU模拟器来编译并运行一个自定义内核这是一个完全在虚拟机内完成的沙盒操作不会影响宿主机。4.1 准备内核源码与配置假设你已经下载并解压了内核源码如linux-6.6并进入了该目录。cd linux-6.6获取默认配置内核有成千上万的配置项。我们可以从一个基础配置开始。对于x86_64架构通常使用defconfig。make x86_64_defconfig这个命令会生成一个.config文件包含了该架构下所有配置项的默认值。交互式配置可选但重要如果你想裁剪内核比如为嵌入式系统移除不需要的驱动可以使用menuconfig工具。make menuconfig这会打开一个基于ncurses的文本图形界面。你可以在这里浏览和修改配置。例如在Device Drivers里可以去掉不用的硬件支持。对于初次尝试建议先保持默认直接退出并保存。4.2 编译内核编译内核是一个耗时较长的过程取决于你的CPU核心数。# -j 参数指定并行编译的作业数通常设置为 CPU 核心数1以加快编译速度。 # 使用 nproc 命令获取核心数。 make -j$(($(nproc)1))这个过程可能会持续几十分钟到数小时。编译完成后主要产物在arch/x86/boot/目录下bzImage压缩的内核镜像文件这就是我们要引导的“内核”。4.3 使用QEMU测试新内核为了测试新内核我们需要一个根文件系统rootfs。这里我们使用一个极简的、预先制作好的BusyBox根文件系统镜像。准备BusyBox根文件系统这是一个简化步骤实际制作根文件系统是另一个复杂话题# 创建一个目录用于构建根文件系统 mkdir -p ~/oslab/rootfs cd ~/oslab # 下载静态链接的BusyBox二进制文件请根据你的架构选择这里以x86_64为例 # 你可以从 https://busybox.net/downloads/binaries/ 找到最新版本 wget https://busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busybox chmod x busybox # 在rootfs中创建基本的Linux目录结构并复制BusyBox cd rootfs mkdir -p bin dev etc home proc sys tmp usr/bin usr/sbin cp ../busybox bin/ # 创建初始化脚本 init cat init EOF #!/bin/sh echo Booting with custom kernel... mount -t proc none /proc mount -t sysfs none /sys mount -t tmpfs none /tmp echo -e \nWelcome to My Custom Linux!\n exec /bin/sh EOF chmod x init # 使用 find 和 cpio 创建initramfs镜像 find . | cpio -o -H newc | gzip ../initramfs.cpio.gz使用QEMU启动cd ~/oslab qemu-system-x86_64 \ -kernel /path/to/your/linux-6.6/arch/x86/boot/bzImage \ -initrd initramfs.cpio.gz \ -append consolettyS0 nokaslr \ -nographic参数解释-kernel指定编译好的内核镜像路径。-initrd指定初始内存磁盘镜像即我们刚制作的根文件系统。-append传递给内核的命令行参数。consolettyS0将控制台重定向到串口-nographic模式下QEMU会模拟串口输出到当前终端。nokaslr禁用内核地址空间布局随机化便于调试。-nographic不使用图形界面所有输出到当前终端。进入系统如果一切顺利QEMU会启动并在最后出现一个BusyBox的shell提示符/ #。恭喜你你正在运行你自己编译的Linux内核你可以尝试一些基本的命令如ls,ps。输入poweroff或按CtrlA然后按X来退出QEMU。5. 常见问题与排查思路内核开发过程中你会遇到各种编译错误、模块加载失败和系统启动问题。以下是一些典型问题的排查思路。问题现象常见原因解决思路make编译模块时失败提示找不到内核头文件1. 未安装linux-headers包。2.KERNEL_DIR路径错误。1. 运行sudo apt install linux-headers-$(uname -r)。2. 检查Makefile中KERNEL_DIR是否指向正确的/lib/modules/$(uname -r)/build该目录应是一个有效的符号链接。insmod失败提示Invalid module format模块编译所用的内核版本与当前运行的内核版本不匹配。确保用于编译模块的linux-headers版本与uname -r显示的版本完全一致。在开发机上编译的模块通常不能直接加载到其他版本的内核上。insmod失败提示Operation not permitted权限不足。使用sudo执行insmod。内核编译过程中make报错退出1. 缺少必要的开发库如libssl-dev,libelf-dev。2. 源码损坏或不完整。3. GCC版本不兼容。1. 根据错误信息安装对应的-dev包。2. 重新下载并解压内核源码。3. 检查内核源码的Documentation/Changes文件查看推荐的GCC等工具链版本。QEMU启动后黑屏或无输出1. 内核镜像路径错误。2. 内核配置缺少必要的驱动如块设备、文件系统支持。3. 命令行参数错误特别是控制台设置。1. 仔细检查-kernel参数后的路径。2. 在make menuconfig中确保启用了CONFIG_BLK_DEV_INITRD支持initrd和CONFIG_VIRTIO等虚拟化驱动如果使用virtio磁盘。对于最简单的测试使用我们上面的-initrd方式最可靠。3. 确保-append中包含consolettyS0并与-nographic配合使用。可以尝试去掉nokaslr先看看。系统启动后报Kernel panic - not syncing: VFS: Unable to mount root fs内核找不到或无法挂载根文件系统。1. 检查-initrd指定的镜像文件路径和格式是否正确。2. 内核配置中必须启用CONFIG_BLK_DEV_RAM和CONFIG_BLK_DEV_INITRD。3. 确保initramfs镜像制作正确使用file命令查看是否为gzip压缩的cpio档案。6. 最佳实践与工程建议从“能运行”到“能开发”需要遵循良好的工程实践尤其是在内核这种对稳定性和安全性要求极高的环境中。6.1 代码安全与稳定性永远假设运行在内核态内核模块中的代码拥有最高权限一个空指针解引用或数组越界就可能导致整个系统崩溃内核恐慌。用户空间的Segmentation Fault在这里是致命的。谨慎使用printk虽然它是调试利器但频繁打印会影响性能。使用合适的日志级别KERN_DEBUG,KERN_INFO,KERN_WARNING,KERN_ERR。生产代码中应避免KERN_DEBUG。资源管理模块加载时分配的资源内存、设备号、中断线等必须在模块卸载时完全释放。否则会导致资源泄漏即使模块卸载后这些资源也无法被系统回收。并发与锁内核是多线程并发执行的。访问共享数据时必须使用内核提供的同步机制如自旋锁spinlock_t、互斥锁mutex来防止竞态条件。6.2 开发与调试流程版本控制使用git管理你的内核模块源码和任何对主线内核的修改。每次修改前提交便于回溯。增量编译修改内核配置或代码后重新编译时使用make -jN即可make系统会自动检测更改。使用KGDB进行内核调试对于复杂问题需要源码级调试。可以配置内核启用CONFIG_KGDB并通过串口或网络将调试信息发送到另一台机器上的GDB进行单步调试、查看变量等操作。这是内核开发的终极调试手段。利用proc和sysfs对于需要从用户空间动态查看或调整的内核参数可以考虑通过/proc或/sys文件系统暴露接口这比重新编译模块或内核要灵活得多。6.3 生产环境考量回归测试对内核或驱动程序的任何修改都必须进行严格的测试包括压力测试、长时间运行测试和不同硬件平台的兼容性测试。签名与安全启动为分发或生产环境准备的内核或模块应考虑进行数字签名以兼容UEFI安全启动Secure Boot等安全机制。文档与注释内核代码的注释风格kernel-doc有特定规范。为你添加的API或重要的数据结构添加清晰的注释是融入开源社区的基本素养。上游提交如果你修复了一个bug或实现了一个有用的功能并且具有通用性可以考虑向Linux内核邮件列表提交补丁贡献给社区。这是一个复杂但值得尊敬的过程。7. 总结与学习路线通过本文你已经完成了基于Linux内核进行操作系统开发的核心入门旅程从理解基本概念到搭建环境再到编写、编译和运行内核模块最后甚至编译并引导了一个自定义的内核。这个过程揭开了操作系统神秘面纱的一角。本文掌握的关键点环境搭建准备了包含完整工具链的Linux开发环境。内核模块开发理解了模块的生命周期init/exit学会了使用printk输出掌握了模块编译、加载、卸载的全流程。内核编译与定制体验了从获取源码、配置、编译到使用QEMU测试的完整内核构建流程。问题排查建立了对常见编译、加载、启动问题的基本排查思路。下一步可以深入学习的方向深入内核子系统选择一个你感兴趣的子系统深入学习如进程调度kernel/sched/、内存管理mm/、虚拟文件系统VFSfs/或网络协议栈net/。阅读源码是最好的老师。设备驱动开发这是内核开发中最常见的需求。学习Linux设备模型、字符设备驱动、平台设备驱动等。可以尝试为一个简单的虚拟硬件或已有的USB小设备编写驱动。系统调用理解用户空间如何通过软中断陷入内核并尝试添加一个自己的简单系统调用。制作完整的根文件系统本文使用了极简的BusyBox initramfs。学习使用Buildroot或Yocto Project来构建一个包含更多工具和库的完整根文件系统。参与开源社区订阅Linux内核邮件列表阅读其他人的补丁尝试理解内核开发的协作模式和代码审查文化。操作系统开发是一条漫长而充满挑战的道路但每一步实践都会让你对计算机系统的理解更加深刻。建议你以本文为起点选择一个细分方向动手实践遇到问题善用内核源码、Documentation/目录以及社区资源。当你第一次成功让一个自己编写的驱动控制硬件或者优化了一个内核参数使系统性能提升时那种成就感将是无可替代的。

相关新闻

MySQL零基础入门:从安装到核心概念与实战避坑指南

MySQL零基础入门:从安装到核心概念与实战避坑指南

1. 从零开始,先搞清楚 MySQL 到底能帮你做什么如果你刚接触编程或者数据处理,听到“数据库”这个词可能会觉得有点抽象。简单来说,MySQL 就是一个帮你高效、安全地“存东西”和“找东西”的软件。你写的程序、网站、App 产生的用户信息、订单…

2026/7/25 23:53:27阅读更多 →
GPT-5.6 智能客服落地实践:RAG、Agent、效果评测与成本优化

GPT-5.6 智能客服落地实践:RAG、Agent、效果评测与成本优化

工具太多不知道怎么选、收藏太多真正用的太少、查找成本太高、工具入口分散、缺少适合企业的整理方式——这五个问题困扰着大多数想落地智能客服的技术负责人。之前在(titiai.cn)上查了各模型在知识检索、文档整理等场景的最新横评数据,自己动手在一个客服项目上跑了…

2026/7/25 23:53:27阅读更多 →
animatescroll.js核心功能解析:30+滚动动画效果任你选

animatescroll.js核心功能解析:30+滚动动画效果任你选

animatescroll.js核心功能解析:30滚动动画效果任你选 【免费下载链接】animatescroll.js A Simple jQuery Plugin for Animating Scroll 项目地址: https://gitcode.com/gh_mirrors/an/animatescroll.js animatescroll.js是一款轻量级jQuery插件,…

2026/7/25 23:53:27阅读更多 →
扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析

扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析

更多请点击: https://kaifayun.com 第一章:扣子文件处理机器人部署避坑清单(2024最新版):从权限配置到异常熔断全链路解析 权限配置的三大致命误区 扣子平台对文件类机器人强制要求细粒度权限校验。常见错误包括&…

2026/7/26 1:09:41阅读更多 →
104、Arduino Nano 33 BLE Sense的语音识别案例

104、Arduino Nano 33 BLE Sense的语音识别案例

104、Arduino Nano 33 BLE Sense的语音识别案例 从一次深夜调试说起 凌晨两点,我盯着串口监视器里不断跳出的“Unknown”字样,差点把这块Nano 33 BLE Sense扔出窗外。麦克风焊盘被我反复按压了十几遍,焊锡都快磨亮了,结果还是识别不出“yes”和“no”这两个最简单的词。后…

2026/7/26 1:09:41阅读更多 →
亚马逊两款《古墓丽影》游戏发售时间确定:《亚特兰蒂斯遗产》2 月 12 日,《催化剂》2028 年

亚马逊两款《古墓丽影》游戏发售时间确定:《亚特兰蒂斯遗产》2 月 12 日,《催化剂》2028 年

《古墓丽影》新作发售时间调整亚马逊游戏业务负责人杰弗里加蒂斯向《游戏商业》证实,旗下两款《古墓丽影》游戏的发售时间有了新安排。原本预计 2027 年推出的游戏计划有变,《亚特兰蒂斯遗产》将于 2 月 12 日发售,而《催化剂》则会在 2028 年…

2026/7/26 1:07:40阅读更多 →
微软出手!阻止 Windows 11 用户被 LG 显示器迈克菲试用弹窗狂轰滥炸

微软出手!阻止 Windows 11 用户被 LG 显示器迈克菲试用弹窗狂轰滥炸

微软整治:叫停 LG 显示器迈克菲弹窗骚扰近期,微软采取行动干预,旨在阻止使用 LG 显示器的 Windows 11 用户遭受迈克菲(McAfee)试用弹窗的频繁干扰。此前,当 Windows 11 电脑连接 LG 显示器后,会…

2026/7/26 1:07:40阅读更多 →
韩系高机能水乳(天气丹风格)源头工厂ODM内参:拆解仿生皮脂膜工艺与利润护城河

韩系高机能水乳(天气丹风格)源头工厂ODM内参:拆解仿生皮脂膜工艺与利润护城河

拿着某韩系头部高机能修复水乳礼盒图来找我打样,张嘴就要“工艺级复刻”,做出来料体分层、吸收黏乎,客户用两天反馈不适——这种单子我一个月拒掉十几家。说白了,搞懂仿生皮脂膜构建和液晶乳化工艺的门槛,才配谈“源头…

2026/7/26 1:07:40阅读更多 →
3步实战:用SyncTrayzor轻松搭建Windows跨设备文件同步系统

3步实战:用SyncTrayzor轻松搭建Windows跨设备文件同步系统

3步实战:用SyncTrayzor轻松搭建Windows跨设备文件同步系统 【免费下载链接】SyncTrayzor Windows tray utility / filesystem watcher / launcher for Syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/SyncTrayzor SyncTrayzor是Windows系统上最优雅…

2026/7/26 1:07:40阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →