TinyPXE实战:从原理到部署,一站式解决无盘启动与网络安装难题
1. 从“网络不存在”到“无盘启动”一个被低估的运维场景最近在折腾几台老旧的测试机每次重装系统都得翻箱倒柜找U盘插拔、刻录、等待一套流程下来半天时间就没了。更头疼的是有时候需要批量部署几台配置完全相同的机器U盘对拷效率低镜像一致性还难保证。就在我对着“网络不存在或尚未启动”的提示框发愁时一个老朋友的名字跳了出来——网络启动。这可不是什么新鲜技术PXEPreboot eXecution Environment协议在机房和网吧里已经服役了快二十年。但传统PXE服务器搭建动辄需要配置DHCP、TFTP、HTTP还得处理好与现有网络的冲突门槛不低。直到我重新审视了TinyPXE。它不是一个庞大的服务器套件而是一个精巧的、集成了所需全部服务的Windows单文件程序。它的核心价值在于“轻量”和“一体化”。你不需要在服务器上安装配置一堆角色也不用担心DHCP作用域冲突搞瘫整个办公网。TinyPXE允许你在一台普通的Windows电脑上快速构建一个独立的、临时的网络启动环境专门服务于你的那几台待安装机器。这对于开发测试、批量系统部署、甚至打造一个临时的无盘运行环境比如运行Live CD镜像或轻量级系统简直是神器。今天我就结合自己搭建无盘工作站的实际经历把TinyPXE从原理到踩坑再到实战优化的全过程拆解清楚。2. TinyPXE核心原理一张网卡背后的启动交响曲要玩转TinyPXE不能只停留在“点开即用”的层面必须理解它背后是如何协调工作的。这能让你在出问题时快速定位是哪个环节“掉了链子”。2.1 PXE启动的标准流程与TinyPXE的集成标准的PXE启动是一个严格的“四步舞”DHCP Discover/Offer客户端开机网卡PXE ROM广播一个DHCP Discover包。DHCP服务器回应Offer其中必须包含两个关键选项next-server指向TFTP服务器IP和bootfile-name初始引导文件名通常是undionly.kpxe或ipxe.efi。TFTP下载引导文件客户端根据DHCP提供的信息通过TFTP协议从next-server下载指定的引导文件。这个文件很小一般是几十到几百KB。引导程序执行与配置获取下载的引导文件如iPXE被执行。它可能会再次通过TFTP或更高效的HTTP协议从一个预设的脚本文件如boot.ipxe中读取进一步的启动菜单和配置。加载最终镜像根据脚本配置引导程序通过HTTP、iSCSI甚至FTP等协议加载最终的操作系统内核如vmlinuz、初始内存盘initrd.img或完整的磁盘镜像boot.wim。TinyPXE的巧妙之处在于它将这四步中所需的DHCP、TFTP、HTTP三个服务集成在了一个进程里。当你运行TinyPXE并配置好网卡和启动文件后它会在你指定的网卡上监听DHCP请求并只响应来自目标客户机的请求避免干扰网络中的其他DHCP服务器。它内置的TFTP服务提供最初的引导文件。它内置的HTTP服务则用于提供体积较大的内核、镜像文件以及灵活的启动脚本。这种一体化设计把复杂的网络服务配置简化为一个图形界面的参数填写极大降低了使用门槛。2.2 “网络不存在”错误的深度排查“网络不存在或尚未启动”这个提示十有八九出现在上述流程的第一步或第二步。根据我的经验排查需要遵循以下链路第一层物理与基础网络层网线与交换机确认客户端、服务器网线已插好且连接到了同一个二层网络或VLAN。用一台正常电脑替换测试是最快的方法。防火墙关闭服务器Windows Defender防火墙或添加出入站规则放行UDP 67(DHCP)、68(DHCP Client)、69(TFTP)以及HTTP端口默认80。切记这是Windows平台下最高发的“坑”。网卡绑定确保TinyPXE的“Proxy DHCP”或“DHCP”服务绑定到了正确的物理网卡IP上而不是127.0.0.1或0.0.0.0。如果服务器有多块网卡这一点至关重要。第二层DHCP交互层网络中存在其他DHCP服务器这是最经典的冲突场景。办公室的路由器、企业级网络核心交换机通常都开启了DHCP。TinyPXE的DHCP响应可能被更快、更权威的DHCP服务器响应所覆盖。解决方案是使用“ProxyDHCP”模式这是TinyPXE的推荐用法。在这种模式下TinyPXE不分配IP地址yiaddr字段为空只负责在DHCP Offer包中提供next-server和bootfile-name这两个PXE扩展选项。客户机的IP地址由网络中已有的主DHCP服务器分配。这完美避免了地址分配冲突。搭建隔离网络将TinyPXE服务器和客户端用一台独立的小交换机连接与主网络物理隔离。客户端网卡PXE支持确认客户机BIOS/UEFI设置中已启用网络启动PXE Boot并且启动顺序中网络启动位于硬盘之前。一些老旧或特殊网卡可能需要手动开启PXE ROM。第三层TFTP传输层引导文件路径与名称检查TinyPXE中设置的“Boot File”路径和文件名是否完全正确并且该文件确实存在于程序的根目录或指定子目录下。文件名区分大小写。TFTP传输超时/阻塞Windows自带的防火墙或第三方安全软件可能会静默拦截TFTP这种“古老”的协议。确保在防火墙中为TinyPXE程序或所有程序创建规则允许UDP 69端口。也可以尝试在TinyPXE设置中增加TFTP超时时间和块大小。通过这个三层排查法绝大多数“网络不存在”的问题都能迎刃而解。我的建议是首次搭建时务必使用“ProxyDHCP”模式并彻底关闭服务器防火墙进行测试待全部流程跑通后再逐步调整防火墙规则和尝试独立DHCP模式。3. 构建无盘工作站实战从WinPE到Linux Live理解了原理并扫清了网络障碍我们就可以开始打造真正的无盘工作站了。无盘并非指完全没有本地存储而是指操作系统在运行时并不依赖于客户机自身的硬盘。所有系统文件都通过网络从服务器加载到客户端的内存中运行。这特别适合需要快速还原、统一环境、硬件异构的场景。3.1 准备核心素材引导文件与系统镜像工欲善其事必先利其器。你需要准备以下几个关键文件引导文件Boot Loaderundionly.kpxe用于传统BIOS启动的网卡。ipxe.efi用于UEFI启动的网卡。snponly.efi另一种UEFI引导文件兼容性可能不同。这些文件可以从iPXE官网或TinyPXE的发布页面找到。通常将undionly.kpxe设为默认引导文件即可。启动脚本Boot Scriptboot.ipxe或menu.ipxe。这是iPXE的“灵魂”它定义了启动菜单和每个菜单项对应的加载命令。TinyPXE的HTTP服务会提供这个脚本。系统镜像/内核Windows PE用于系统安装、维护。你需要准备boot.wim和boot.sdi文件通常从Windows ADK中获取。Linux Live CD如Ubuntu、CentOS的Live镜像。需要提取出内核vmlinuz和初始内存盘initrd.img文件。微型系统如Clonezilla再生龙、GParted等工具盘镜像通常也提供网络启动支持。完整iSCSI无盘这需要更复杂的服务端配置如Windows iSCSI Target或StarWind客户端通过iPXE连接一个远程的虚拟硬盘启动。这属于进阶玩法。3.2 配置TinyPXE服务器端假设我们将所有文件放在D:\TinyPXE目录下结构如下D:\TinyPXE\ ├── undionly.kpxe ├── ipxe.efi ├── boot.ipxe ├── winpe\ │ ├── boot.wim │ └── boot.sdi └── ubuntu\ ├── vmlinuz └── initrd.imgTinyPXE图形界面配置关键步骤“DHCP” 标签页DHCP Server如果使用独立网络在此配置IP池、网关、DNS。如果网络中有其他DHCP强烈建议勾选“ProxyDHCP”。Boot File填写undionly.kpxe。这是客户端第一步要获取的文件。“TFTP” 标签页确保TFTP服务是开启状态。根目录通常就是TinyPXE程序所在目录D:\TinyPXE。“HTTP” 标签页开启HTTP服务端口默认80。根目录同样设置为D:\TinyPXE。这样boot.ipxe脚本和各大镜像文件都能通过HTTP访问。绑定网卡在主界面下拉菜单中选择与客户端在同一网络的物理网卡对应的IP地址。3.3 编写iPXE启动脚本boot.ipxe这是实现多功能启动菜单的关键。一个基础的boot.ipxe脚本示例如下#!ipxe # 设置一些变量方便后续引用 set menu-timeout 5000 set submenu-timeout 0 # 主启动菜单 :start menu PXE Boot Menu - TinyPXE Server item --gap -- ------------------------- 系统维护工具 ------------------------- item winpe 启动 Windows PE 11 item clonezilla 启动 Clonezilla 磁盘克隆 item --gap -- ------------------------- Linux 发行版 ------------------------- item ubuntu-live 启动 Ubuntu 22.04 Live item memtest 运行 MemTest86 内存检测 item --gap -- ------------------------- 其他选项 ------------------------- item shell 进入 iPXE 命令行 item reboot 重启客户端 item exit 从网络启动退出继续本地启动 choose --timeout ${menu-timeout} --default winpe selected goto ${selected} # 菜单项定义 :winpe echo Loading Windows PE... # 使用 wimboot 协议加载 Windows PE。注意路径是HTTP路径。 kernel http://${next-server}/wimboot initrd http://${next-server}/winpe/boot.wim boot.wim initrd http://${next-server}/winpe/boot.sdi boot.sdi boot || goto failed :ubuntu-live echo Loading Ubuntu Live... kernel http://${next-server}/ubuntu/vmlinuz initrdinitrd.img root/dev/ram0 ramdisk_size1500000 ipdhcp urlhttp://${next-server}/ubuntu/ubuntu-22.04-desktop-amd64.iso toram initrd http://${next-server}/ubuntu/initrd.img boot || goto failed :clonezilla echo Loading Clonezilla... kernel http://${next-server}/clonezilla/live/vmlinuz initrdinitrd.img bootlive live-config usernameuser unionoverlay components noswap eddon nomodeset nodmraid localeszh_CN.UTF-8 keyboard-layoutsNFS ocs_live_run\ocs-live-general\ ocs_live_extra_param\\ ocs_live_batchno net.ifnames0 nosplash noprompt initrd http://${next-server}/clonezilla/live/initrd.img boot || goto failed :memtest echo Loading MemTest86... kernel http://${next-server}/memtest/memtest.efi boot || goto failed :shell echo Dropping to iPXE shell... shell :reboot reboot :exit exit :failed echo Booting failed, dropping to shell... shell这个脚本创建了一个带分类的文本菜单。关键在于每个菜单项下的kernel和initrd命令它们指定了通过HTTP加载哪个内核和初始化文件并传递了正确的启动参数。注意Linux Live镜像的启动参数kernel行后面的一长串因发行版和版本而异最准确的获取方式是查阅该Live镜像官方文档中关于网络启动的说明或从其ISO光盘的/boot/grub/grub.cfg等配置文件中提取。4. 高级应用与性能调优让无盘更快更稳当基础功能跑通后你会开始追求更快的启动速度和更稳定的运行体验。这里有几个从实战中总结的优化点。4.1 启用HTTP压缩与缓存TFTP协议简单但效率极低不适合传输大文件。iPXE原生支持HTTP这是性能的关键。我们可以进一步优化服务器端启用GZIP压缩对于boot.ipxe脚本、内核 (vmlinuz) 和初始内存盘 (initrd.img) 这类文本或可压缩二进制文件在HTTP服务器端启用压缩可以显著减少传输数据量。虽然TinyPXE内置的HTTP服务器功能简单但你可以将其根目录指向Nginx或Apache的目录利用这些专业服务器的压缩和缓存功能。客户端iPXE内置镜像对于最常用的引导文件可以编译一个自定义的iPXE镜像将boot.ipxe脚本直接嵌入到undionly.kpxe或ipxe.efi中。这样客户端在DHCP后直接执行的内置脚本省去了额外下载脚本文件的HTTP请求能加快菜单出现速度。这需要从源码编译iPXE属于高阶玩法。4.2 针对大型镜像的传输优化Windows的boot.wim或完整的ISO镜像可能达到几个GB。在千兆网络下加载到客户端内存也需要时间。拆分与精简WIM镜像对于WinPE尽可能使用定制的、删减了非必要组件的WIM镜像体积能从几百MB降到几十MB。使用iSCSI for Windows无盘如果目标是让多台客户端无盘运行完整的Windows系统TFTP/HTTP加载镜像到内存的方式就不适用了。此时应搭建iSCSI Target服务器为每个客户端提供一个独立的虚拟磁盘。客户端通过iPXE脚本使用sanboot命令连接各自的iSCSI目标然后就像从本地硬盘一样启动。TinyPXE此时仅扮演提供初始引导和iSCSI连接信息的角色。网络与交换机考量确保服务器和客户端都连接到千兆交换机端口。如果客户端众多服务器网卡可以考虑链路聚合LACP或多队列优化硬盘应使用SSD以应对随机读取压力。4.3 安全性与管理性增强菜单密码保护可以在boot.ipxe脚本的menu命令中加入--key参数为进入特定菜单项设置按键密码防止误操作。客户端标识与自动部署iPXE脚本可以读取客户端的MAC地址${netX/mac}根据MAC地址的不同自动跳转到不同的启动项实现针对特定机器的自动化部署流程。日志与诊断在TinyPXE的“Log”标签页开启详细日志记录。当客户端启动失败时查看这里的日志往往能直接定位到是DHCP、TFTP还是HTTP环节出了问题。5. 常见故障与精准排错指南即使按照步骤操作也难免会遇到问题。下面是一个快速排错对照表涵盖了从开机到进入系统前的主要故障点故障现象可能原因排查步骤客户端提示“No DHCP offer received”或直接跳过网络启动1. 网络物理连接不通。2. TinyPXE DHCP未启动或绑定网卡错误。3. 防火墙阻止UDP 67/68端口。4. 存在其他DHCP服务器且响应更快。1. 检查网线、交换机。2. 确认TinyPXE已启动DHCP/ProxyDHCP并绑定到正确IP。3. 关闭防火墙测试。4. 使用ProxyDHCP模式或搭建隔离网络。客户端获取IP后提示“TFTP timeout”或“File not found”1. TFTP服务未运行或端口被阻。2. 引导文件名/路径在TinyPXE中设置错误。3. 防火墙阻止UDP 69端口。4. 客户端与服务器不在同一子网TFTP通常不可路由。1. 检查TinyPXE TFTP服务状态。2. 核对“Boot File”名称确认文件存在于TFTP根目录。3. 关闭防火墙测试。4. 确保客户端IP与TinyPXE服务IP在同一网段。成功下载引导文件如ipxe.efi后黑屏或卡住1. 引导文件与客户端固件模式不匹配BIOS vs UEFI。2. iPXE引导文件损坏或不兼容。3. 未成功下载后续的boot.ipxe脚本。1. 为BIOS和UEFI分别准备undionly.kpxe和ipxe.efi并在DHCP中根据客户端ARCH类型动态响应。2. 重新下载官方引导文件。3. 查看TinyPXE HTTP访问日志确认客户端是否请求了boot.ipxe。能看到iPXE启动菜单但选择项后失败1.boot.ipxe脚本中存在语法错误。2. 脚本中指定的内核(vmlinuz)、镜像(boot.wim)路径错误。3. 内核启动参数不正确。4. HTTP服务无法访问或文件不存在。1. 在iPXE命令行shell下手动输入chain http://服务器IP/boot.ipxe测试脚本。2. 使用imgstat命令查看已下载的文件。3. 在服务器端用浏览器直接访问http://服务器IP/路径/文件验证可下载。4. 核对Linux启动参数特别是initrd和root参数。Windows PE启动后蓝屏或提示缺少文件1.boot.wim或boot.sdi文件不匹配或损坏。2. 使用了不兼容的wimboot版本。3. WIM镜像内的驱动程序不兼容当前硬件。1. 确保boot.wim和boot.sdi来自同一版本的ADK或PE生成工具。2. 尝试更新iPXE到最新版其内置的wimboot也会更新。3. 为PE注入目标机器的网卡、存储控制器驱动。一个关键的调试技巧当启动过程卡在任何阶段尝试在客户端启动时迅速按下CtrlB键这会中断iPXE的自动流程进入iPXE命令行。在这里你可以手动执行dhcp、chain、kernel、initrd等命令并观察每一步的输出来精确定位问题这是比任何日志都直接的排错手段。折腾TinyPXE和无盘启动的过程更像是在理解计算机最底层的引导逻辑和网络协议如何协同工作。它可能不会成为你每天使用的工具但当你需要快速部署一个实验室、统一一批测试环境或者只是不想再为每一台机器准备安装介质时这个方案就会展现出巨大的价值。从最初的“网络不存在”到最终流畅地弹出多功能启动菜单每一步的排错和优化都是对网络和系统知识的一次巩固。

