当前位置:首页>Linux>嵌入式Linux文件系统制作丨从BusyBox到根文件系统

嵌入式Linux文件系统制作丨从BusyBox到根文件系统

  • 2026-02-28 08:51:23
嵌入式Linux文件系统制作丨从BusyBox到根文件系统

在工业现场,特别是面对高可靠性要求的嵌入式网关或工控机项目时,最让开发人员头皮发麻的瞬间往往不是代码编译失败,而是设备在经历一次意外断电重启后,串口打印出那行令人窒息的日志:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)。或者更隐蔽的情况是,系统起来了,但某些关键服务因为缺少动态库文件而无法启动,导致设备变砖。构建一个最小且稳定的根文件系统(Root Filesystem, RootFS),是嵌入式Linux从内核启动到用户空间业务运行的必经之路。很多初级工程师习惯直接使用厂商提供的SDK包,一旦遇到Flash空间受限(如仅有16MB SPI Flash)或者需要极速启动(<3秒)的需求,就会因为不懂底层原理而束手无策。我们需要深入理解从存储介质物理特性到内核挂载,再到init进程启动的全链路逻辑,才能构建出真正符合工业级标准的根文件系统。

一、存储介质与物理特性分析

根文件系统不仅仅是文件夹的堆砌,它必须适配底层的物理存储介质。在嵌入式系统中,我们最常面对的是Raw Flash(如NAND、NOR)和eMMC/SD卡。这两类介质的物理读写特性完全不同,直接决定了我们文件系统的选型和制作方式。

对于Raw Flash,我们必须面对其“先擦后写”的物理特性。Flash的最小写入单元是“页(Page)”,但最小擦除单元是“块(Block)”。如果我们直接在NAND Flash上运行针对磁盘设计的EXT4文件系统,频繁的元数据更新会迅速耗尽块的擦除寿命(P/E cycle),并且由于缺乏对坏块(Bad Block)的底层管理,数据丢失是必然的。

因此,在物理层我们必须理解MTD(Memory Technology Device)层的作用。MTD屏蔽了NOR和NAND的底层指令差异(如读ID、擦除、编程),向操作系统提供统一的访问接口。

针对NAND Flash,物理层还存在位翻转(Bit Flip)现象。在高温高干扰环境下,Flash内部的电荷可能会发生逃逸,导致读取的数据出错。这就要求我们在制作文件系统镜像时,必须考虑ECC(Error Correction Code)校验算法。例如,使用UBIFS文件系统时,不仅需要利用Flash的OOB(Out-Of-Band)区域存储ECC信息,还需要在控制器层面配置正确的ECC强度(如4bit/512Byte或8bit/512Byte)。如果内核配置的ECC算法与硬件控制器或制作镜像工具(如ubinize)使用的算法不一致,内核在挂载根文件系统时就会因为校验失败而报错。

二、BusyBox构建与初始化流程

BusyBox被称为“嵌入式Linux的瑞士军刀”,它将lscpinitsh等常用命令裁剪并合并到一个可执行文件中,通过软链接来区分具体调用的功能。构建工业级RootFS的核心在于正确配置和编译BusyBox,以及编写健壮的启动脚本。

我们通常使用make menuconfig对BusyBox进行配置。在工业场景下,有两个配置项至关重要:

  1. Build BusyBox as a static binary (no shared libs):如果系统Flash极小且业务逻辑简单,我们选择静态编译,这样可以省去部署libc.so及其复杂的软链接,避免“动态库地狱”。

  2. Support for /etc/inittab:这是SysV风格启动的核心,必须开启。

编译完成后,我们得到_install目录。接下来需要手动创建Linux约定的目录结构:devetclibprocsystmpvar

其中,/etc/inittabinit进程(PID 1)读取的配置文件,它决定了系统的启动流程。以下是一个工业级通用的inittab配置示例及详细解释:

/* /etc/inittab 配置详解 */

/* 格式:id:runlevels:action:process */

/* * 系统初始化阶段 

 * ::sysinit:/etc/init.d/rcS

 * sysinit表示系统启动后最先执行的动作。

 * rcS脚本通常用于挂载伪文件系统、加载驱动、配置网络等。

 */

::sysinit:/etc/init.d/rcS

/* * 响应Ctrl+Alt+Del组合键

 * 在调试阶段很有用,但在量产设备中我们通常会注释掉,防止误操作重启。

 */

::ctrlaltdel:/sbin/reboot

/* * 关机或重启时的清理工作

 * 确保文件系统被正确卸载(umount),防止数据丢失。

 */

::shutdown:/bin/umount -a -r

/* * 启动Shell

 * 在串口控制台(console)上启动一个交互式Shell。

 * askfirst表示在启动Shell前提示"Please press Enter to activate this console"。

 * 这可以防止串口上的噪声干扰导致Shell误触发。

 */

::askfirst:-/bin/sh

紧接着是/etc/init.d/rcS脚本,这是系统初始化的核心逻辑。我们需要在这里进行防御性编程:

#!/bin/sh

# 设置环境变量,确保命令能被找到

PATH=/sbin:/bin:/usr/sbin:/usr/bin

export PATH

# 关键:挂载虚拟文件系统

# /proc 和 /sys 是内核导出信息的窗口,必须最先挂载

# 否则 ps、top、mdev 等命令无法工作

mount -t proc none /proc

mount -t sysfs none /sys

# 解析:使用mdev进行设备节点管理

# 嵌入式系统通常不运行庞大的udev,而是使用BusyBox自带的mdev

# echo /sbin/mdev > /proc/sys/kernel/hotplug 告诉内核,

# 当有硬件插拔时,调用mdev来创建或删除/dev下的设备节点

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

# 挂载所有在 /etc/fstab 中定义的文件系统

# -a 表示所有, 2>/dev/null 丢弃错误信息,防止干扰控制台

mount -a

# 配置网络(工业现场通常使用静态IP或特定的DHCP超时策略)

ifconfig eth0 up

ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# 启动业务程序

# 注意:这里推荐使用后台运行 (&),避免阻塞启动流程

/usr/bin/my_industry_app &

三、从源码到汇编指令分析

当内核完成硬件初始化后,最后一个动作是挂载根文件系统并执行init程序。我们需要深入内核源码和汇编层面,理解这一控制权是如何转移的。这是理解RootFS本质的关键。

内核启动的最后阶段执行rest_init()函数(位于init/main.c)。在这个函数中,内核会产生第一个内核线程kernel_init

/* Linux Kernel 源码片段逻辑 */

static int __ref kernel_init(void *unused)

{

    /* ...省略部分初始化代码... */

    /* 尝试执行 init 程序 */

    if (!ramdisk_execute_command)

        ramdisk_execute_command = "/init";

    /* * 这里的 run_init_process 会调用 do_execve 系统调用

     * 它将替换当前进程的镜像,从此进入用户空间。

     */

    if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {

        ramdisk_execute_command = NULL;

        prepare_namespace();

    }

    /* 依次尝试以下标准路径 */

    run_init_process("/sbin/init");

    run_init_process("/etc/init");

    run_init_process("/bin/init");

    run_init_process("/bin/sh");

    /* 如果以上都失败,内核将无事可做,触发 Panic */

    panic("No init found.  Try passing init= option to kernel.");

}

run_init_process调用do_execve加载BusyBox编译出的init程序时,涉及到底层的ELF文件解析和执行域切换。对于ARM架构,从内核态(SVC模式)切换到用户态(USR模式)并跳转到用户代码入口,涉及到寄存器的上下文恢复。

在汇编层面(以ARMv7为例),内核在完成系统调用返回用户空间时,会执行类似以下的指令序列(位于arch/arm/kernel/entry-common.S):

/* 恢复用户态寄存器 */

restore_user_regs:

    ldr r1, [sp, #S_PSR]    @ 从栈中读取保存的程序状态寄存器(CPSR)

    ldr lr, [sp, #S_PC]     @ 从栈中读取保存的PC指针(即用户程序的入口地址)

    msr spsr_cxsf, r1       @ 将旧的CPSR写入SPSR(Saved Program Status Register)

    /* * 关键指令:LDM (Load Multiple) 

     * 这里的 ^ 符号表示恢复用户模式的寄存器

     * 这一步将栈中的数据弹出到 R0-R12 寄存器中

     */

    ldmia sp, {r0 - r12}^   

    add sp, sp, #S_FRAME_SIZE  @ 调整内核栈指针

    /* * 关键指令:MOVS PC, LR

     * 将LR的值赋给PC,同时将SPSR的值恢复到CPSR

     * 这一步完成了从内核模式到用户模式的原子切换

     */

    movs pc, lr

如果根文件系统中缺少动态链接库(如ld-linux.solibc.so),或者架构不匹配(如在ARM板子上运行x86二进制),ELF解析器(fs/binfmt_elf.c)在加载阶段就会报错,导致execve返回错误码,最终导致内核Panic。这解释了为什么在制作文件系统时,拷贝交叉编译链的lib目录必须极其精确——不仅要拷贝.so文件,还要保留软链接属性(cp -d),因为ld-linux.so往往是一个指向具体版本加载器的软链接。

四、调试方法与量产隐患

在文件系统制作完成并投入量产(10k+台)后,一些隐蔽的问题才会暴露出来。以下是我们在调试和量产阶段必须关注的重点。

1. 动态库版本与符号不匹配

这是一个经典问题。编译BusyBox和业务程序时使用的交叉编译链版本必须一致。如果你用GCC 4.8编译了BusyBox,却用GCC 7.5编译了业务程序,并试图在同一个RootFS中运行,可能会遇到GLIBC_2.27 not found之类的错误。

调试手段:使用readelf -d /bin/busybox查看NEEDED字段,确认依赖库。使用strings /lib/libc.so.6 | grep GLIBC查看当前库支持的版本集合。

2. 文件系统权限与Ownership

在Windows环境下解压或复制RootFS文件,往往会丢失文件的执行权限(x位)和属主(uid/gid)。如果/bin/init没有执行权限,内核将无法启动它。如果关键的设备节点或配置文件属主不是root,可能会导致安全漏洞或服务启动失败。

调试手段:不要直接拷贝文件目录制作镜像。应使用fakeroot工具配合mkfs.ubifsmke2fs制作镜像,或者编写设备节点表(device table),在生成镜像时显式指定文件的权限和属性。

3. 非正常断电导致的文件系统损坏

在工业现场,直接拔电是常态。如果使用YAFFS2或UBIFS,通常具有一定的掉电保护能力。但如果是EXT4运行在SD卡上,且未开启日志(Journaling)或挂载选项设置不当(如使用了writeback模式),极易在写入数据时断电导致元数据损坏,下次启动变成只读模式(Read-only file system)。

量产隐患:批量生产后发现某批次SD卡质量较差,写入延迟大,加剧了断电损坏的概率。

解决方案

  • 对于只读数据(如程序、库),划分单独的只读分区(SquashFS)。

  • 对于可写数据(日志、配置),使用独立分区,并采用对掉电友好的文件系统(UBIFS)。

  • cmdlinefstab中配置rootflags=data=journal,虽然牺牲性能但保证数据一致性。

  • 引入OverlayFS:底层只读,上层可写(RAM或Flash),重启后复原,或仅持久化关键配置。

通过逻辑分析仪抓取Flash的片选(CS)和写使能(WE)信号,我们可以观察到:正常的系统在关机时会有一段密集的写入波形(sync操作),而直接断电会导致波形截断。如果截断点正好处于一次Page Program周期的中间(例如NAND Flash的tPROG时间通常为200us-500us),该Page的数据大概率会位翻转,甚至影响同Block的其他Page。

构建根文件系统是一项需要对“软硬结合”有深刻理解的工程。从选型Flash对应的文件系统格式,到精细化裁剪BusyBox,再到对内核启动流的汇编级理解,每一个环节的疏忽都可能导致量产灾难。

还不知道如何下手学习单片机开发?信盈达精心整理《单片机全能学习包》,学习书籍、软件工具包、课件教案、项目原理图、芯片手册、例程代码、视频教程等一次性全部送上!助你快速升级打BOSS。大家可以添加下方小助手领取~

 添加小助手   领取学习包  

添加后回复 “单片机” 更快领取哦

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-02 10:10:13 HTTP/2.0 GET : https://f.mffb.com.cn/a/477648.html
  2. 运行时间 : 0.086733s [ 吞吐率:11.53req/s ] 内存消耗:4,568.16kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2f428f67888ef31bdfcddc11151fb87c
  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.000570s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000667s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000294s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000293s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000642s ]
  6. SELECT * FROM `set` [ RunTime:0.000294s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000543s ]
  8. SELECT * FROM `article` WHERE `id` = 477648 LIMIT 1 [ RunTime:0.001294s ]
  9. UPDATE `article` SET `lasttime` = 1772417413 WHERE `id` = 477648 [ RunTime:0.007873s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000247s ]
  11. SELECT * FROM `article` WHERE `id` < 477648 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000643s ]
  12. SELECT * FROM `article` WHERE `id` > 477648 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000735s ]
  13. SELECT * FROM `article` WHERE `id` < 477648 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001170s ]
  14. SELECT * FROM `article` WHERE `id` < 477648 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001254s ]
  15. SELECT * FROM `article` WHERE `id` < 477648 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001040s ]
0.088425s