当前位置:首页>Linux>从零构建 Linux|11 运行你的 Linux

从零构建 Linux|11 运行你的 Linux

  • 2026-08-21 19:21:57
从零构建 Linux|11 运行你的 Linux

系列第 11 篇|Demo 收官:先 runqemu,再 U 盘双系统编译在 WSL2|验证对比:qemux86-64(虚机)与 genericx86-64(真机)

这是动手线的最后一篇。我们把第 10 篇的两套产物分别跑起来,并刻意对比:

  1. 路径 Aqemux86-64 + runqemu——在 WSL2 里快速证明镜像与 hello;
  2. 路径 Bgenericx86-64 + U 盘——在 Windows PC 上走真实 UEFI,并尽量做成双系统。

成功的最低标准很明确:

  1. 虚机里能进系统并运行 hello;
  2. 真机里能进自建 Linux,且 Windows 仍然能启动;
  3. 真机里同样能运行 hello。

安全提醒(请认真读)写 U 盘、改分区、动 EFI 启动项都有风险。操作前备份重要数据。写入镜像时务必反复确认目标是 U 盘,而不是 Windows 系统盘。

两条路径先对比

对比项
路径 A:qemux86-64
路径 B:genericx86-64
在哪里跑
WSL2 内的 QEMU
真实 PC 固件 + U 盘 / 硬盘
目的
低风险、快闭环;先证明配置和软件没问题
走完整 PC 启动链;证明真机可用
是否动硬盘
不动电脑硬盘分区
需要认清 U 盘设备、预留分区、可能关闭 Secure Boot

建议顺序:先完成路径 A,再做路径 B。若虚机都进不去,先别急着写 U 盘。

路径 A:用 runqemu 跑 qemux86-64

前置:第 10 篇已构建出 build-qemux86-64/tmp/deploy/images/qemux86-64/;WSL2 Ubuntu 里还要有 QEMU(见下一节,默认未安装)。

runqemu 在哪里、为什么能直接敲

runqemu 不是系统自带的命令,而是 poky 提供的启动脚本,真实路径是:

~/yocto/poky/scripts/runqemu

同目录还有若干辅助脚本(如 runqemu-extract-sdk)。你平时不必手写完整路径,因为执行:

source oe-init-build-env build-qemux86-64

时,脚本会把 poky/scripts 加入当前 shell 的 PATH,并把工作目录切到 build-qemux86-64。因此只要在「已 source 过的同一个终端」里,直接敲 runqemu 即可。

可自行确认:

which runqemu# 期望类似:.../yocto/poky/scripts/runqemuecho$BUILDDIR# 期望:.../yocto/poky/build-qemux86-64

若新开了一个终端却没再 source,会出现 runqemu: command not found——这是环境未初始化,不是镜像坏了。

WSL2 Ubuntu 要不要装 QEMU?

要。runqemu 只是包装脚本,真正拉起虚机的是宿主上的 qemu-system-x86_64。WSL2 的 Ubuntu 默认不带这个命令。

两件容易混的事:

  1. 编镜像不强制装 QEMU。第 7 篇 Quick Start 里的 gcc、python3、chrpath 等是给 bitbake 用的,列表里通常没有 qemu-system-x86。所以很多人编完第 10 篇才发现虚机起不来。
  2. 跑虚机必须有 QEMU 可执行文件。缺了它,镜像再完整也启动不了。

入门最省事:在 WSL2 Ubuntu 里装宿主 QEMU:

sudo apt updatesudo apt install qemu-system-x86

装完确认:

which qemu-system-x86_64# 期望:/usr/bin/qemu-system-x86_64

不要只装名为 qemu 的元包:较新的 Ubuntu 上它几乎不带 qemu-system-x86_64。本 demo 需要的是 qemu-system-x86

另一条路:用 Yocto 自己编出来的 native QEMU(runqemu 会优先找它)。在已 source 的 build-qemux86-64 环境中执行:

bitbake qemu-helper-native -c addto_recipe_sysroot

