当前位置:首页>Linux>嵌入式 Linux — 根文件系统到底是怎么跑起来的?

嵌入式 Linux — 根文件系统到底是怎么跑起来的?

  • 2026-06-26 15:21:20
嵌入式 Linux — 根文件系统到底是怎么跑起来的?

板块:嵌入式 Linux


内核起来了,然后呢?

这个"然后"卡住了不少人。板子能进 U-Boot,内核启动日志刷了一屏,最后停在"Kernel panic - not syncing: No working init found",一脸懵。或者系统进来了,想加个开机自启的程序,翻了半天不知道该改哪个文件。或者 /dev 下面空空如也,程序打开设备节点直接失败。

这些问题根子都在同一个地方——根文件系统的启动链路。把这条链路搞清楚,上面那些问题就都有地方查了。


一、内核是怎么把控制权交出去的

内核完成自身初始化后,进入 init/main.c 里的 kernel_init() 函数,开始找用户空间的第一个进程来运行。查找逻辑直接看源码最清楚:[¹]

/* init/main.c,kernel_init() 函数,简化版 *//* 优先用 bootargs 里的 init= 参数 */if (execute_command) {    ret = run_init_process(execute_command);    if (!ret)        return 0;    panic("Requested init %s failed (error %d).", execute_command, ret);}/* 没指定就按顺序挨个试 */if (!try_to_run_init_process("/sbin/init") ||    !try_to_run_init_process("/etc/init")  ||    !try_to_run_init_process("/bin/init")  ||    !try_to_run_init_process("/bin/sh"))    return 0;/* 全试完了还没有,panic */panic("No working init found. Try passing init= option to kernel.");

几个关键点:init= 参数在 U-Boot 的 bootargs 里设置,调试时可以直接写 init=/bin/sh 跳过正常启动流程,进一个裸的 shell 救场。默认查找顺序是 /sbin/init → /etc/init → /bin/init → /bin/sh,找到能执行的就停下来,全找不到才 panic。

BusyBox 构建的根文件系统里,/sbin/init 是指向 BusyBox 二进制的符号链接,BusyBox 检测到自己以 init 的名字被调用,就进入 init 模式。

[¹] 参考:内核源码 init/main.c;Linux 内核文档 "Explaining the No working init found message",https://www.kernel.org/doc/html/v6.0/admin-guide/init.html


二、根文件系统的目录结构

FHS(Filesystem Hierarchy Standard)定义了 Linux 各目录的职责,嵌入式系统用的是它的精简子集,最小可用结构大概是这样:

/├── bin/        # 基本命令(sh、ls、cp……),BusyBox 的符号链接群├── sbin/       # 系统命令(init、mdev、ifconfig……)├── lib/        # 动态链接库(libc.so、ld-linux.so……)├── usr/│   ├── bin/│   └── lib/├── etc/│   ├── inittab     # BusyBox init 的主配置│   ├── fstab       # 挂载表│   └── init.d/│       └── rcS     # 系统初始化脚本├── dev/        # 设备节点,启动时由 mdev 填充,自身可以是空目录├── proc/       # 空目录,运行时挂载 procfs├── sys/        # 空目录,运行时挂载 sysfs├── tmp/        # 临时文件,通常挂 tmpfs├── var/        # 日志、运行时文件└── mnt/        # 外部存储挂载点

/proc 和 /sys 目录本身什么都没有,必须运行时挂载,挂上去之后内核才会通过这两个接口向用户空间暴露信息。pstopudevadm 这些命令,底层都在读 /proc,不挂就用不了。


三、BusyBox init 靠 inittab 驱动

BusyBox init 没有 SysVinit 的运行级别,也没有 systemd 的依赖关系图,设计上故意保持简单:读 /etc/inittab,按里面每行的配置执行对应动作,仅此而已。[²]

inittab 每行格式:

id:runlevel:action:process

id 是关联的终端设备,留空用 /dev/consolerunlevel 字段 BusyBox 直接忽略,写了也没用。action 决定什么时候触发,常用的几个:

action
含义
sysinit
启动最早,同步执行,结束前不往下走
wait
执行并等待完成,之后继续
once
执行一次,不等
respawn
进程退出就重启,getty 常用这个
askfirst
类似 respawn,但先提示按回车,调试方便
shutdown
关机时执行
ctrlaltdel
Ctrl+Alt+Del 触发

一个实际用的 inittab

# /etc/inittab# 系统初始化,最先跑,跑完再往下::sysinit:/etc/init.d/rcS# 串口控制台,调试用,不要求登录console::askfirst:-/bin/sh# 生产环境改成这个,要求登录# ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r::shutdown:/sbin/swapoff -a

