嵌入式Linux系统root密码重置实战:从单用户模式到uboot操作
1. 项目概述当“上帝”被锁在门外在嵌入式Linux开发与运维的日常里我们这些搞硬件的、写驱动的、做系统集成的最怕遇到的尴尬事之一恐怕就是对着一个正在运行的设备突然发现自己被挡在了“root”的大门之外。这个拥有最高权限的账户就像是整个嵌入式系统的“上帝”一旦忘记密码设备就成了一块无法深度配置、无法更新核心软件、甚至无法进行故障诊断的“砖头”。这绝不是危言耸听尤其是在产品已经部署到现场或者在进行产线批量烧录与测试时一个遗忘的密码可能导致产线停滞、现场维护成本激增。我遇到过不少这样的情况有的同事在开发板测试阶段设了一个复杂的密码后来再也没用过等到要抓取关键日志或更新固件时傻眼了有的在量产镜像中统一设置了初始密码但文档遗失后续维护人员无从下手更常见的是在uboot或内核启动参数中做了一些安全加固结果却把自己也给“加固”在了外面。基于这个高频痛点结合“嵌入式”、“Linux”、“root密码”、“uboot”这些核心关键词我将系统性地梳理和实战演示几种在嵌入式Linux平台上找回或重置root密码的可靠方法。这些方法覆盖了从拥有物理访问权限到仅能通过网络访问的不同场景核心思路都是绕过或修改系统的身份验证机制。请注意所有操作均基于你拥有该设备的合法管理权限旨在解决合法运维中的技术问题。2. 核心思路与方案选型条条大路通罗马面对忘记root密码的困境解决方法的核心逻辑在于中断或干预Linux系统的正常启动流程在身份验证环节生效之前获得一个具有root权限的Shell环境。一旦获得了这个环境修改密码就易如反掌。根据嵌入式设备的具体硬件配置、启动引导程序通常是uboot的开放程度以及系统设计我们可以选择不同的路径。2.1 方案全景图与选型依据大体上方法可以分为以下几类其选择严重依赖于你的设备访问权限和启动环境方法类别适用场景所需前提条件优点缺点/风险1. 单用户模式/恢复模式系统支持initramfs且内核命令行参数可修改。能中断uboot启动修改bootargs。标准、通用适用于大多数有控制台的设备。需要物理串口或键盘显示器访问。某些系统可能禁用了此功能。2. 利用initramfs Shell系统的initramfs内置了dropbear等调试Shell。initramfs镜像本身包含调试工具。无需修改内核参数直接进入救援环境。依赖初始的initramfs设计并非所有镜像都包含。3. 通过uboot直接修改密码文件根文件系统类型uboot可直接读写如FAT、EXT4。uboot支持load/fatload/ext4load等文件命令。直接、暴力不依赖系统内的任何服务。操作复杂需要对文件格式有深入了解极易损坏文件系统。4. 替换/修改initramfs无法进入现有系统但可以更新启动介质。能重新烧写或替换boot分区中的initramfs。一劳永逸可以定制强大的救援镜像。需要额外的编译和打包步骤对存储介质有写权限。5. 网络引导与NFS根文件系统设备支持网络引导PXE且uboot配置灵活。有TFTP/NFS服务器uboot支持网络命令。无需触碰设备本地存储安全无侵入。对网络环境和uboot配置要求高步骤繁琐。对于绝大多数嵌入式工程师而言方法1单用户模式是首选的尝试方向因为它最接近通用Linux服务器的恢复方式且成功率很高。方法2则依赖于开发团队最初构建系统时的“仁慈”是一个值得检查的捷径。当我们谈论“uboot”这个热搜词时它正是我们实现方法1、3、4、5的关键枢纽几乎所有绕过操作都离不开对uboot命令行的操控。注意在执行任何操作前请务必确认你对该设备拥有合法的管理权限。这些方法会完全绕过系统安全机制仅用于合法的系统恢复。2.2 为什么是uboot它在密码恢复中的核心作用U-Boot这个几乎统治了嵌入式领域的开源引导加载程序是我们此次“救援行动”的指挥中心。它负责初始化硬件、加载内核与设备树、传递启动参数bootargs并最终将控制权交给Linux内核。密码验证发生在内核启动、系统初始化systemd或SysV init之后而uboot的启动阶段远在这之前。因此我们的突破口就在uboot传递给内核的启动参数上。通过串口或调试接口中断uboot的自动启动流程进入其命令行我们就可以修改这些参数从而改变内核的启动行为。例如告诉内核直接运行一个Shell而不是正常的初始化程序这就是单用户模式的原理。理解uboot的bootcmd、bootargs环境变量以及bootm/booti等命令是成功的关键。3. 实战操作一通过单用户模式重置密码最通用方法这是最经典、最广泛适用的方法。其原理是在Linux内核启动时通过内核命令行参数init指定一个特殊的初始化程序通常是/bin/sh或/bin/bash从而跳过正常的、会触发登录验证的系统初始化流程。3.1 前期准备与环境接入物理连接你需要通过串口UART连接到目标嵌入式设备。这是嵌入式开发的标准调试接口通常包含TX、RX、GND三根线。使用USB转TTL串口模块连接电脑和设备上的调试串口。终端软件在电脑上打开串口终端软件如PuTTY、MobaXterm、Minicom、SecureCRT。正确设置波特率常见的有115200、9600、57600等、数据位8、停止位1、无校验位None。中断uboot启动给设备上电并立即在终端软件中连续按下回车键或指定的中断键如空格键。成功的话你会看到uboot的启动过程停止并出现类似或U-Boot的命令行提示符。3.2 关键步骤修改内核启动参数进入uboot命令行后我们首要任务是查看当前的启动命令和参数。 printenv bootargs bootargsconsolettyS0,115200 root/dev/mmcblk0p2 rw rootwait上面的输出是一个示例表示内核启动参数设置了控制台和根文件系统位置。现在我们需要修改这个bootargs添加进入单用户模式的参数。方法A直接附加init参数这是最直接的方式在原有参数后追加init/bin/sh或init/bin/bash。 setenv bootargs ‘consolettyS0,115200 root/dev/mmcblk0p2 rw rootwait init/bin/sh’ saveenv boot方法B使用single或rescue参数对于一些使用systemd的系统更标准的参数是systemd.unitrescue.target或systemd.unitemergency.target亦或是传统的single。 setenv bootargs ‘consolettyS0,115200 root/dev/mmcblk0p2 rw rootwait systemd.unitrescue.target’ saveenv boot实操心得init/bin/sh通常能给你一个最“干净”的shell但可能缺少一些环境变量。rescue.target会尝试挂载根文件系统并启动一些基本服务有时会更稳定。如果一种不行可以尝试另一种。另外saveenv命令会将修改保存到uboot的环境变量存储区如SPI Flash下次启动仍会生效。如果只想本次生效可以不执行saveenv直接boot。3.3 进入Shell并修改密码执行boot命令后内核会使用新的参数启动。如果成功你会直接获得一个以root权限运行的Shell提示符通常是#而不会出现登录提示。此时根文件系统通常是以**只读ro**方式挂载的因为我们在bootargs中虽然写了rw但某些系统在异常启动时仍会强制只读。首先需要将其重新挂载为可读写# mount -o remount,rw /然后使用passwd命令修改root密码# passwd Enter new UNIX password: 输入新密码 Retype new UNIX password: 再次输入新密码 passwd: password updated successfully如果系统使用了影子密码/etc/shadowpasswd命令会自动处理。修改完成后为了确保系统下次能正常启动强烈建议将启动参数改回去。但因为我们是通过临时修改uboot参数进来的所以需要重启并再次中断uboot。# reboot设备重启后再次中断uboot将bootargs中的init/bin/sh或systemd.unitrescue.target部分删除恢复原样然后saveenv并boot。现在你应该可以使用新设置的root密码登录了。4. 实战操作二利用Initramfs中的调试Shell有些嵌入式系统特别是针对调试优化的开发板镜像会在初始RAM文件系统initramfs或initrd中集成一个SSH服务器如dropbear或一个简单的telnet/串口Shell。这相当于在系统挂载真正的根文件系统之前就提供了一个救援通道。4.1 判断与进入观察启动日志正常启动时仔细观察内核解压initramfs后的日志。你可能会看到类似“Starting Dropbear SSH server…”或者“Debug shell on ttyS0”的信息。尝试连接如果内置了Dropbear SSHinitramfs会临时配置一个IP地址可能是通过DHCP或静态配置。在同一个网络下的另一台机器上尝试SSH连接到这个IP地址用户名可能是root并且通常无需密码。如果内置了串口Shell在uboot启动内核后在串口终端里尝试按回车键可能会直接出现一个#提示符。4.2 在Initramfs Shell中操作一旦进入你会发现这是一个极简的环境根文件系统是内存中的initramfs。你的目标根文件系统例如/dev/mmcblk0p2可能还没有被挂载到/下而是需要你手动操作。首先找到你的根文件系统分区# ls /dev/mmcblk* # 查看MMC/SD卡分区 # ls /dev/nvm* # 查看NVMe分区 # blkid # 查看所有块设备及其类型、UUID假设你的根文件系统在/dev/mmcblk0p2将其挂载到一个临时目录# mkdir -p /mnt/root # mount /dev/mmcblk0p2 /mnt/root现在你需要chroot到这个真正的根文件系统环境中去修改密码。chroot意味着将指定的目录变为进程的根目录“/”。# chroot /mnt/root /bin/bash此时你的Shell就“切换”到了目标根文件系统内。接着修改密码# passwd 输入新密码修改完成后退出chroot环境卸载分区然后重启# exit # umount /mnt/root # reboot注意事项这种方法高度依赖于initramfs的构建配置。很多为了安全或精简的生产镜像会移除此类调试功能。如果你的设备启动时没有相关提示此路很可能不通。5. 实战操作三通过uboot直接操作根文件系统高阶方法当上述方法都失效时例如内核参数被锁定initramfs没有Shell我们还可以尝试在uboot阶段直接读写存储介质上的根文件系统修改密码文件。这需要uboot支持对应文件系统的命令如ext4load,ext4write,fatload,fatwrite等并且操作必须极其小心否则会直接破坏文件系统。5.1 原理与风险Linux的用户密码信息存储在/etc/shadow文件中现代系统root账户对应第一行。我们可以尝试在uboot中将这个文件读取到内存修改其中加密后的密码哈希值再写回存储设备。或者更简单一点清空root的密码不推荐用于生产环境。巨大风险警告直接在uboot中操作文件系统是底层且危险的行为。文件系统可能处于不一致状态uboot的文件系统驱动可能不完整一个字节的错误就可能导致整个分区无法挂载。务必先备份5.2 操作步骤示例以EXT4文件系统为例假设根文件系统在/dev/mmcblk0p2格式为EXT4。在uboot中挂载并备份文件如果uboot支持 ext4load mmc 0:2 ${loadaddr} /etc/shadow这条命令尝试从MMC设备0的第2分区加载/etc/shadow文件到内存地址${loadaddr}。你需要先通过printenv查看可用的内存地址范围。修改内存中的数据极度困难即使成功加载在uboot中解析和编辑这个文本文件也几乎是不可能的因为uboot缺乏方便的文本处理工具。因此一个更可行的“暴力”方法是直接用一个已知密码的shadow条目覆盖。准备一个已知的shadow条目。在另一台Linux机器上用openssl生成一个密码哈希。例如生成密码为“newpassword”的哈希openssl passwd -6 -salt $(openssl rand -base64 12) newpassword这会输出类似$6$somesalt$HASH...的字符串。$6$表示SHA-512加密。构造新的shadow行。root的shadow行格式为root:$6$somesalt$HASH...:19110:0:99999:7:::你需要将:后的第一个字段即密码哈希部分替换为你生成的哈希。如果只想清空密码则将其替换为空变成root::19110:0:99999:7:::两个冒号紧挨着。将新行写入文件问题来了uboot很难将一段内存数据以精确的偏移量写回文件。通常的ext4write命令要求你知道文件的inode等信息操作极其复杂。鉴于其超高的复杂性和风险除非万不得已并且你对uboot和文件系统有极深的理解否则不建议采用此方法。它更像是一种理论上的可能性在实际救援中优先考虑前两种方法或者接下来的方法四。6. 实战操作四替换或修改Initramfs镜像如果设备的启动流程是uboot - initramfs - 挂载根文件系统 - 切换根目录那么我们可以通过替换initramfs镜像来植入我们自己的“后门”。这个方法需要你能访问到存储initramfs的介质通常是boot分区可能是SD卡、eMMC的某个分区、或者NOR Flash。6.1 获取与解包Initramfs找到initramfs镜像它可能叫initrd.img,initramfs.cpio.gz,uInitrd等通常和内核镜像zImage,uImage放在同一个FAT或EXT格式的boot分区。备份原镜像在任何操作前务必备份原始文件。解包initramfs通常是一个cpio归档可能经过gzip压缩。mkdir initramfs_root cd initramfs_root gunzip -c ../initramfs.cpio.gz | cpio -idmv6.2 修改Initramfs内容解压后你会看到一个小型根目录树。我们的目标是修改其初始化脚本使其在早期就给我们一个Shell。查找初始化脚本通常位于/init或/linuxrc。也可能在/scripts/init-top/,/scripts/init-premount/等目录下取决于构建工具如busybox init, systemd in initramfs。编辑脚本用文本编辑器打开主初始化脚本比如/init。在脚本中寻找挂载根文件系统、执行switch_root的地方。在这之前插入一段代码例如# 在/bin/sh存在的情况下启动一个shell方便调试 if [ -x /bin/sh ]; then echo “—— Initramfs Debug Shell ——” echo “Type ‘exit’ to continue booting.” exec /bin/sh fi或者更谨慎一点等待一个特定的触发条件比如某个按键# 检查串口输入如果收到‘debug’字符串则启动shell echo -e “\nPress ‘d’ for debug shell in 3 seconds...” read -t 3 -n 1 key if [ “$key” “d” ]; then exec /bin/sh fi6.3 重新打包与部署修改并保存脚本后重新打包initramfscd initramfs_root find . | cpio -o -H newc | gzip -9 ../new_initramfs.cpio.gz然后用新的镜像文件替换boot分区中的原文件。重启设备在initramfs阶段根据你的脚本设计比如按‘d’键就能获得一个root shell。在这个shell里你可以像方法二那样手动挂载根文件系统并chroot进去修改密码。实操心得这种方法给了你最大的灵活性可以打造一个功能强大的救援镜像。但它的前提是你能替换boot分区中的文件。对于某些安全启动Secure Boot或写保护的设备这可能无法实现。同时要确保你打包的initramfs与内核版本兼容。7. 常见问题与深度排查技巧在实际操作中你可能会遇到各种意想不到的问题。下面记录了一些典型场景和我的排查思路。7.1 无法中断uboot启动流程现象疯狂按回车/空格键uboot还是直接启动了内核。排查检查串口连接与波特率这是最常见的原因。确认TX/RX线没有接反波特率是否与uboot配置完全一致尝试115200, 9600, 57600等常见值。确认中断键有些uboot配置使用CtrlC而不是回车或空格。可以都尝试一下。uboot配置被锁定查看uboot环境变量bootdelay。如果它被设置为-1或-2表示启动延迟为无穷大或直接启动不等待中断。这时你可能需要通过JTAG等更底层的调试工具来恢复或者如果bootcmd本身包含了等待输入的命令则还有机会。启动速度过快有些高性能SOC的uboot启动极快窗口期很短。可以尝试在uboot源码中增加bootdelay的值并重新编译烧写但这要求你有源码和编译环境。7.2 进入单用户模式后根文件系统挂载失败现象内核panic提示“VFS: Unable to mount root fs”。排查核对根文件系统设备节点在uboot中使用printenv查看bootargs中的root参数。确认/dev/mmcblk0p2或rootPARTUUIDxxxx是否正确指向了你的根文件系统分区。你可以用uboot的mmc list和part list mmc 0等命令来查看分区信息。检查文件系统类型bootargs中可能需要指定文件系统类型如rootfstypeext4。如果内核没有编译进对应文件系统的驱动也会失败。驱动问题确保内核镜像包含了对应的存储控制器如SD/MMC控制器和文件系统如EXT4的驱动。如果是模块形式需要包含在initramfs中。7.3 修改密码后系统仍提示密码错误现象用passwd命令成功修改密码但重启后用新密码无法登录。排查文件系统挂载状态确保你修改密码时根文件系统是以**读写rw**方式挂载的。如果是以只读ro方式挂载passwd命令会正常执行因为它修改的是内存中的shadow文件副本但在同步到磁盘时会失败。使用mount命令确认并用mount -o remount,rw /重新挂载。Shadow文件权限极少数情况下/etc/shadow文件的权限可能被误修改。其正确权限应为640所有者root组shadow。可以用ls -l /etc/shadow检查并用chmod 640 /etc/shadow修复。PAM配置问题非常罕见但如果系统使用了特殊的PAM可插拔认证模块配置可能会绕过本地shadow文件。在嵌入式环境中较少见。7.4 系统使用了只读根文件系统Read-only RootFS现象常见于基于Flash的嵌入式设备为了延长Flash寿命根文件系统被挂载为只读。即使你在bootargs中加了rw系统启动后也会被重新挂载为ro。解决方案在单用户模式下如前所述先mount -o remount,rw /。永久修改修改密码后你需要找到让系统以读写方式挂载根文件系统的方法。这通常需要修改/etc/fstab文件将/对应的条目中的ro或defaults改为rw或者修改初始化脚本如/etc/init.d/rcS或systemd的mount单元。修改完成后可能还需要执行sync命令确保数据写回。7.5 针对特定开发板的快速参考树莓派Raspberry Pi更简单。将SD卡插入读卡器挂载到电脑上。在boot分区FAT32格式的cmdline.txt文件中在行末添加init/bin/sh保存。将卡插回树莓派启动即可获得root shell。基于i.MX系列的平台uboot通常很强大。中断启动后重点关注bootargs环境变量。其eMMC/SD卡分区编号可能与常见Linux略有不同使用mmc dev和mmc part命令仔细查看。对于锁定了uboot环境的设备有些产品化设备会通过printenv命令需要密码或者禁用了setenv。这时可能需要通过硬件调试接口如JTAG来读取Flash内容或者寻找设备上可能存在的“恢复模式”触发机制如按住某个按键上电。密码恢复的本质是一场与系统启动流程的“赛跑”核心在于在身份验证这道闸门落下之前取得控制权。掌握uboot和Linux内核启动参数是赢得这场比赛的关键。每次成功“救砖”的背后都是对系统引导过程更深一层的理解。希望这份详尽的指南能成为你嵌入式工具箱里一件可靠的“万能钥匙”。