两条路有一条通即可。

不装会怎样:

现象
含义
which runqemu
 仍能找到
脚本在 poky/scripts 里,与是否安装 QEMU 无关
runqemu nographic
 报找不到 qemu-system-x86_64,或类似 Can't find qemu
包装器在,真正的模拟器不在
第 10 篇的镜像目录还在
产物没坏,只是虚机起不来
路径 B(U 盘 / 真机)
不受影响,真机不走 QEMU

WSL2 补充:本篇用 nographic,不依赖图形窗口。若提示无法使用 KVM(/dev/kvm 不存在或权限不够),那是嵌套虚拟化问题,不是「没装 QEMU」。此时不要加 kvm,让 QEMU 走软件模拟即可,只是会慢一些。

runqemu 做了什么(工作原理)

它不是「随便起一个空虚机」,而是替你把第 10 篇的产物接上宿主上的 QEMU。简化流程:

读当前 build 环境(MACHINE、DEPLOY_DIR_IMAGE 等)  → 在 tmp/deploy/images/qemux86-64/ 找到镜像与 *.qemuboot.conf  → 按 conf 选定内核、rootfs、内存、串口等参数  → 组装并执行 qemu-system-x86_64 ...  → 虚机内:kernel → rootfs → init → … → 可登录并跑 hello

要点:

  1. 依赖构建产物:目录里通常有内核(如 bzImage)、rootfs 镜像,以及构建阶段由 qemuboot 类生成的 *.qemuboot.conf。后者记录了该 MACHINE 该怎么被 QEMU 启动。
  2. 自动选型:在已 source 的 build-qemux86-64 环境中,不指定镜像名时,它会按当前 MACHINE / 最新产物自行挑选合适文件。
  3. 真正干活的是 QEMUrunqemu 是包装器,最终会执行 qemu-system-x86_64。WSL2 Ubuntu 默认没有它,见上一节。
  4. **nographic**:把控制台接到当前终端(串口输出),适合无图形、SSH 进 WSL2 的场景。

对照真机路径:真机是 UEFI → GRUB → kernel;这里是 runqemu → QEMU 模拟硬件 → kernel。后面的 rootfs / init / hello 是同一套逻辑。

启动虚机

在 同一 WSL2 Ubuntu 中进入虚机构建环境:

cd ~/yocto/pokysource oe-init-build-env build-qemux86-64# 无图形界面时常用 nographic,直接在当前终端看串口输出runqemu nographic

若默认参数与你的版本略有出入,以 runqemu --help 与当前 poky 文档为准;核心目标不变——把刚构建的虚机镜像跑起来。 当出现login提示后输入root回车即可进入qemu Linux系统。

进入系统后:

uname -m# 期望:x86_64which hello# 期望:/usr/bin/hellohello# 期望:Hello from Yocto-built Linux

关于默认账号:core-image-base 常见是 root 登录,密码策略因版本 / 配置而异,以你镜像实际提示为准。

退出 QEMU 的常见方式:在 nographic 下可尝试 Ctrl-a 再按 x(具体以 QEMU 提示为准)。

虚机成功说明了什么、没说明什么

说明了:镜像能引导,rootfs 完整,hello 已打进系统。没说明:你笔记本上的独显、特殊触控板、全部外设一定可用——那是真机驱动覆盖的问题。

路径 B:真机材料准备

材料
要求
目标 PC
Intel x86_64,约 16GB RAM,约 1TB 磁盘,已装 Windows(通常就是跑 WSL2 的那台)
U 盘
建议 ≥ 8GB,且允许被清空。容量需大于镜像文件
镜像文件
第 10 篇 build-genericx86-64/tmp/deploy/images/genericx86-64/ 中的 .wic 或 .hddimg
rootfs 归档
最好同时有 .tar.bz2,双系统部署到硬盘时更方便
工具
WSL2 下 bmaptool / dd,或 Windows 下 Rufus 等
硬盘空闲空间
至少 16GB,32GB 更从容(在 Windows「磁盘管理」里压缩出的「未分配」区域)

