Linux root密码忘记?用GRUB引导重置的实战指南
机房跑着一堆 Linux突然有一天 root 密码不记得了或者交接文档里就没写这个密码。大部分人的第一反应是重装系统但只要你还能摸到物理机或者 IPMI 控制台这个局面根本不需要动系统。所谓破解root 密码在 Linux 的世界里更准确的说法应该是重置因为系统本身留下了正规的恢复通道只是需要你绕开正常的登录流程直接进到一个能改密码的环境里。这篇文章写给谁运维、开发、实验室管理甚至只是在家玩 CentOS 和 Ubuntu 的折腾党。内容涵盖 RHEL/CentOS 系的 rd.break 大法、Debian/Ubuntu 系的 init/bin/bash 救援法顺带把 MySQL/MariaDB 的 root 密码重置也一起讲了因为排障的时候系统和数据库经常是一起出问题的。整个过程我会把每一步的原理、为什么这样操作、以及容易翻车的细节都拆开说保证你照着做能落地。1. 重置 root 密码之前先把这三件事想清楚1.1 破解和重置其实差在了入口上很多人一听到破解 root 密码就想到暴力穷举、彩虹表、内核漏洞这些词实际上运维场景里 99% 的 root 密码重置跟破解密码哈希没有半毛钱关系。 Linux 把 root 密码的哈希存放在 /etc/shadow 里正常情况下你登录系统后输入密码系统会计算这个输入的哈希值和 shadow 文件里的值比对。但要重置密码根本不需要去解这个哈希因为系统启动过程中只要你能在引导阶段插入干预就能拿到一个不经过登录认证的 shell。所以你在做这件事之前需要明确一个事实你没有在破解密码本身而是在利用 BIOS/GRUB 引导流程里的可干预性。只要机器允许你编辑内核启动参数密码就是一层纸。真正的破解那是没有物理访问权、没有引导权的前提下才需要做的事情。1.2 动手前必须确认的前置条件别一上来就重启服务器先确认下面几件事都满足不然你可能把自己锁在机器外面有可用的控制台入口物理键盘接显示器、IPMI/BMC 的远程 KVM、或者云厂商的 VNC 控制台都必须能进并且能看到 GRUB 菜单。纯 SSH 登录是做不到的因为系统引导已经完成了你干预不了内核参数。确认磁盘没有做全盘加密或者你知道 LUKS 的密钥如果你的根分区用了 LUKS 加密重置密码仍然可以操作但前提是你得在引导过程中输入 LUKS 密码来解锁。如果你连 LUKS 密码都不知道那后面所有步骤都卡在解锁这一步这种情况只能找持有密钥的人。确认 GRUB 没有设置密码保护有些安全策略比较高的环境会在 GRUB 里配 username/password编辑启动菜单时必须先输入 GRUB 密码。这种环境你要是没有 GRUB 密码重置流程同样走不通。确认 SecureBoot 不会拦你大多数主流发行版对 SecureBoot 的处理是你改了内核命令行参数SecureBoot 仍然会放行因为签名校验的是内核镜像本身不是启动参数的完整性。但如果服务器开启了类似 TPM 度量启动、或者固件层面禁用了未签名引导项你可能进不了修改后的菜单项。这些前置条件里我自己踩过的坑是以为远程 KVM 能看见 GRUB结果那台老服务器的 BMC 固件输出画面延迟了三分钟启动菜单早就过去了。所以实际操作前建议先在 BMC 里进入 BIOS 界面加长 GRUB 菜单等待时间或者临时把 GRUB_TIMEOUT 改大。1.3 root 密码到底存在哪老规矩先把概念理清。Linux 的用户密码信息分两个文件/etc/passwd存放用户名、UID、GID、家目录、shell 等基本信息密码字段一般显示为 x。/etc/shadow真正存密码哈希的地方只有 root 和 shadow 组可读。shadow 文件里 root 那行长这样root:$6$7kL0N2sH$d9mQ...:19000:0:99999:7:::第二段是密码哈希$6$ 表示 SHA-512 加密$y$ 是 yescrypt 算法新版本 Debian/Ubuntu 常见$1$ 是 MD5。如果这个字段显示为!或者*则表示该账户被锁定无法用密码登录。知道这个结构有什么用后面改密码时你其实有两种选择一种是老老实实运行 passwd 命令系统会帮你生成合法的哈希并写入 shadow另一种是手动改 /etc/shadow 里的字段。我强烈建议选 passwd原因后面讲 Debian 系的时候会具体说明。2. RHEL/CentOS 系主流重置法rd.break 带来的 dracut 紧急 shellRHEL/CentOS 7、8、9包括 Rocky Linux、AlmaLinux 这些下游发行版最经典的重置 root 密码方法是往内核启动参数里加一个rd.break。它的作用是在 dracut 构建的 initramfs 接管系统、但还没切换到真正根文件系统的时候弹出 break 点给你一个switch_root:/#的紧急 shell。这一步发生在系统进入正常的 multi-user 环境之前你不需要输入任何密码就能进去。2.1 编辑 GRUB 启动项的完整操作过程是这样的重启机器在 GRUB 菜单出现时快速按 e 进入编辑模式。菜单停留时间默认只有几秒错过的话就再重启一次。找到以linux16旧版 CentOS 7或linuxefiUEFI 引导开头的那一行这一行参数很长包含 vmlinuz 路径、root 分区定位、各种内核参数。把光标移到这一行的末尾加一个参数rd.break。注意前面要有空格。按 CtrlX 或 F10 启动这个修改过的菜单项。启动过程中你会看到系统走到 initramfs 阶段后停下来出现类似这样的提示符switch_root:/#到了这一步你已经拥有了一个临时的、但权限足够大的 shell。这个 shell 运行在内存里的 initramfs 环境中还没有真正切到硬盘上的根文件系统。2.2 重挂 /sysroot 并 chroot 改密码在 dracut 的紧急 shell 里硬盘上的真实根文件系统被挂载在/sysroot目录下但默认是只读挂载。直接改密码你会得到 read-only file system 的错误。所以第一步先重挂为可写mount -o remount,rw /sysroot然后用 chroot 把自己切入到真实的根文件系统chroot /sysroot这时候你的目录已经变成硬盘上的/了可以像平时登录系统后一样操作。执行passwd root系统会提示你输入两次新密码。输入时屏幕不显示字符这不是键盘坏了自己注意输入一致。改完后别急着退出还有一个关键的善后步骤。如果你刚才进入时没有在内核参数里加enforcing0那么系统仍然处于 SELinux enforcing 状态。你在 chroot 环境下修改了 /etc/shadow这个文件的 SELinux 上下文可能不对重启后系统会因为文件标签错误而拒绝正常启动或者出现各种服务起不来的诡异问题。所以要在 chroot 环境里创建一个标记文件touch /.autorelabel这个文件的含义是下次系统启动时强制对所有文件系统执行一次 SELinux 重新打标签。这一步耗时可能较长视分区大小从几分钟到十几分钟不等但能保证你的修改被正确纳入安全上下文。然后连续退出exit exit或者直接reboot -f系统会自动重启正常情况下你就能用新密码登录 root 了。2.3 为什么有人推荐同时加 enforcing0我在不少恢复教程里看到过一种操作在编辑内核参数时不仅加rd.break还会加一个enforcing0。这两者的组合效果是系统以 SELinux 宽松模式进入你改完密码后不需要 touch /.autorelabel也不用等待全盘重打标签的漫长过程。两种方式怎么选我的建议是如果你的机器上跑着重要业务、不能忍受重启后额外花十几分钟做 autorelabel那就加enforcing0改完密码直接重启进入后续再自己手动恢复 SELinux enforcing 模式。如果你的情况是重置完密码机器要重新部署那我推荐老老实实走 autorelabel这是最不容易留隐患的路径。另外要提一个容易漏掉的细节不管你有没有加 enforcing0改动内核参数都只是临时生效只对这一次启动有效。重启后 GRUB 会恢复正常参数不需要你改回来。3. Debian/Ubuntu 系init/bin/bash 单用户救援的利与弊Debian 和 Ubuntu 是另一大分支虽然它们也是 GRUB 启动但走的思路和 rd.break 不太一样。你可以用init/bin/bash让内核在挂载根文件系统后直接启动一个 bash而不是启动 systemd/PID1这样既绕过了登录过程也跳过了所有守护进程。这个方法对 Debian、Ubuntu、以及很多基于它们的国产发行版都有效。3.1 从 GRUB 的 linux 行下手操作同样从 GRUB 菜单按 e 开始。找到以linux开头的那一行典型的 Ubuntu 长这样linux /boot/vmlinuz-5.15.0-86-generic rootUUIDxxxxxx ro quiet splash你需要做两个修改把参数里的ro改成rw让内核在挂载根目录时直接以读写方式挂载省得进 shell 后再手动重挂。也可以不改进 shell 后执行 mount -o remount,rw /但多一步不如少一步。在行尾添加init/bin/bash。按 CtrlX 启动后系统会直接掉进一个 root shell提示符类似bash: no job control in this shell root(none):/#看到 no job control 提示很正常因为你没有完整的系统初始化环境后台任务管理什么的都用不了但执行改密码命令绰绰有余。3.2 进 shell 后的密码处理逻辑到了这个 bash 里第一件事是确认根文件系统确实是可写的执行 mount 或者直接尝试 passwd。如果你的 awk 过程忘了把 rw 加上现在补一下mount -o remount,rw /然后运行passwd root输入两遍新密码即可。这里我要特别强调一下别因为图省事去手动编辑 /etc/shadow。网上有些教程会让你把 root 那行的密码哈希字段删掉、改成空然后恢复后用无密码登录再自己设置密码。这个做法风险极高新版系统的 PAM 配置可能直接禁止空密码登录更别提你把哈希搞错格式导致系统识别不了账户。用 passwd 命令生成哈希系统会按当前默认算法计算并处理好各字段的轮换规则。这是最稳妥的方案。3.3 用 single 或 systemd.unitrescue.target 的坑有人会问既然 Ubuntu 有单用户模式 / recovery mode直接进那个不好吗要小心systemd 体系的单用户模式rescue.target会要求你输入 root 密码因为 systemd 启动到 rescue 之前会请求管理员认证。你要是在忘记了 root 密码的场景下用 rescue结果就是卡在密码提示只能再重启一次。这也是为什么在找回 root 密码的场景里init/bin/bash比 rescue.target 更直接——它不是通过 systemd 的认证流程而是直接替换了 PID1整个登录机制就被跳过了。不过在选定 init/bin/bash 时也有一点要注意因为 PID1 被替换你等于绕过了文件系统挂载、网络服务初始化、设备节点配置这些流程。改完密码后别指望这个系统状态能直接继续跑业务必须重启回正常模式。4. 不只是系统给 MySQL 和 MariaDB 的 root 做规范复位系统 root 密码解决了但很多真实场景里你接手的机器除了 Linux 系统密码不知道数据库的 root 密码也一并丢了。MySQL 和 MariaDB 的密码重置原理和系统层面不一样但也有一套正规方法。这套方法在热词里出现频率极高因为数据库出问题往往和服务器密码问题是前后脚的事。4.1 停库并进入 skip-grant-tables 模式MySQL/MariaDB 在启动时如果加了--skip-grant-tables参数启动后会直接忽略权限表任何用户都能以 root 身份无密码连进数据库。这当然很危险所以连接时要顺手加上--skip-networking让它只允许本地 socket 连接避免远程机器趁这个窗口连进来。具体操作是这样的先停止数据库服务systemctl stop mariadb如果你是 MySQL 8.0命令是 systemctl stop mysqld。然后以前台方式临时启动一个跳过权限表的进程mysqld_safe --skip-grant-tables --skip-networking 这个进程会一直挂着你操作完后要 kill 掉它再正常启动服务。有的发行版把 mysqld_safe 也改成了 mysqld注意看自己的进程名。你也可以选择修改配置文件在 [mysqld] 段下临时加上 skip-grant-tables 再 systemctl start改完再删掉重启两条路等效。4.2 在空授权模式下修改密码启动成功后不用密码直接连进去mysql -u root注意这里不需要 -p因为权限表已经被跳过了。进入 MySQL 命令行后先执行一条关键命令FLUSH PRIVILEGES;这一步很重要。因为 skip-grant-tables 模式下权限表内容没有被加载FLUSH PRIVILEGES 可以强制让 MySQL 重新加载权限表并让后续的 ALTER USER 语句生效。如果你上来直接 ALTER USER大概率报错或改了无效。然后是改密码。MySQL 8.0 和 MariaDB 的语法略有区别我把两个都列出来数据库版本重置 root 密码的语句MySQL 8.0ALTER USER rootlocalhost IDENTIFIED BY 新密码;MariaDB 10.4ALTER USER rootlocalhost IDENTIFIED BY 新密码;MariaDB 10.2 及更老SET PASSWORD FOR rootlocalhost PASSWORD(新密码);如果你想兼容旧版客户端/旧版驱动MySQL 8.0 还可以显式指定认证插件ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 新密码;改完后退出 mysql把刚才临时用的 skip-grant-tables 进程停掉然后正常启动服务systemctl kill mysqld_safe 2/dev/null systemctl start mariadb到这一步数据库 root 密码就复位了。4.3 为什么不能只用 UPDATE mysql.user网上也会有人建议你直接 UPDATE mysql.user SET authentication_stringPASSWORD(...) WHERE Userroot然后重启。这套路在 MySQL 5.7 时代偶尔能用MySQL 8.0 之后已经完全不靠谱了原因有两个一是 MySQL 8.0 的密码字段改成了 authentication_string但真正决定认证行为的是 plugin 字段。默认的 caching_sha2_password 会做盐值处理和二次哈希你手写一个字符串进去它不认为那是一个合法的密码哈希重启后你可能得到账号无法正常认证的结局。二是 MariaDB 较新版本对 mysql.user 表的密码字段同样有自己的存储格式直接 UPDATE 很容易内容损坏。所以我的建议永远是通过 ALTER USER 来改这走的是官方认证机制插件行为、密码策略都会正确处理。有些环境打开了 validate_password 插件要求密码必须达到一定复杂度如果你的新密码太简单ALTER USER 会直接拒绝爆出一个 ERROR 1819这时候换一个复杂度够的密码就行。5. 重置完成后的善后与安全自查密码改完了、系统能登录了千万别觉得这事儿就完了。以我的经验每次干完这种打破沙锅的操作后都要花几分钟把善后工作做干净不然过阵子又是同一个坑。5.1 验证、重启后故障排查第一次用新密码登录成功后建议立刻跑几条命令确认修改没留下副作用last reboot systemctl --statefailed journalctl -b -u sshd看三件事系统是不是按预期正常引导、有没有服务启动失败、SSH 能不能正常登录。如果在 RHEL/CentOS 上选择了 autorelabel第一次启动会慢到让你怀疑系统卡死了这是正常的你可以在控制台看到重新打标签的输出但如果等很久都没有任何输出要检查是不是 SELinux 策略导致文件系统挂在奇怪的状态。常见故障无非两种一种是忘了 touch /.autorelabel重启后 sshd 等高级服务因 SELinux 标签错误起不来报错信息里会出现 SELinux is preventing 之类的字眼另一种是 chroot 环境下手贱去改 /etc/passwd把 root 的 shell 或者 uid 改坏了。修复方式也很直白用相同流程重新进去改回来。5.2 预防下次再忘密码备份 root 哈希与 sudo 通道经历过一次这种操作后你就该意识到root 密码在团队协作环境中不能只存在于某个人的脑子里。更靠谱的做法是把系统初始 root 密码写入内部的密码管理库或至少放在加密的运维文档里。对于日常操作推广 sudo 通道让普通用户通过 sudo 执行管理命令而不是频繁切换 root。即使 root 密码丢失只要还有普通用户能 sudo临时救急就会方便很多。定期备份 /etc/shadow 和 /etc/passwd 到离线位置恢复时只需要比对文件内容或者直接 preplace 即可。另外说个细节Ubuntu 默认 root 账户是没有密码的shadow 里显示为!也就是锁定状态。管理员日常用 sudo -i 临时切换到 root。如果哪天你给 root 设置了密码反而改变了系统的默认安全姿态除非有明确需求不建议长期保持 root 密码自动登录的状态。5.3 物理安全是最后的防线最后想认真提醒一句本文讲的所有方法本质上都要求你能碰到这台机器的物理控制台。这意味着任何能物理接触到服务器、或者能接入 IPMI/BMC 的人都能重置 root 密码。这不是漏洞而是 x86 体系下引导流程的设计使然。所以如果你的机器托管在有限的机房里对物理访问权限的管理反而比密码复杂度更重要。对高安全要求的机器建议做以下加固设置 BIOS/固件密码阻止陌生人修改启动项。在 GRUB 里配置密码保护禁止无密码进入编辑模式。启用 SecureBoot并对本机内核签名做校验。有条件的情况下做全盘加密LUKS这样即使别人拿到硬盘也无法通过修改引导参数绕过解密层。secure boot 和 LUKS 这套组合能挡住绝大部分基于引导参数重置密码的攻击路径。但对应的代价是你自己忘了密码时恢复流程也会复杂得多恢复时需要依赖密钥文件或恢复会话。我在实际运维中体会最深的一点是root 密码重置这件事不是偶尔应急就知道怎么做的技能而是每次都要像做变更一样写好清单。因为你可能一年只遇到一次但每次遇到都是系统进不去、业务锁死的紧张局面现场再去查文档只会把压力放大。把这套流程在自己的测试机、虚机上完整跑过两遍把 rd.break 和 init/bin/bash 的差异、SELinux 重标、MySQL 的 skip-grant-tables 窗口都亲手感知一遍比记住任何一条命令都管用。