相关新闻

rust for begginers

rust for begginers

Rust 初学者指南,从安装到核心概念,帮你快速上手。 一、安装 Rust bash # 官方推荐方式(使用 rustup) curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh# 验证安装 rustc --version cargo --version 二、第一个程序…

2026/10/13 14:24:39 阅读更多 →
快鲸_【v2.1.0】_云商店-智慧园区云平台是什么?

快鲸_【v2.1.0】_云商店-智慧园区云平台是什么?

一、品牌定位:快鲸在智慧园区中的定位与受众快鲸定位为面向园区管理方、运维团队与入驻企业的轻量化一体化智能运营中枢。产品定位清晰:为产业园区、工业园区、科技园区与物流园区提供可快速执行的管理平台。功能点与卖点体现在四大方向:安全…

2026/9/15 7:24:46 阅读更多 →
从Claude Code源码泄漏看AI Agent架构:TypeScript工程化实践与安全设计

从Claude Code源码泄漏看AI Agent架构:TypeScript工程化实践与安全设计

1. 项目概述:从一次“意外”的源码泄漏说起最近,AI圈子里发生了一件不大不小但足够引人深思的事:Anthropic公司内部一个名为“Claude Code”的AI Agent项目源码,在GitHub上被意外公开了。虽然很快被删除,但互联网是有记…