制作启动 U 盘

「写入 U 盘」的本质,是把镜像文件按磁盘的方式复制到 U 盘设备上,使 U 盘带有可被 UEFI 识别的分区与引导文件。

方式 A:在 WSL2 / Linux 上写

先确认设备名,这是最容易出错的一步:

lsblk

看清楚哪个是 U 盘(容量、挂载点通常能帮你辨认)。假设 U 盘是 /dev/sdb(仅示例!),则:

sudo bmaptool copy \  core-image-base-genericx86-64.rootfs.wic \  /dev/sdb

如果没有 .bmap 文件,可用 dd:

sudo dd \if=core-image-base-genericx86-64.rootfs.wic \  of=/dev/sdb \  bs=4M status=progress oflag=sync

注意:

  1. 目标写 /dev/sdb 这种「整盘设备」,不要写成 /dev/sdb1 这种「分区」;
  2. 字母必须是你的 U 盘;写错成硬盘会造成严重数据损失;
  3. WSL2 下能否直接看到 USB 整盘,与发行版/版本有关;若看不到设备,改用下面的 Windows 方式。

方式 B:在 Windows 上用 Rufus

  1. 把 .wic / .hddimg 从 WSL2 拷到 Windows 可见目录;
  2. 插入 U 盘,打开 Rufus;
  3. 选择该镜像;
  4. 再次确认「设备」确实是 U 盘;
  5. 开始写入。

若 Rufus 无法识别某种后缀,回到 Linux / dd / bmaptool 路径完成即可。

真机第一阶段:只从 U 盘启动

在改电脑硬盘之前,先证明镜像本身能在这台机器上启动。这能把问题拆开:如果 U 盘都进不去,先别急着做双系统。

操作过程用文字描述如下:

  1. 插入 U 盘,重启电脑。
  2. 在开机很早的画面按下固件启动菜单键(常见为 F12、F10、Esc,以你的品牌为准)。
  3. 在列表里选择该 U 盘;优先选名称里带 UEFI 的项。
  4. 若开启了 Secure Boot(安全启动)且拒绝未签名系统:进入固件设置,临时关闭 Secure Boot(这是入门阶段最省事的做法)。
  5. 等待内核日志刷过,进入登录提示或控制台。
  6. 登录后执行:
uname -m# 期望:x86_64hello# 期望:Hello from Yocto-built Linux

如果这一步成功,说明:构建产物、U 盘写入、机器固件启动路径,至少已经打通。

你现在做的事情,是在真实硬件上走一遍第 1~2 篇讲过的 PC 路径:

上电  → UEFI/BIOS 固件启动菜单  → GRUB(或镜像自带引导)  → linux kernel  → rootfs → init → services  → 运行 hello

真机第二阶段:安装双系统(保留 Windows)

Yocto 的 core-image-base 通常没有像 Ubuntu 桌面版那样的图形安装向导。因此我们采用更「工程化」但可操作的路径:

在 Windows 里腾出空闲分区 → 把 rootfs 铺进该分区 → 在 EFI 系统分区里放上启动文件并注册启动项 → 重启后在 Windows 与 Yocto Linux 之间选择。

步骤 1:在 Windows 中腾出空闲空间

  1. 右键「此电脑」→「管理」→「磁盘管理」(或在开始菜单搜索「磁盘管理」)。
  2. 选中 Windows 系统盘(通常是 C:),选择「压缩卷」。
  3. 压缩出不少于 16GB 的未分配空间。

此时不要删除 Windows 分区,也不要格式化 EFI 分区。

步骤 2:从 U 盘进入 Linux,识别硬盘

重新用 U 盘启动进入自建系统(或使用带完整磁盘工具的 Linux Live 环境,如 Ubuntu Live——当 Yocto 镜像里工具不够时,这是很实用的备选)。

lsblkfdisk -l