相关新闻

从爬虫脚本到任务编排:用OpenClaw重构金融数据整理流程

从爬虫脚本到任务编排:用OpenClaw重构金融数据整理流程

1. 切入点:从一个尴尬的“装完就跑”开始先交代一下背景。我在某金融机构做内部工具链的维护,日常工作是跟各种数据源、报表系统、自动化脚本打交道。有一阵子团队接了个任务:把一批分散在各个业务系统里的金融产品信息,统一汇总成…

2026/10/9 3:16:02 阅读更多 →
校园二手交易平台Java开发实战:轻量级生产系统搭建指南

校园二手交易平台Java开发实战:轻量级生产系统搭建指南

简介:本资源是一个基于Java技术栈开发的校园二手交易平台完整项目源码包,面向计算机专业本科生、Java初学者及Web应用开发学习者,旨在解决高校学生间教材、数码产品、生活用品等闲置物品高效流转的实际需求。压缩包共440个文件,体…

2026/10/9 3:16:02 阅读更多 →
JSP网上拍卖系统毕业设计实战指南

JSP网上拍卖系统毕业设计实战指南

简介:本资源是一套基于JSP技术实现的网上拍卖平台毕业设计完整方案,面向计算机专业本科生及Web开发初学者,解决课程设计、毕设选题与Java Web项目实践需求。压缩包共236个文件,以51个JSP页面为核心构建前后端交互逻辑,…