2026/10/5 18:27:50 阅读更多 →

最新新闻

Claude Code 弃用 npm 安装:迁移到原生安装器完整指南

Claude Code 弃用 npm 安装:迁移到原生安装器完整指南

如果你今天打开终端敲下claude,看到的不是熟悉的启动界面,而是一段黄字横幅提示——npm installation is deprecated,那你大概率已经升级到了 Claude Code 2.1.15。这不是你个人环境出了问题,也不是什么系统弹窗故障,而…

2026/10/15 22:12:43 阅读更多 →
2026上海展台搭建避坑指南:如何选择靠谱服务商?从上海御全展览看六大采购要点

2026上海展台搭建避坑指南:如何选择靠谱服务商?从上海御全展览看六大采购要点

2026上海展台搭建避坑指南:展台设计搭建如何选?从上海御全展览看六大采购要点署名:上海御全展览展示服务有限公司前言:效果图漂亮,现场为什么还会出问题?企业参加展会,需要协调展位设计、材料加…

2026/10/15 22:12:43 阅读更多 →
电源管理芯片采购:DC-DC和LDO的渠道与选型

电源管理芯片采购:DC-DC和LDO的渠道与选型

电源管理芯片(PMIC)是每块板子的"心脏"——DC-DC、LDO、PMU一出问题,整板宕机。电源芯片又是参数造假的重灾区:虚标效率、虚标电流、虚标输入范围,上机一切正常,满负荷和高温下原形毕露。电源芯片…