你会看到:

  • Windows 的 NTFS 分区;
  • 一个较小的 EFI 系统分区(ESP),通常是 FAT32;
  • 以及你刚腾出的空闲空间。

记住硬盘设备名,例如 /dev/nvme0n1 或 /dev/sda。不同电脑名字不同。

步骤 3:创建并格式化 Linux 根分区

在空闲空间新建一个 Linux 分区(可用 fdisk、parted 或图形工具),然后格式化为 ext4。假设新分区是 /dev/sdaX(请替换为实际名字):

mkfs.ext4 /dev/sdaX

ESP(EFI 系统分区)一般已由 Windows 创建好了。双系统时我们复用它来存放 Linux 的引导文件,而不是新建一个胡乱删除旧 ESP。

步骤 4:把 rootfs 部署到新分区

如果第 10 篇产物里有 rootfs.tar.bz2,这是最直观的方式:

mount /dev/sdaX /mnttar -xjf \  /path/to/core-image-base-\genericx86-64.rootfs.tar.bz2 \  -C /mnt

这条命令的含义是:把归档中的整个根文件系统解压到硬盘新分区上。完成后,/mnt 下应能看到 bin、etc、usr、sbin 等目录。

如果只有 .wic、没有 tar 包,也可以在 Linux 上把 wic 当虚拟磁盘挂载,再把其中的 root 分区内容拷到 /mnt。做法更绕一些。核心目标不变——让硬盘分区拥有完整 rootfs。

部署后建议检查并按实际分区修正 /mnt/etc/fstab(如果镜像里有的话),确保系统知道根分区应挂载谁。初学若暂时不会改,至少保证你能用启动参数 root=UUID=... 指到正确分区。

步骤 5:配置 UEFI 启动项

现代 PC 用 UEFI 管理启动项。Windows 有自己的启动项;我们要为 Yocto Linux 再登记一项,或安装 GRUB 并让它能链到 Windows。

示意流程:

# 挂载根分区与 ESP# sdaY 请换成 ESP 分区名mount /dev/sdaX /mntmkdir -p /mnt/boot/efimount /dev/sdaY /mnt/boot/efi# 把 EFI/GRUB 文件拷到# ESP 的独立目录,例如 EFI/yocto/# 注册启动项(路径按实际修改)efibootmgr -c -d /dev/sda -p Y \  -L "Yocto Linux" \  -l '\EFI\yocto\grubx64.efi'

若你的环境具备更完整的 GRUB 工具,也可以 chroot 进 /mnt 后执行 grub-install,再生成菜单;很多情况下 GRUB 还能检测到 Windows Boot Manager,从而在菜单里同时列出两边。

不同镜像内置工具不同。若 U 盘里的 Yocto 系统缺少 efibootmgr / grub-install,请改用 Ubuntu Live 这类工具齐全的环境完成「拷贝 rootfs + 安装引导」,逻辑完全一样。

步骤 6:重启,确认双系统成立

  1. 可以拔掉 U 盘,从硬盘启动。
  2. 打开固件启动菜单,或进入 GRUB 菜单。
  3. 应能分别进入 Windows 与 Yocto Linux。
  4. 在 Yocto Linux 中再次执行:
uname -mhello

两边都能进,才算双系统闭环完成。

故障定位:把现象映射回启动链

排错时不要盲目重装,先问「卡在链的哪一环」。并善用对比:虚机 OK、真机挂,多半是写入/固件/分区问题,而不是 hello 菜谱写错。

现象
优先怀疑
可尝试
runqemu: command not found
新开终端后未 source oe-init-build-env
在同一终端重新 source build-qemux86-64
runqemu
 报找不到 qemu-system-x86_64
WSL2 Ubuntu 未装宿主 QEMU,且 native sysroot 里也没有
sudo apt install qemu-system-x86
,或 bitbake qemu-helper-native -c addto_recipe_sysroot
提示无法使用 KVM / /dev/kvm
WSL2 嵌套虚拟化未开或权限不够
不要加 kvm,继续用 runqemu nographic(软件模拟,较慢)
runqemu 起不来(其它)
产物目录不对、未在正确 build 环境
确认 tmp/deploy/images/qemux86-64/ 存在;以 runqemu --help 与当前 poky 文档为准
虚机 OK,U 盘黑屏 / 立刻回固件
镜像没写对,或安全启动拦截,或选成了非 UEFI 项
重写 U 盘;关 Secure Boot;改选 UEFI 启动项
只有 Windows,没有 Linux
EFI 文件没进 ESP,或启动项没注册成功
检查 ESP 目录;用 efibootmgr -v 看是否有新项
有内核日志,但挂根失败
硬盘 root 分区 UUID / 设备名不对,fstab / root= 不匹配
用 Live 环境核对分区并修正启动参数
能进系统,但很多硬件不可用
genericx86-64 驱动覆盖有限
先保证 demo(hello)可跑,硬件完善留给进阶
Windows 不能启动了
ESP 或 Windows 引导被破坏
勿再乱删 EFI 文件;用 Windows 安装介质做启动修复

全书回顾:你已经走完的路

回过头看,这条学习路径是完整的:

篇章
收获
第 1~4 篇
能用白话讲述 power on → … → application,尤其理解 PC 上的 UEFI / GRUB
第 5 篇
明白发行版如何在运行时用 apt / yum 装软件
第 6~7 篇
明白 Yocto 是构建框架;了解玄铁工程;锁定 WSL2 宿主与双 MACHINE
第 8~11 篇
真正完成配置、进一步定制、构建、QEMU 验证与 U 盘双系统运行
第 12 篇
用 Git / GitHub 托管 meta-demo 与 TEMPLATECONF,让自定义配置可复现、可协作

请永远分清几条线:

  1. 玄铁 xuantie-yocto-project:用来理解产业中的厂商 Yocto 工程;
  2. 本系列编译:在 Windows 的 WSL2 Ubuntu 里完成;
  3. 本系列验证:qemux86-64 用 QEMU 快速跑通,genericx86-64 用 U 盘完成真机双系统。

如果你已经在虚机和真机里都看到 Hello from Yocto-built Linux,恭喜——你不只是「会用 Linux」,而是走通了「自己构建并启动一套 Linux」的最小闭环,并且理解了虚机与真机两条验证路径的差别。自定义配置如何长期用 Git 管理,见下一篇。

系列文章列表:

从零构建 Linux 系统
从零构建 Linux|01 启动流程总览
从零构建 Linux|02 Bootloader
从零构建 Linux|03 内核启动
从零构建 Linux|04 Rootfs、init 与服务
从零构建 Linux|05 包管理
从零构建 Linux|06 Yocto 是什么
从零构建 Linux|07 使用 Yocto
从零构建 Linux|08 配置自定义 Linux
从零构建 Linux|09 进一步定制系统
从零构建 Linux|10 构建系统镜像

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 21:00:57 HTTP/2.0 GET : https://f.mffb.com.cn/a/511608.html
  2. 运行时间 : 0.494037s [ 吞吐率:2.02req/s ] 内存消耗:5,246.41kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=089b8537c5920ed8011a561ad5f477a2
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001028s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001478s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.016185s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.020062s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001481s ]
  6. SELECT * FROM `set` [ RunTime:0.021954s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001608s ]
  8. SELECT * FROM `article` WHERE `id` = 511608 LIMIT 1 [ RunTime:0.059768s ]
  9. UPDATE `article` SET `lasttime` = 1787317257 WHERE `id` = 511608 [ RunTime:0.026965s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.001577s ]
  11. SELECT * FROM `article` WHERE `id` < 511608 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002022s ]
  12. SELECT * FROM `article` WHERE `id` > 511608 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.038591s ]
  13. SELECT * FROM `article` WHERE `id` < 511608 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.051398s ]
  14. SELECT * FROM `article` WHERE `id` < 511608 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.031060s ]
  15. SELECT * FROM `article` WHERE `id` < 511608 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.037039s ]
0.499348s