-/bin/sh 里那个 - 是让 shell 以登录模式启动(会读 .profile),和直接跑 /bin/sh 有区别。

如果根文件系统里压根没有 inittab,BusyBox init 会用内置默认值,等价于:

::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r

[²] 参考:BusyBox 源码 init/init.c;Buildroot 用户手册 BusyBox init 章节,https://buildroot.org/downloads/manual/manual.html


四、rcS 脚本:系统初始化的核心

/etc/init.d/rcS 是 sysinit 触发的第一个脚本,板子能不能正常跑起来,很大程度上取决于这里写了什么。下面是一个带注释的完整版本:

#!/bin/sh# /etc/init.d/rcSPATH=/sbin:/bin:/usr/sbin:/usr/binexport PATHumask 022# proc 和 sys 是内核信息接口,不挂很多工具都废了mount -t proc  none /procmount -t sysfs none /sys# 挂 devtmpfs,让内核在 /dev 下创建基础设备节点# 前提:内核开了 CONFIG_DEVTMPFS# 如果同时开了 CONFIG_DEVTMPFS_MOUNT,内核启动时会自动挂,# 这行会返回"already mounted",不影响后续流程,可以保留mount -t devtmpfs none /dev 2>/dev/null || true# devpts:SSH、telnet、screen 的伪终端需要这个mkdir -p /dev/ptsmount -t devpts devpts /dev/pts -o mode=0622# tmpfs 挂在 /tmp 和 /var,写操作不落 Flashmount -t tmpfs none /tmpmount -t tmpfs none /varmkdir -p /var/log /var/run /var/tmp# 注册 mdev 为热插拔处理程序echo /sbin/mdev > /proc/sys/kernel/hotplug# 扫描 sysfs,补全 /dev 下的设备节点/sbin/mdev -s# 挂载 /etc/fstab 里的其他条目# 注意:fstab 里不要重复写上面已经手动挂过的 proc/sys/dev,# 否则 mount -a 会报"already mounted"(虽然不影响功能,但不干净)mount -a# 配置 loopback,基本网络需要/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0 up# 静态 IP 示例(按实际情况改)# /sbin/ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up# /sbin/route add default gw 192.168.1.1 eth0# 动态 IP(需要 udhcpc)# /sbin/udhcpc -i eth0 &# 加载额外内核模块# modprobe g_serial# modprobe rtc-ds1307# 启动自定义应用# /usr/bin/myapp &echo "rcS done"

关于 mount -t devtmpfs 这里有个常见困惑:内核有两个相关配置,CONFIG_DEVTMPFS 是让内核能挂 devtmpfs,CONFIG_DEVTMPFS_MOUNT 是让内核启动时自动挂到 /dev。后者开了的话,rcS 里手动 mount 会碰到"already mounted"。加 2>/dev/null || true 让它静默通过就行,不必纠结。


五、/etc/fstab

格式:<设备> <挂载点> <类型> <选项> <dump> <fsck顺序>

嵌入式系统的 fstab 通常很短,最后两列(dump/fsck)基本都写 0:

# /etc/fstab# 如果 rcS 里已经手动挂了 proc/sys/dev,这里就不要写,避免 mount -a 报错# 如果想统一用 fstab 管理,就把 rcS 里的手动挂载删掉,只保留这里tmpfs  /tmp  tmpfs  defaults           0  0tmpfs  /var  tmpfs  defaults           0  0# eMMC 第二分区挂 /data(按实际设备名改)# /dev/mmcblk0p2  /data  ext4  defaults,noatime  0  2

noatime 值得单独说一下:它禁止每次读文件时更新访问时间戳,对 SD 卡和 eMMC 来说可以减少不少写操作,嵌入式场景基本上都应该加。


六、BusyBox 和 GNU 工具的区别

BusyBox 把 300 多个常用命令塞进一个二进制,/bin/sbin 下面那一堆命令都是指向这个二进制的符号链接,BusyBox 靠识别调用时的名字来决定执行哪个功能。[³]

ls -la /bin/ls# lrwxrwxrwx ... /bin/ls -> busyboxls -la /sbin/init# lrwxrwxrwx ... /sbin/init -> ../bin/busybox# 查看这份 BusyBox 编译了哪些命令busybox --list

整套 BusyBox 编译出来通常 1~2 MB,而 GNU 工具链完整安装几十 MB,差距就在这——BusyBox 每个命令只实现最常用的子集,很多 GNU 的选项根本不支持。

这里有个坑经常踩:从 PC 上写好的 shell 脚本复制到板子上跑不起来,往往不是脚本本身的问题,而是用了 bash 特性,而板子上的 /bin/sh 是 ash。脚本开头不要写 #!/bin/bash,写 #!/bin/sh,并且不用 bash 扩展语法(比如 [[ ]]$'...'${var//pattern/replacement} 这类)。

[³] 参考:BusyBox 官方文档,https://busybox.net/about.html


七、Buildroot 的 init.d 分发机制

用 Buildroot 构建的系统,/etc/init.d/rcS 本身只是个分发器:

#!/bin/sh# Buildroot 默认生成的 rcSfor i in /etc/init.d/S??* ; do    [ ! -f "$i" ] && continue    case "$i" in        *.sh) . "$i" ;;       # .sh 文件在当前 shell 环境里执行,能修改环境变量        *)    "$i" start ;;   # 其他文件作为独立进程启动,传 start 参数    esacdone

S??* 匹配以 S 加两位数字开头的文件,数字决定顺序,越小越早。一个典型的 init.d 目录:

/etc/init.d/├── rcS├── S01logging      # syslog├── S10mdev         # 设备节点├── S20urandom      # 随机数种子├── S40network      # 网络├── S50dropbear     # SSH└── S99myapp        # 自己的应用,排最后

要加开机自启程序,新建一个 S?? 脚本就行:

#!/bin/sh# /etc/init.d/S99myappDAEMON=/usr/bin/myappPIDFILE=/var/run/myapp.pidcase "$1" in    start)        echo "Starting myapp..."        start-stop-daemon -S -q -m -p "$PIDFILE" -b -x "$DAEMON"        ;;    stop)        echo "Stopping myapp..."        start-stop-daemon -K -q -p "$PIDFILE"        ;;    restart)        "$0" stop        sleep 1        "$0" start        ;;    *)        echo "Usage: $0 {start|stop|restart}"        exit 1esac

加执行权限:chmod +x /etc/init.d/S99myapp

start-stop-daemon 是 BusyBox 内置的,-S 启动、-K 停止、-b 后台运行、-m -p <pidfile> 记录 PID。


八、mdev:BusyBox 的设备管理器

之前写 udev 那篇提到过,资源受限的板子(iMX6ULL + Buildroot 这类)默认用 mdev 而不是 udev。mdev 的配置文件是 /etc/mdev.conf,语法完全不同:

# /etc/mdev.conf# 格式:设备名正则  属主:属组  权限  [符号链接/重命名]  [@添加时|$删除时|*两者都 命令]null            root:root  666zero            root:root  666random          root:root  444urandom         root:root  444console         root:root  600tty             root:root  666tty[0-9]*       root:root  660ttyS[0-9]*      root:root  660# USB 串口:匹配到时额外创建一个固定名字的符号链接ttyUSB[0-9]*    root:root  660  >ttyUSB# SD 卡分区:插入时触发挂载脚本mmcblk[0-9]p[0-9]*  root:root  660  * /etc/mdev/mmc_insert.sh# 其他设备默认权限.*              root:root  660

@$* 分别是"插入时执行"、"拔出时执行"、"插拔都执行",后面跟脚本路径。

mdev 和 udev 的核心差异:

