当前位置:首页>Linux>[TinyLinux-009] 系统启动流程分析:从 BIOS 到 Shell 的完整旅程

[TinyLinux-009] 系统启动流程分析:从 BIOS 到 Shell 的完整旅程

  • 2026-03-17 21:32:04
[TinyLinux-009] 系统启动流程分析:从 BIOS 到 Shell 的完整旅程

[TinyLinux-009] 系统启动流程分析:从 BIOS 到 Shell 的完整旅程

系列简介:TinyLinux 是由 LabHub 发起的"大道至简"Linux 学习项目。我们通过对内核进行"剔骨"级的物理精简,旨在构建一个 100% 透明、可重现的极简实验室。

公众号:LabHub | 项目仓库:https://gitee.com/lynyujiang/tiny-linux.git


🛠 技术看板

项目
内容
实验目标
深入分析 Linux 系统启动流程,理解从 BIOS 到 Shell 的每个阶段
核心知识点
BIOS/UEFI / 内核引导 / initramfs / init 进程 / 串口控制台
涉及文件
scripts/run_qemu.sh
overlay/etc/init.d/rcS
难度等级
🌟🌟🌟🌟 (高级)
启动时间
1.41 秒(从开机到 Shell 提示符)
调试工具
QEMU / 串口日志 / 内核命令行

1. 知识点详注 (Technical Glossary)

  • BIOS/UEFI:基本输入输出系统(BIOS)或其现代替代品统一可扩展固件接口(UEFI)。负责硬件初始化和引导加载程序加载。TinyLinux 使用 SeaBIOS(开源 BIOS 实现)。
  • Bootloader:引导加载程序,如 GRUB、LILO。负责加载内核到内存并传递启动参数。TinyLinux 使用 QEMU 直接内核启动,无需传统 bootloader。
  • initramfs/initrd:初始 RAM 文件系统,是一个临时的根文件系统,在内核启动早期加载到内存中。包含必要的驱动和 init 脚本。
  • **内核命令行 (Kernel Command Line)**:传递给内核的启动参数,如 console=ttyS0 root=/dev/ram0。决定内核如何初始化硬件和挂载根文件系统。
  • init 进程:系统启动后运行的第一个用户空间进程(PID=1),负责初始化系统、挂载文件系统、启动服务。TinyLinux 使用 BusyBox init。

2. 理论背景 (Deep Theory)

2.1 Linux 系统启动的六个阶段

┌─────────────────────────────────────────────────────────────────┐
│  阶段 1: BIOS/UEFI 初始化 (约 0.05 秒)                            │
│  - POST (Power-On Self Test)                                    │
│  - 硬件检测和初始化                                              │
│  - 引导设备选择                                                  │
│  - 加载 Boot Sector                                              │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  阶段 2: 内核解压和早期初始化 (约 0.05 秒)                         │
│  - bzImage 解压到内存                                            │
│  - 设置页表和内存管理                                            │
│  - early_printk 开始输出                                         │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  阶段 3: 内核核心初始化 (约 0.35 秒)                               │
│  - CPU 和内存子系统初始化                                         │
│  - 中断控制器设置                                                │
│  - 调度器和定时器初始化                                           │
│  - 设备驱动探测                                                  │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  阶段 4: initramfs 加载 (约 0.20 秒)                              │
│  - 解压 cpio 归档                                                 │
│  - 挂载为临时根文件系统                                           │
│  - 准备用户空间环境                                              │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  阶段 5: init 进程执行 (约 0.70 秒)                               │
│  - 执行 /sbin/init (PID=1)                                      │
│  - 挂载 /proc /sys /dev                                         │
│  - 运行 /etc/init.d/rcS                                         │
│  - 启动 mdev 设备管理器                                          │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  阶段 6: Shell 提示符 (约 0.06 秒)                                │
│  - 显示欢迎信息                                                  │
│  - 加载 /etc/profile                                             │
│  - 显示 TinyLinux# 提示符                                        │
└─────────────────────────────────────────────────────────────────┘

总启动时间:约 1.41 秒

2.2 为什么 TinyLinux 启动如此快速?

优化项
传统 Linux
TinyLinux
时间节省
内核体积
~11MB
~2MB
82%
驱动数量
数千个
十几个
99%
网络栈
完整 TCP/IP
100%
图形界面
DRM/FB
100%
服务数量
数十个
100%
init 系统
systemd/SysV
BusyBox init
90%

