BusyBox 系统工具 mount reboot halt mknod 等
系统工具清单
BusyBox 的"Linux System Utilities"菜单下集中了嵌入式系统最核心的管理工具:
| 命令 | 用途 | 典型场景 |
|---|---|---|
| mount/umount | 文件系统挂载/卸载 | 启动时挂载根文件系统、swap、tmpfs |
| reboot/halt/poweroff | 重启/关机 | 系统正常退出 |
| init | PID 1 初始化 | BusyBox 作为 init 系统 |
| mknod | 创建设备节点 | 启动时创建 /dev/console、/dev/null 等 |
| insmod/rmmod/lsmod | 内核模块管理 | 加载驱动模块 |
| dmesg | 内核消息查看 | 驱动调试、启动日志 |
| free | 内存使用查看 | 系统状态监控 |
| df | 磁盘使用查看 | 文件系统空间监控 |
| sync | 刷盘 | 关机前确保数据落盘 |
| losetup | 循环设备设置 | 挂载 img 文件 |
| swapon/swapoff | swap 管理 | 启用虚拟内存 |
mount 挂载文件系统
# 查看当前挂载状态
busybox mount
# 挂载 ext4 分区
busybox mount -t ext4 /dev/sda1 /mnt/data
# 挂载 FAT32(常见于 USB)
busybox mount -t vfat -o utf8 /dev/sdb1 /mnt/usb
# 挂载 tmpfs(内存盘)
busybox mount -t tmpfs -o size=64M tmpfs /tmp
# 自动检测文件系统类型(最常用)
busybox mount /dev/sda1 /mnt/data
# BusyBox mount 会依次尝试常见文件系统类型
# 卸载
busybox umount /mnt/data
# 或者:busybox umount /dev/sda1
BusyBox mount 的常用挂载选项(-o):
ro:只读挂载rw:读写挂载(默认)noatime:不记录访问时间(闪存友好,减少写入)noexec:不允许执行文件(安全加固)nosuid:忽略 suid 位remount,rw:重新挂载为读写
reboot/halt/poweroff
# 重启系统(会 sync 先落盘)
busybox reboot
# 直接关机(等价于 busybox halt -p)
busybox poweroff
# 重启到 bootloader(部分设备支持)
busybox reboot -f
# 不调用 init 直接重启(紧急情况用)
busybox reboot -f -n
# -f: 不调用 init
# -n: 不 sync(数据可能丢失!)
BusyBox reboot 实际就是向 init 发送 SIGTERM + 系统重启,行为和 GNU 版一致。
mknod 创建设备节点
在没有 devtmpfs 的系统上(或早期内核版本),需要手动创建设备节点:
# 创建字符设备
busybox mknod /dev/console c 5 1
busybox mknod /dev/null c 1 3
busybox mknod /dev/tty c 5 0
# 创建块设备
busybox mknod /dev/sda b 8 0
busybox mknod /dev/ram0 b 1 0
# 创建 FIFO
busybox mknod /tmp/myfifo p
现代 Linux(2.6.32+)默认启用 devtmpfs 和 udev,启动时自动创建大部分设备节点,不需要手动 mknod。但 initramfs 里、或特别精简的嵌入式系统可能还是需要手动创建设备节点。
insmod 加载内核模块
# 加载模块(BusyBox insmod 不解析 .ko 的依赖)
busybox insmod mydriver.ko
# 查看已加载模块
busybox lsmod
# 卸载模块
busybox rmmod mydriver
# 自动处理依赖(用 modprobe,前提是有模块依赖文件)
# modprobe 需要 /lib/modules/<version>/modules.dep
busybox modprobe mydriver
BusyBox insmod 不自动解析模块依赖(GNU insmod/modprobe 会),所以需要手动按依赖顺序加载。嵌入式系统通常编译驱动进内核(built-in)而不是作为模块,减少 insmod 的需求。
其他常用
# 查看内核日志(dmesg 是环形缓冲区)
busybox dmesg | busybox tail -50
# 清空内核日志缓冲区
busybox dmesg -c
# 内存使用(busybox free 格式固定)
busybox free
# 磁盘使用
busybox df -h
# 强制刷盘(断电前务必执行)
busybox sync