mdev
udev
体积
几十 KB,BusyBox 内置
几 MB,独立守护进程
配置语法
/etc/mdev.conf
,正则
/etc/udev/rules.d/*.rules
热插拔机制
写 /proc/sys/kernel/hotplug,内核直接调用
netlink socket,udevd 常驻监听
调试手段
基本没有,靠 dmesg
udevadm test
 / udevadm monitor

mdev 没有持续运行的守护进程,热插拔事件发生时内核直接 fork 出 mdev 执行一次然后退出,开销小但功能也有限。


九、启动问题排查

"Kernel panic - not syncing: No working init found"

内核找不到能执行的 init 程序。这个错误只有几种可能:

# 根文件系统没挂上——看内核日志里有没有这行# VFS: Mounted root (ext4 filesystem) readonly on device 179:2# 没有这行说明 rootfs 挂载失败,检查 bootargs 里的 root= 参数和分区格式# 根文件系统挂上了但 /sbin/init 不存在或没有执行权限ls -la /sbin/init    # 应该是指向 busybox 的符号链接ls -la /bin/busybox  # 确认 busybox 本体在# busybox 是动态链接的,lib 下没有对应的 so 文件file /bin/busybox# 如果显示 "dynamically linked",检查 /lib 下有没有 libc.so 之类的

/dev 下设备节点不全

# 手动触发 mdev 重新扫描/sbin/mdev -s# 确认 hotplug 已经指向 mdevcat /proc/sys/kernel/hotplug# 应该输出 /sbin/mdev# 看 sysfs 里这个设备内核有没有识别ls /sys/class/tty/ls /sys/bus/usb/devices/

rcS 跑失败,系统直接进了一个裸 shell

BusyBox init 的 sysinit 失败不会 panic,它继续处理后面的 askfirst/respawn 条目,所以可能看到系统"起来了"但没有正常初始化。在这个 shell 里手动排查:

sh -x /etc/init.d/rcS# -x 会把每条命令和执行结果都打印出来,看哪行出错

S?? 脚本没有被执行

不用怀疑 rcS 的逻辑,先查这两个:

# 1. 有没有执行权限(这个坑踩过不止一次)ls -l /etc/init.d/S99myapp# 2. 有没有 Windows 换行符(从 Windows 上传过来的脚本容易这样)file /etc/init.d/S99myapp# 显示 "with CRLF line terminators" 就用 dos2unix 转一下dos2unix /etc/init.d/S99myapp

十、动态库:手动搭根文件系统最容易忽略的坑

BusyBox 通常静态编译,一个二进制包含所有工具,不依赖额外的 so 文件。但自己写的应用程序几乎都是动态链接的——运行时找不到对应的 .so,报的是"No such file or directory",而不是更直观的"library not found",第一次碰到通常要绕一圈才想到原因。

在开发机上查清楚依赖,然后再复制:

# 查看需要哪些动态库arm-linux-gnueabihf-readelf -d myapp | grep NEEDED# NEEDED  libstdc++.so.6# NEEDED  libm.so.6# NEEDED  libc.so.6# 从工具链 sysroot 里找到这些库find /usr/arm-linux-gnueabihf/lib/ -name "libstdc++.so*"# 复制到根文件系统(-a 保留符号链接,不能省)cp -a /usr/arm-linux-gnueabihf/lib/libstdc++.so* rootfs/lib/cp -a /usr/arm-linux-gnueabihf/lib/libm.so*       rootfs/lib/cp -a /usr/arm-linux-gnueabihf/lib/libc.so*       rootfs/lib/cp -a /usr/arm-linux-gnueabihf/lib/ld-linux*.so*  rootfs/lib/

还有一个容易漏的:ld-linux.so(动态链接器本身)。没有它,动态链接的程序直接起不来,报错和缺库一样,但原因完全不同。Buildroot 构建时会自动处理这些,手动搭就得自己盯着。


小结

从内核交棒到系统就绪,整条链路是:

kernel_init() → 找 /sbin/init    │    ▼BusyBox init → 读 /etc/inittab    │    ▼sysinit → /etc/init.d/rcS    ├─ 挂 proc / sys / dev    ├─ mdev -s 创建设备节点    ├─ mount -a 处理 fstab    └─ 拉起 S?? 服务脚本    │    ▼askfirst / respawn → getty 或 shell

"系统起不来"这类问题,按这条链路一段一段排查就有方向:内核 panic 看 rootfs 挂没挂上、init 找没找到;init 起了查 inittab 和 rcS;rcS 跑了查 mdev 和设备节点;节点有了查应用程序和动态库。每段都有迹可循,不用靠猜。


参考资料

  1. 1. Linux 内核文档:init 进程查找 — https://www.kernel.org/doc/html/v6.0/admin-guide/init.html
  2. 2. Linux 内核源码:init/main.c — https://github.com/torvalds/linux/blob/master/init/main.c
  3. 3. Buildroot 用户手册:init system — https://buildroot.org/downloads/manual/manual.html
  4. 4. Bootlin 嵌入式 Linux 培训讲义 — https://bootlin.com/doc/training/embedded-linux/
  5. 5. BusyBox 官方文档 — https://busybox.net/about.html
  6. 6. FHS v3.0 — https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 10:55:57 HTTP/2.0 GET : https://f.mffb.com.cn/a/497227.html
  2. 运行时间 : 0.123576s [ 吞吐率:8.09req/s ] 内存消耗:4,596.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=51d0ca511e82e9a844cdf8a9d719d9e4
  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.000647s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000943s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000345s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000289s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000509s ]
  6. SELECT * FROM `set` [ RunTime:0.000208s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000582s ]
  8. SELECT * FROM `article` WHERE `id` = 497227 LIMIT 1 [ RunTime:0.002179s ]
  9. UPDATE `article` SET `lasttime` = 1783047357 WHERE `id` = 497227 [ RunTime:0.000940s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000256s ]
  11. SELECT * FROM `article` WHERE `id` < 497227 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001130s ]
  12. SELECT * FROM `article` WHERE `id` > 497227 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003339s ]
  13. SELECT * FROM `article` WHERE `id` < 497227 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.018004s ]
  14. SELECT * FROM `article` WHERE `id` < 497227 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004782s ]
  15. SELECT * FROM `article` WHERE `id` < 497227 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.018820s ]
0.125966s