2.3 串口调试的优势

在虚拟化环境中,串口(ttyS0)是最佳的调试通道:

特性
串口 (ttyS0)
VGA 控制台
早期输出
✅ early_printk
❌ 需要显卡驱动
稳定性
✅ 简单可靠
❌ 可能花屏
日志捕获
✅ 可重定向到文件
❌ 需截图
双向通信
✅ 可输入命令
✅ 可输入
远程访问
✅ 可通过网络
❌ 需 VNC

3. 源码与脚本深度走读 (Source Code Dive)

3.1 启动脚本:run_qemu.sh

#!/bin/bash
###############################################################################
# TinyLinux OS - QEMU Execution Script
###############################################################################
export LC_ALL=C LANGUAGE=C LANG=C

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "
${SCRIPT_DIR}/../env.sh"

# 内核和 initrd 路径
KERNEL_PATH="
${TINYLINUX_TARGET_DIR}/bzImage"
INITRD_PATH="
${TINYLINUX_TARGET_DIR}/rootfs.cpio.xz"

# QEMU 基础参数
QEMU_ARGS="
-m 512 -smp 1"                    # 512MB 内存,单核
QEMU_ARGS="
$QEMU_ARGS -kernel ${KERNEL_PATH}"  # 直接内核启动
QEMU_ARGS="
$QEMU_ARGS -initrd ${INITRD_PATH}"  # 加载 initrd
QEMU_ARGS="
$QEMU_ARGS -nographic -no-reboot"   # 无图形,崩溃不重启

# 内核启动参数(关键!)
APPEND="
console=ttyS0 earlyprintk=serial,ttyS0,115200 root=/dev/ram0 rdinit=/sbin/init loglevel=7 debug panic=1"

echo "
Command: qemu-system-x86_64 $QEMU_ARGS -append \"$APPEND\""
echo "
TIP: Press 'Ctrl+A then X' to exit QEMU."

qemu-system-x86_64 $QEMU_ARGS -append "
$APPEND"

3.2 内核命令行参数详解

参数
说明
consolettyS0
控制台输出到串口
earlyprintkserial,ttyS0,115200
早期调试输出,波特率 115200
root/dev/ram0
根文件系统为 RAM 磁盘
rdinit/sbin/init
指定 init 进程路径
loglevel7
内核日志级别(7=最高详细度)
debug
-
启用调试模式
panic1
内核崩溃后 1 秒重启

3.3 init 脚本:overlay/etc/init.d/rcS

#!/bin/sh
# TinyLinux Minimal Init

# 1. 基础挂载
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev 2>/dev/null || true

# 2. 设置主机名
# hostname TinyLinux

# 3. 打印精简欢迎语
cat /etc/issue 2>/dev/null

3.4 Shell 环境:overlay/etc/profile

# /etc/profile: Minimal shell setup
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PS1='TinyLinux# '

# 常用别名
alias ll='ls -l'
alias df='df -h'
alias free='free -h'

# 自动打印版本(如果存在)
[ -f /etc/version ] && cat /etc/version

4. 配置详解 (Config & Engineering)

4.1 启动时间分解(实测数据)

时间戳
事件
耗时
0.000000s
BIOS 启动
0.05s
0.000000s
内核命令行显示
-
0.000000s
内存映射显示
-
0.017608s
RAMDISK 加载
0.02s
0.407530s
Unpacking initramfs
0.20s
0.671365s
Run /sbin/init
0.26s
1.410488s
Shell 就绪
0.74s
总计从开机到 Shell1.41s

4.2 关键日志解读

[    0.000000] Linux version 6.12.51 (devhub@devhub) 
# 内核版本和编译者

[    0.000000] Command line: console=ttyS0 earlyprintk=serial,ttyS0,115200...
# 内核命令行参数