相关新闻

安卓设备运行完整Linux系统:无需Root的Termux+PRoot实战指南

安卓设备运行完整Linux系统:无需Root的Termux+PRoot实战指南

1. 从手机到“电脑”:安卓系统运行桌面操作系统的核心思路最近几年,我身边不少搞开发、玩硬件的朋友,都开始琢磨一个事儿:能不能让手里的安卓手机或平板,直接跑起来一个完整的桌面操作系统,比如 Debian 或者…

2026/7/30 6:48:41阅读更多 →
Nat. Commun. 封面级研究 | 双色激光“飞行焦点”赋能太赫兹:频谱可调、聚焦更优、形状可控

Nat. Commun. 封面级研究 | 双色激光“飞行焦点”赋能太赫兹:频谱可调、聚焦更优、形状可控

导语近日,罗切斯特大学激光能量学实验室J. J. Pigeon团队在《Nature Communications》上发表了一项突破性研究(https://doi.org/10.1038/s41467-026-76228-6),他们利用一种名为“飞行焦点”(Flying Focus)的前沿激光技术&#xff…

2026/7/30 6:48:41阅读更多 →
Python开发智能家庭相册管理系统技术解析

Python开发智能家庭相册管理系统技术解析

1. 项目背景与核心需求这个Python开发的家庭成员亲子相册管理系统,本质上解决的是现代家庭数字照片管理的三大痛点:照片分散存储、检索效率低下、亲子互动缺失。我见过太多家庭手机相册里躺着上万张杂乱无章的照片,想找孩子三岁生日照得翻半小…

2026/7/30 6:48:41阅读更多 →
C++字符串操作全解析:从std::string到C风格字符串的实战指南

C++字符串操作全解析:从std::string到C风格字符串的实战指南

1. 项目概述:为什么我们需要系统梳理字符串操作?在C的日常开发中,字符串处理几乎无处不在。无论是处理用户输入、解析配置文件、拼接日志信息,还是进行网络通信,std::string和C风格字符串都是我们绕不开的核心工具。然…

2026/7/30 10:33:43阅读更多 →
Ubuntu 22.04安装Python 3.11:PPA与源码编译最佳实践

Ubuntu 22.04安装Python 3.11:PPA与源码编译最佳实践

1. 项目概述与核心价值最近在折腾一个基于 FastAPI 的新项目,需要用到 Python 3.11 的一些新特性,比如更快的启动速度和ExceptionGroup。我手头的主力开发环境是 Ubuntu 22.04 LTS,这个系统默认自带了 Python 3.10。虽然 3.10 已经很稳定&…

2026/7/30 10:33:43阅读更多 →
Socket.IO介绍

Socket.IO介绍

Socket.IO 是一个用于实现客户端与服务器之间“低延迟、双向、基于事件通信”的开源库。 可以把它简单理解为: Socket.IO WebSocket 通信能力 心跳检测 自动重连 事件系统 房间广播 断线处理等工程化能力。 它特别适合聊天室、在线会议状态、实时通知、协同编…

2026/7/30 10:33:43阅读更多 →
掌握Magisk:从Android Root入门到高级系统定制实战

掌握Magisk:从Android Root入门到高级系统定制实战

掌握Magisk:从Android Root入门到高级系统定制实战 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk Magisk作为Android系统上最强大的Root解决方案,为技术爱好者和开发者提供了无限…

2026/7/30 10:33:43阅读更多 →
洛谷练习P5719,P1047

洛谷练习P5719,P1047

一.P5719 1.创建输入对象,读取数据 Scanner scannew Scanner(System.in) int nscan.nextInt() int kscan.nextInt() 2.创建个数与总和的初始值 int s10; int s20; double c10; double c20;(使用double可以保留小数) 3.遍历数组n,寻…

2026/7/30 10:33:43阅读更多 →
文件上传接口,同时传递一个对象做参数

文件上传接口,同时传递一个对象做参数

文件上传接口,同时传递一个对象做参数。 1. 代码 如此可以避免在url ?后面拼接参数。Operation(summary "电厂煤炭结算单:导入")PostMapping("/importData")public ApiResult importData(ModelAttribute SaleQuery quer…

2026/7/30 10:31:43阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

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

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

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

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

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

2026/7/29 7:00:19阅读更多 →
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/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

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

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

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

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

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

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

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/29 14:26:42阅读更多 →