2026/10/9 3:15:02 阅读更多 →

最新新闻

梯级水光互补短期优化调度复现:模型、Python实现与调试经验

梯级水光互补短期优化调度复现:模型、Python实现与调试经验

前阵子复现了一篇关于梯级水光互补系统短期优化调度的EI论文,前后折腾了一周多才把代码完整跑通。说实话,模型本身并不复杂,真正费时间的反而是那些藏在公式背后的细节:目标函数里的期望算子到底对谁取期望、水量平衡方程的时滞下…

2026/10/9 3:51:24 阅读更多 →
Oracle RAC日志地图与故障排查:从GI到ASM的日志路径详解

Oracle RAC日志地图与故障排查:从GI到ASM的日志路径详解

凌晨两点被监控电话叫醒,RAC某个节点被集群驱逐,业务侧报错蜂拥而至,登录服务器看到CRS资源一片红。干过Oracle RAC运维的人,基本都经历过这种场面。真正拉开差距的不是你会不会重启,而是你能不能在三五分钟内判断&…

2026/10/9 3:51:24 阅读更多 →
Windows本地部署MinerU 4.0:PDF解析与RAG预处理实战指南

Windows本地部署MinerU 4.0:PDF解析与RAG预处理实战指南

1. 为什么要在 Windows 上折腾 MinerU 4.0 本地部署RAG 做久了你会发现一个很尴尬的事实:模型选型、向量库调参、检索策略优化这些环节,网上教程一抓一大把,但真正卡住整个系统上限的,往往是文档预处理这一步。尤其是 PDF——扫描…

2026/10/9 3:51:24 阅读更多 →
CSS实战技巧全解析:样式引入、对齐布局与交互特效

CSS实战技巧全解析:样式引入、对齐布局与交互特效

2. 样式代码的组织方式:三种引入方案一次理清先解决一个最基础也最容易被问糊涂的问题:CSS 到底怎么进到页面里?网上的碎片教程各说各话,你要是照着抄过八成会遇到“明明写了样式怎么没反应”的尴尬。这里我把三种主流方式连同各自…

2026/10/9 3:51:24 阅读更多 →
基于Kettle的Web数据集成平台:拖拽式ETL与调度实战

基于Kettle的Web数据集成平台:拖拽式ETL与调度实战

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

2026/10/9 3:51:24 阅读更多 →
AI Agent可观测性落地实践:从事件追踪到触达指标全解析

AI Agent可观测性落地实践:从事件追踪到触达指标全解析

先说个我最近的真实感受:我们的 AI Agent 功能上线三个月后,团队突然发现一个特别尴尬的问题——根本没人能说清楚,每天进来的几千个请求,到底有多少真正跑完了全流程。日志里有记录,监控面板也亮着,但那是…

2026/10/9 3:50:23 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →