当前位置:首页>Linux>嵌入式 Linux 的镜像从哪来?Boot、内核、设备树、RootFS 到底干啥的

嵌入式 Linux 的镜像从哪来?Boot、内核、设备树、RootFS 到底干啥的

  • 2026-06-26 03:36:14
嵌入式 Linux 的镜像从哪来?Boot、内核、设备树、RootFS 到底干啥的

做嵌入式 Linux 项目,大多数人的日常是:拿到开发板、烧镜像、跑 demo,然后根据需求写应用。

问题是,出了事你得知道去哪查。串口不出数据、内核 panic、某个 I2C 设备不工作——这三个问题的根子完全不在一层,蒙着头到处改只会越改越乱。

这篇文章想把底层逻辑说清楚:一块板子从上电到跑应用,经历了哪几层,每层干了什么,配置文件在哪。


嵌入式 Linux 和桌面发行版的本质差别

桌面 Linux 下个 ISO 装上就能跑,因为 x86 的硬件规范相对统一,内核一套打天下。

嵌入式不一样。NXP i.MX8、ST STM32MP1、RK3568,每家芯片的内存控制器、时钟树、中断控制器都不同。你没法拿一个通用镜像烧进去就跑——得针对这块板子,把下面四样东西配齐:

Bootloader + 内核 + 设备树 + RootFS

这四样东西的分工,一句话说就是:Bootloader 负责"把系统叫醒",内核负责"管着所有硬件",设备树负责"告诉内核板子长什么样",RootFS 负责"给用户空间提供地基"。


上电之后发生了什么

芯片上电,最先跑的是片内 ROM 里固化的代码。这段代码不可修改,厂商出厂时就固化了。它做一件事:从约定好的存储介质(eMMC、SD 卡、SPI Flash)里找 Bootloader,加载进来,跳过去执行。

从这一步开始,控制权按顺序向上交接:

ROM → Bootloader → 内核(+设备树)→ RootFS → 应用程序

每一层依赖下一层已经把环境准备好。任何一层没跑起来,后面的就不会出现。这就是为什么串口静默、内核 panic、应用崩溃是三种完全不同的故障——它们卡在了不同的层。


Bootloader:系统跑起来之前的那段代码

最常见的是 U-Boot以及Yocto。它不属于 Linux 系统本身,但 Linux 能不能起来,它说了算。

核心工作:

  • • 初始化 DDR,没有可用内存,内核没地方加载
  • • 初始化时钟树,外设时钟没开,驱动 probe 必然失败
  • • 从存储介质读内核镜像(zImage / Image)到内存
  • • 把设备树(.dtb)地址传给内核,跳到内核入口

U-Boot 启动脚本一般长这样,实际项目里会把地址写进环境变量,而不是硬编码:

# 设置启动参数,告诉内核根文件系统在哪setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw"# 从 eMMC 分区 1 加载内核和 DTB 到内存load mmc 1:1 ${kernel_addr_r} /boot/Imageload mmc 1:1 ${fdt_addr_r} /boot/my-board.dtb# 引导内核,中间的 '-' 表示不使用 initrdbooti ${kernel_addr_r} - ${fdt_addr_r}

booti 的参数顺序是 [内核地址] [initrd地址] [DTB地址],不带 initrd 时用 - 占位。bootm 用于 uImage 格式,bootz 用于 zImage,booti 专用于 arm64 的 Image 格式,三个命令不能混用。

大多数工程师不需要从零写 U-Boot,直接用芯片原厂 BSP 里提供的配置,改一下存储介质和分区就够了。真正需要动 Bootloader 的场景,通常是做安全启动(Secure Boot)或者自定义 OTA 升级策略。


内核:管着所有硬件的那一层

内核是整个系统的中枢。驱动加载、内存分配、进程调度、中断处理,全在这一层。

嵌入式场景里,内核需要按项目需求裁剪。不用蓝牙的产品把蓝牙驱动关掉,不需要某个文件系统的把它去掉,能让系统更小、启动更快。操作入口是 make menuconfig,基于原厂 BSP 提供的 defconfig 开始,按需调整后编译:

# 以 NXP i.MX8 系列为例,加载原厂默认配置make imx_v8_defconfig# 打开图形配置界面,按需增删模块make menuconfig# 交叉编译内核和设备树,根据实际工具链调整 CROSS_COMPILEmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image dtbs -j$(nproc)

编译产物:内核镜像在 arch/arm64/boot/Image,各板子的 .dtb 在 arch/arm64/boot/dts/ 对应厂商目录下。


设备树:告诉内核板子长什么样

早期 Linux 里,不同板子的硬件信息直接写在内核 C 代码里,一块板子一份代码,维护起来很难。

设备树解决了这个问题:把硬件描述从内核代码里剥离出来,写成单独的 .dts 文件,编译成 .dtb 二进制由 Bootloader 传给内核。同一个内核镜像,换一个 DTB,就能支持不同的板子。

一个真实的设备树节点长这样,描述一个挂在 I2C1 总线上的温度传感器:

/* arch/arm64/boot/dts/vendor/myboard.dts */&i2c1 {    clock-frequency = <400000>;   /* I2C 速率 400kHz */    pinctrl-names = "default";    pinctrl-0 = <&pinctrl_i2c1>;    status = "okay";    temp_sensor: tmp102@48 {        compatible = "ti,tmp102";          /* 内核用这个字符串匹配驱动 */        reg = <0x48>;                      /* I2C 设备地址 */        interrupt-parent = <&gpio1>;        interrupts = <4 IRQ_TYPE_LEVEL_LOW>;    };};

compatible = "ti,tmp102" 是内核匹配驱动的依据。内核启动时扫描设备树,每碰到一个节点,就拿 compatible 字符串去跟已注册的驱动列表比对,找到匹配的就调用该驱动的 probe 函数。对应的驱动侧代码是这样的:

/* drivers/hwmon/tmp102.c(内核源码中实际存在) */static conststruct of_device_id tmp102_of_ids[] = {    { .compatible = "ti,tmp102", },    { }   /* 哨兵,表示列表结束 */};MODULE_DEVICE_TABLE(of, tmp102_of_ids);staticstruct i2c_driver tmp102_driver = {    .driver = {        .name       = "tmp102",        .of_match_table = tmp102_of_ids,  /* 指向上面的匹配表 */    },    .probe  = tmp102_probe,    .remove = tmp102_remove,};

驱动找不到,设备不工作,但内核照常起来,不会崩,dmesg 里会有 no driver found for device 之类的提示。

工程实践里通常是拿厂商板级 .dts 模板,根据自己的硬件增减节点,然后单独编译 DTB 验证:

# 单独编译某块板子的 DTB,不需要重新编译整个内核make ARCH=arm64 vendor/my-board.dtb

RootFS:用户空间的地基

内核初始化完成后,挂载根文件系统,运行第一个用户态进程(/sbin/init 或 systemd)。从这里开始才进入"用户空间"。

根文件系统里有:

  • • BusyBox 提供的基础命令和 Shell(lsmountifconfig 这些)
  • • C 库(嵌入式通常用 musl 或 uClibc-ng,比 glibc 体积小很多)
  • • 初始化脚本 / systemd unit
  • • 你自己的应用程序和它的依赖库

构建工具一般用 Buildroot。从厂商 BSP 的 defconfig 开始,用 make menuconfig 添加需要的软件包,编译后得到可以直接烧录的镜像:

# 加载厂商提供的默认配置make imx8mm_evk_defconfig# 打开配置界面,按需勾选软件包# 常见的有:Python3、openssl、dropbear(SSH)、iperf3 等make menuconfig# 编译,产物在 output/images/# rootfs.ext4 是可直接烧录的文件系统镜像make -j$(nproc)

值得注意的一点:RootFS 和 CPU 架构绑定,不和板卡绑定。 同样是 ARM Cortex-A 架构的板子,一份 RootFS 基本可以复用,不像设备树那样每块板子都要单独维护。


出问题,先看哪一层

dmesg 是最直接的线索。内核启动时每个驱动 probe 成功或失败都会打印,看到 probe 成功才是真的初始化好了:

# 过滤某个设备的 probe 信息dmesg | grep tmp102# 典型的成功输出:# [    2.347] tmp102 1-0048: tmp102 temperature sensor# 失败时会看到类似:# [    2.348] tmp102: probe of 1-0048 failed with error -5

按现象对应到层,省掉盲猜的时间:

现象
优先排查
上电串口没有任何输出
Bootloader / 硬件本身
内核 log 中途停住、panic
内核配置或设备树
某外设不响应,dmesg 没有 probe 成功记录
设备树节点,检查 compatible 字符串
sh: xxx: not found
、库缺失、段错误
RootFS,检查交叉编译工具链是否匹配
驱动 probe 成功但设备行为异常
驱动代码逻辑,或设备树参数配错

最后

四层东西,分工明确:

  • • Bootloader:芯片厂给的,改动少,主要配存储介质和分区、启动参数
  • • 内核:基于厂商 defconfig 裁剪,make menuconfig 前先把 Kconfig 的 help 文档看一遍
  • • 设备树:按自己的板子增减节点,改完用 dtc -I dtb -O dts 反编译检查一下实际生效的内容
  • • RootFS:Buildroot 构建,同架构可复用,按需加软件包,注意工具链版本要和内核编译时一致

对大多数嵌入式 Linux 工程师来说,日常不是从零搭这套系统,而是在 BSP 框架里做定制。搞清楚每一层的职责和配置入口,比背接口用处大得多。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 17:54:09 HTTP/2.0 GET : https://f.mffb.com.cn/a/494402.html
  2. 运行时间 : 0.330007s [ 吞吐率:3.03req/s ] 内存消耗:5,426.80kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a27b630c88dcdf1c092f9ec175bc884c
  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.000829s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000862s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.031380s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000339s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000735s ]
  6. SELECT * FROM `set` [ RunTime:0.000499s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000736s ]
  8. SELECT * FROM `article` WHERE `id` = 494402 LIMIT 1 [ RunTime:0.006773s ]
  9. UPDATE `article` SET `lasttime` = 1783072449 WHERE `id` = 494402 [ RunTime:0.003722s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.013358s ]
  11. SELECT * FROM `article` WHERE `id` < 494402 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.012635s ]
  12. SELECT * FROM `article` WHERE `id` > 494402 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000556s ]
  13. SELECT * FROM `article` WHERE `id` < 494402 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004550s ]
  14. SELECT * FROM `article` WHERE `id` < 494402 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.080220s ]
  15. SELECT * FROM `article` WHERE `id` < 494402 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.027319s ]
0.331630s