[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
# 内存映射:0-640KB 可用

[    0.017608] RAMDISK: [mem 0x1fee7000-0x1ffdffff]
# initrd 在内存中的位置

[    0.407530] Unpacking initramfs...
# 开始解压 initramfs

[    0.566051] Freeing initrd memory: 996K
# initrd 解压完成,释放 996KB

[    0.671365] Run /sbin/init as init process
# 启动 init 进程(PID=1)

[    1.410488] TinyLinux#
# Shell 就绪

4.3 内存布局

内存地址范围                 用途
0x00000000 - 0x0009fbff    常规内存 (640KB)
0x0009fc00 - 0x0009ffff    保留 (EBDA)
0x000f0000 - 0x000fffff    BIOS ROM
0x00100000 - 0x1ffdffff    可用内存 (约 500MB)
0x1fee7000 - 0x1ffdffff    initrd 镜像 (996KB)
0x1ffe0000 - 0x1fffffff    保留

4.4 设备初始化顺序

1. CPU 和 FPU
2. 内存管理 (MTRR, PAT)
3. 中断控制器 (IOAPIC)
4. 定时器 (TSC, PIT)
5. 串口 (ttyS0) ← 关键!
6. RTC 时钟
7. PCI 总线枚举
8. 块设备 (IDE/ATA)
9. 输入设备 (键盘)

5. 工程实验步骤 (Lab Steps)

5.1 捕获完整启动日志

cd /home/devhub/xlabs/tiny-linux

# 启动并保存日志
./scripts/run_qemu.sh 2>&1 | tee boot.log

5.2 分析启动时间

# 提取关键时间戳
grep -E "^\[\s*[0-9]+\.[0-9]+\]" boot.log | head -20

# 计算 init 启动时间
grep "Run /sbin/init" boot.log
# 输出:[    0.671365] Run /sbin/init as init process

# 计算 Shell 就绪时间
grep "TinyLinux#" boot.log || grep "console" boot.log | tail -1

5.3 修改内核日志级别

# 编辑 run_qemu.sh,修改 loglevel
# 从 loglevel=7 改为 loglevel=4(减少输出)

APPEND="console=ttyS0 ... loglevel=4"

# 重新启动观察差异
./scripts/run_qemu.sh

5.4 添加自定义启动信息

# 编辑 overlay/etc/init.d/rcS
cat > overlay/etc/init.d/rcS << 'EOF'
#!/bin/sh
# TinyLinux Enhanced Init

echo"Starting TinyLinux..."
echo"Kernel: $(uname -r)"
echo"Boot time: $(date)"

mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev 2>/dev/null || true

cat /etc/issue
EOF

# 重新构建
./scripts/make_all.sh

5.5 使用 GDB 调试启动

# 终端 1: 启动 QEMU(带 GDB)
qemu-system-x86_64 -m 512 -kernel output/target/bzImage \
  -initrd output/target/rootfs.cpio.xz -nographic -s -S

# 终端 2: 连接 GDB
gdb vmlinux
(gdb) target remote :1234
(gdb) break start_kernel
(gdb) continue

5.2 观察点 (Observation Points)

启动过程中重点关注:

1. BIOS 阶段(约 0.05s)
   SeaBIOS (version 1.16.3-debian-1.16.3-2)
   Booting from ROM...

2. 内核版本信息
   [    0.000000] Linux version 6.12.51 (devhub@devhub) ...

3. 命令行参数
   [    0.000000] Command line: console=ttyS0 earlyprintk=serial,ttyS0,115200...

4. 内存映射
   [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable

5. initramfs 加载
   [    0.407530] Unpacking initramfs...
   [    0.566051] Freeing initrd memory: 996K

6. init 进程启动
   [    0.671365] Run /sbin/init as init process

7. Shell 就绪
   TinyLinux#

5.3 避坑指南

现象
原因
解决方案
黑屏无输出
缺少 console=ttyS0
添加控制台参数
Kernel panic: no init
init 路径错误
检查 rdinit=/sbin/init
无法输入命令
缺少 -nographic
添加 QEMU 参数
启动后自动重启
init 脚本退出
检查 rcS 语法
日志乱码
波特率不匹配
确保 115200

6. 验证与重现

6.1 启动测试

./scripts/run_qemu.sh

6.2 预期启动日志(精简版)

SeaBIOS (version 1.16.3-debian-1.16.3-2)
Booting from ROM...

[    0.000000] Linux version 6.12.51 (devhub@devhub) (gcc ... 14.2.0) 
#1 Sun Mar 8 12:51:17 CST 2026
[    0.000000] Command line: console=ttyS0 earlyprintk=serial,ttyS0,115200 root=/dev/ram0 rdinit=/sbin/init loglevel=7 debug panic=1
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001ffdffff] usable
[    0.017608] RAMDISK: [mem 0x1fee7000-0x1ffdffff]
[    0.407530] Unpacking initramfs...
[    0.566051] Freeing initrd memory: 996K
[    0.671365] Run /sbin/init as init process
[    0.674819]   with arguments:
[    0.674851]     /sbin/init
[    0.674873]   with environment:
[    0.674895]     HOME=/
[    0.674917]     TERM=linux

Please press Enter to activate this console.
TinyLinux#

6.3 系统验证命令

# 1. 查看内核版本
uname -a
# 输出:Linux TinyLinux 6.12.51 #1 Sun Mar 8 12:51:17 CST 2026 x86_64 GNU/Linux

# 2. 查看启动时间
dmesg | head -5
# 输出:[    0.000000] Linux version...

# 3. 查看进程
ps
# 输出:PID 1 (init), PID 50 (shell)

# 4. 查看内存
free -h
# 输出:约 498MB 可用

# 5. 查看挂载点
mount
# 输出:proc, sysfs, devtmpfs

6.4 对应提交

项目
信息
对应提交
9e35606c4
 (refactor: separate configuration from build scripts)
检出命令
git checkout 9e35606c4
重现步骤
source env.sh && ./scripts/run_qemu.sh
预期输出
TinyLinux#
 提示符,启动时间约 1.41 秒

⚠️ 注意:Git 提交信息请执行 git log --oneline -5 获取最新提交。


7. 总结与延伸

7.1 本章收获

通过本章,我们掌握了系统启动流程的核心知识:

  • ✅ 理解了 Linux 启动的六个阶段和时间分布
  • ✅ 学会了内核命令行参数的配置和调试
  • ✅ 掌握了串口日志的捕获和分析方法
  • ✅ 能够独立排查启动问题和优化启动时间

7.2 思考题

  1. 如何测量每个启动阶段的精确时间?
  2. 如果要进一步缩短启动时间,可以优化哪些环节?
  3. 如何实现开机自动运行自定义脚本?
  4. 如何使用 initramfs 实现网络启动?

7.3 启动流程总结

阶段
耗时
关键事件
BIOS
0.05s
SeaBIOS 初始化
内核解压
0.05s
bzImage 解压
内核初始化
0.35s
CPU/内存/设备
initramfs
0.20s
解压和挂载
init 进程
0.70s
rcS 脚本执行
Shell
0.06s
提示符显示
总计1.41s从开机到 Shell

7.4 下一章预告

在 [TinyLinux-010] 中,我们将探索系统调试技巧,包括 GDB 调试、内核转储和性能分析。敬请期待!


🌟 互动与支持

如果你觉得这个项目对理解 Linux 底层有帮助,请不要吝啬你的支持:

  • 点赞 & 在看:点击右下角,让更多极客看到这个"活的代码教科书"。
  • 关注 LabHub:第一时间获取 TinyLinux 的最新"手术"报告。
  • Star 项目:点击 Gitee 仓库地址 给我们一个五星好评!

本文由 LabHub 团队原创,转载请注明出处。


项目地址:https://gitee.com/lynyujiang/tiny-linux.git

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 12:58:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/480498.html
  2. 运行时间 : 0.191724s [ 吞吐率:5.22req/s ] 内存消耗:4,812.82kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5d9e2645a62795bdc46ab8b7b3b6b517
  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.000569s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000777s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000313s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000342s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000732s ]
  6. SELECT * FROM `set` [ RunTime:0.000341s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000762s ]
  8. SELECT * FROM `article` WHERE `id` = 480498 LIMIT 1 [ RunTime:0.000530s ]
  9. UPDATE `article` SET `lasttime` = 1774587482 WHERE `id` = 480498 [ RunTime:0.003946s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000307s ]
  11. SELECT * FROM `article` WHERE `id` < 480498 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003859s ]
  12. SELECT * FROM `article` WHERE `id` > 480498 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000579s ]
  13. SELECT * FROM `article` WHERE `id` < 480498 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004158s ]
  14. SELECT * FROM `article` WHERE `id` < 480498 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006931s ]
  15. SELECT * FROM `article` WHERE `id` < 480498 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022953s ]
0.193655s