2026/10/15 22:12:43 阅读更多 →
成都GEO服务商怎么挑:按服务深度分型,别被报价带偏

成都GEO服务商怎么挑:按服务深度分型,别被报价带偏

最近两年,企业获取客户的路径正在悄悄转移。过去用户习惯在搜索引擎里敲关键词,如今越来越多的人直接问DeepSeek、豆包这类AI助手"帮我推荐一家"。当推荐入口从搜索框挪到对话窗口,一批做GEO(生成式引擎优化&#xff09…

2026/10/15 22:12:43 阅读更多 →
Bootstrap全局CSS样式详解:排版、表格与图片的默认规则与实战技巧

Bootstrap全局CSS样式详解:排版、表格与图片的默认规则与实战技巧

1. 为什么全局CSS样式值得单独拎出来讲很多人学Bootstrap的路径是这样的:先找个模板,把按钮、表单、导航栏的类名抄一遍,页面能跑起来就收工。等到哪天设计师给了一张新稿子,要求“这个标题在移动端小一点、在桌面端大一点”&…

2026/10/15 22:12:43 阅读更多 →
PyTorch同维度张量matmul:规则、广播与性能优化实战

PyTorch同维度张量matmul:规则、广播与性能优化实战

1. 为什么同维度张量乘法值得单独拎出来说刚接触 PyTorch 的人,十个里有八个会在torch.matmul上栽跟头。原因很简单:torch.mul、torch.mm、torch.matmul、运算符、torch.bmm这几个东西名字长得像,功能又互相重叠,文档里一句话带过…

2026/10/15 22:11:42 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →