SSD_系统裁剪说明
1. 系统KO/LIB介绍说明¶
以下是常见的KO/LIB的相关说明,客户可以项目实际需要考虑裁剪使用。
1.1. 常见SO说明¶
| 名称 | 大小(KB) | 用途 | 是否必须 |
|---|---|---|---|
| lib/ld-uClibc-1.0.31.so | 20.9 | toolchain 使用的标准库 | YES |
| lib/libncurses.so.6.0 | 183.3 | toolchain 使用的标准库 | YES |
| lib/libstdc++.so.6.0.20 | 619.5 | toolchain 使用的标准库 | 如果应用没有使用C++,则不需要 |
| lib/libthread_db-1.0.31.so | 17.1 | toolchain 使用的标准库 | NO |
| lib/libgcc_s.so.1 | 93.6 | toolchain 使用的标准库 | YES |
| lib/libuClibc-1.0.31.so | 349.9 | toolchain 使用的标准库 | YES |
| lib/libatomic.so.1.1.0 | 13.3 | toolchain 使用的标准库 | YES |
| lib/libAEC_LINUX.so | 65.8 | audio算法库:回音消除 | NO |
| lib/libAED_LINUX.so | 112.1 | audio算法库:babycry,高分贝检测 | NO |
| lib/libAPC_LINUX.so | 90.7 | audio算法库:EQ,NR,HPF,AGC | 如果没有使用audio功能,则不需要 |
| lib/libBF_LINUX.so | 70.9 | audio算法库:波束成型。 | NO |
| lib/libMD_LINUX.so | 442.4 | 运行检测算法 | NO |
| lib/libOD_LINUX.so | 430.4 | 遮挡检测算法 | NO |
| lib/libSRC_LINUX.so | 30.0 | audio算法库:重采样。 | NO |
| lib/libSSL_LINUX.so | 30.2 | audio算法库:声源定位。 | NO |
| lib/libVG_LINUX.so | 69.7 | 虚拟围栏检测算法 | NO |
| lib/libcam_fs_wrapper.so | 5.4 | sys模块与linux API的中间层 | YES |
| lib/libcam_os_wrapper.so | 33.8 | sys模块与linux API的中间层 | YES |
| lib/libcus3a.so | 17.4 | AF、 AE、 AWB接口 | YES |
| lib/libg711.so | 5.4 | 音频编码库 | NO |
| lib/libg726.so | 9.2 | 音频编码库 | NO |
| lib/libispalgo.so | 225.2 | 提供isp高级功能,如AF、 AE、 AWB | YES |
| lib/libmi_ai.so | 251.2 | audio 输入相关库 | 如果没有使用audio功能,则不需要 |
| lib/libmi_ao.so | 82.9 | audio 输出相关库 | 如果没有使用audio功能,则不需要 |
| lib/libmi_common.so | 41.7 | MI必备基础库 | YES |
| lib/libmi_divp.so | 5.3 | 多媒体模块和 DIVP函数的接口 | YES |
| lib/libmi_iqserver.so | 66.4 | 与iqtool工具通讯,提供网络调试iq的功能,对接ISP模块 | NO |
| lib/libmi_iqserver_pretzel.so | 42.0 | 与iqtool工具通讯,非335 337平台 | NO |
| lib/libmi_isp.so | 42.4 | ISP函数接口封装库 | YES |
| lib/libmi_isp_pretzel.so | 38.0 | ISP函数接口封装库,非335 337平台 | NO |
| lib/libmi_ive.so | 454.6 | 提供硬件算子的使用 | 如果没有使用IVE算子和SIGMASTAR MD 、OD、 VG算法,则不需要 |
| lib/libmi_ldc.so | 9.4 | 镜头畸变校正的函数接口,335 337无此功能 | NO |
| lib/libmi_rgn.so | 9.4 | OSD函数接口 | YES |
| lib/libmi_sed.so | 13.3 | smart encoder | NO |
| lib/libmi_sensor.so | 9.3 | 多媒体模块 SENSOR函数接口 | YES |
| lib/libmi_shadow.so | 13.4 | 提供VDF对接接口 | 如果使用SIGMASTAR的MD OD VG算法,则需要 |
| lib/libmi_sys.so | 17.4 | MI层 必备基础库,负责搭建基础mi框架,提供buf管理 | YES |
| lib/libmi_vdf.so | 85.6 | 提供视频算法功能,包括移动监测,遮挡检测,虚拟围栏等 | 如果使用SIGMASTAR的MD OD VG算法,则需要 |
| lib/libmi_venc.so | 25.4 | 多媒体模块 VENC函数接口,提供视频解码功能 | YES |
| lib/libmi_vif.so | 9.3 | 多媒体模块 VIF函数接口 | YES |
| lib/libmi_vpe.so | 13.4 | 多媒体模块 VPE函数接口 | YES |
| 4166KB |
1.2. 常见KO说明¶
| 名称 | 大小(KB) | 用途 | 是否必须 |
|---|---|---|---|
| /config/modules/4.9.84/SC4238_MIPI.ko | 19.9 | SC4238 sensor 驱动 | NO |
| /config/modules/4.9.84/imx291_MIPI.ko | 10.3 | imx291 sensor 驱动 | NO |
| /config/modules/4.9.84/imx307_MIPI.ko | 19.6 | imx307 sensor 驱动 | NO |
| /config/modules/4.9.84/mhal.ko | 1228.8 | 多媒体层的底层实现 | YES |
| /config/modules/4.9.84/mi_ai.ko | 170.1 | Audio 采集模块的实现 | 如果没有使用audio功能,则不需要 |
| /config/modules/4.9.84/mi_ao.ko | 91.9 | Audio 输出模块的实现 | 如果没有使用audio功能,则不需要 |
| /config/modules/4.9.84/mi_common.ko | 9.7 | mi 必备基础库的实现 | YES |
| /config/modules/4.9.84/mi_divp.ko | 52.8 | 多媒体 DIVP模块的实现 | YES |
| /config/modules/4.9.84/mi_ldc.ko | 7.6 | 镜头畸变校正的实现,335 337无此功能 | NO |
| /config/modules/4.9.84/mi_rgn.ko | 92.1 | OSD模块的实现 | YES |
| /config/modules/4.9.84/mi_sensor.ko | 29.6 | 多媒体 SENSOR模块的实现 | YES |
| /config/modules/4.9.84/mi_shadow.ko | 46.8 | vdf对接接口的实现 | 如果使用SIGMASTAR的MD OD VG算法,则需要 |
| /config/modules/4.9.84/mi_sys.ko 需要配合config_tool和 mmap.ini所在路径添加指定参数 |
414.4 | MI层 必备基础库的实现,负责搭建基础mi框架,提供buf管理 | YES |
| /config/modules/4.9.84/mi_venc.ko 需要配合chagall.bin固件所在路径添加指定参数 |
165.0 | 多媒体 VENC模块的实现 | YES |
| /config/modules/4.9.84/mi_vif.ko | 40.7 | 多媒体 VIF模块的实现 | YES |
| /config/modules/4.9.84/mi_vpe.ko | 143.9 | 多媒体 VPE模块的实现 | YES |
| /config/modules/4.9.84/mmc_block.ko | 28.9 | SD卡相关驱动,mmc 基础驱动 | NO |
| /config/modules/4.9.84/mmc_core.ko | 95.2 | SD卡相关驱动,mmc 基础驱动 | NO |
| /config/modules/4.9.84/ms_notify.ko | 4.1 | netlink,运行mixer才需要加载 | NO |
| /config/modules/4.9.84/msdos.ko | 9.8 | MSDOS 文件系统 | NO |
| /config/modules/4.9.84/nfs.ko | 123.0 | nfs网络文件系统 | NO |
| /config/modules/4.9.84/nfsv2.ko | 16.9 | nfs网络文件系统 | NO |
| /config/modules/4.9.84/nls_utf8.ko | 3.6 | utf8 字体驱动 | NO |
| /config/modules/4.9.84/ntfs.ko | 87.0 | NTFS 文件系统驱动 | NO |
| /config/modules/4.9.84/sc4236_MIPI.ko | 12.7 | SC4236 sensor驱动 | NO |
| /config/modules/4.9.84/scsi_mod.ko | 118.2 | USB 和 SD卡需要驱动 | NO |
| /config/modules/4.9.84/sd_mod.ko | 30.5 | SD卡相关驱动,scsi 接口磁盘支持 | NO |
| /config/modules/4.9.84/sunrpc.ko | 173.6 | 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 | NO |
| /config/modules/4.9.84/usb-common.ko | 5.5 | usb 基础驱动 | NO |
| /config/modules/4.9.84/usb-storage.ko | 68.4 | usb 盘驱动 (依赖usb基础驱动) | NO |
| /config/modules/4.9.84/usbcore.ko | 144.3 | usb host 基础驱动 | NO |
| /config/modules/4.9.84/cifs.ko | 202.6 | CIFS 文件系统驱动 | NO |
| /config/modules/4.9.84/ehci-hcd.ko | 40.5 | usb2.0 host控制器驱动 | NO |
| /config/modules/4.9.84/fat.ko | 53.0 | fat 文件系统 | NO |
| /config/modules/4.9.84/grace.ko | 5.4 | nfs网络文件系统 | NO |
| /config/modules/4.9.84/lockd.ko | 49.1 | Mount nfs 所需要驱动 | NO |
| /config/modules/4.9.84/kdrv_sdmmc.ko | 30.7 | sd 卡驱动 | NO |
| /config/modules/4.9.84/vfat.ko | 11.5 | vfat 文件系统(u 盘或者SD卡) | NO |
1.3. 其他部分¶
| 工具及配置文件 | 大小 | 用途 | 是否必须 |
|---|---|---|---|
| config_tool 和 mmap.ini | insmod mi_sys.ko的时候,驱动调用config_tool解析mmap.ini分硬件分配buffer。默认位于/config目录下,更换位置时需要在insmod mi_sys.ko之后加default_config_path='/new/path' | YES | |
| isp_api.xml | 连接iqtool生成软件界面项目用的。更换路径时,需要在应用在iqserver_open 之前调用mi_iqserver.h里的 MI_S32 MI_IQSERVER_SetDataPath(char* path);改变路径。 | NO | |
| iqfile0.bin -> imx307_iqfile.bin | Isp启动(应用运行)时会去/config/iqfile目录下读取iq file名为iqfilex.bin(x表示isp channel),图像的基础效果(一般是软链接指向实际的iq file)。如果该文件更换位置,需要在应用运行前执行:echo isproot /new/path > /dev/ispmid | YES | |
| chagall.bin | HW encoder fireware。默认位于/config/fw_path/chagall.bin,更换位置时需要在insmod mi_venc.ko之后加fw_path=/new/path/chagall.bin | YES |
-
Initial RAM filesystem and RAM disk //for ramdisk, 如果不需要可删除;
-
General
-
Kprobes // kernel 内添加钩子函数(断点)
-
Kernel performance events and counters // perf 等,用于kernel hacking
-
-
Network
-
The IPv6 protocol
-
Wireless
-
其他部分视用户需求而定
-
-
Device 相关
-
Serial ATA and Parallel ATA drivers
-
MMC/SD/SDIO card support
-
Staging drivers
-
USB host
-
Ehci //2.0
-
Uhci //3.0
-
-
USB device:
-
UVC 相关;
-
Webcam 相关;
-
-
File systems
-
NFS //used for debug;
-
CIFS //used for debug
-
JFFS2 // 权限W/R
-
UBIFS // 权限W/R
-
FAT/NTFS //windos fs
-
-
-
Kernel hacking
-
Tracers //ftrace 等
-
KGDB: kernel debugger //gdb
-
Debug Lockups and Hangs //debug mutex and so on.
-
Debug Lockups and Hangs
-
DEBUG_INFO //debug info, 删除后不便于debug
-
KALLSYMS // kernel symbol 等,删除后不便于debug
-
-
Device Drivers
-
Multimedia support // usb cam 相关的设定
-
Input device support
-
Mouse interface
-
Keyboards
-
Mice
-
Touchscreens
-
-
-
SStar SoC platform drivers // 根据用户需求
-
SStar SATA HOST //sata 等
-
SStar SD/MMC Card Interface Support
-
-
其他:建议使用用户的config 来check
2. BUSYBOX使用参考¶
2.1. 源码¶
-
下载:https://busybox.net/downloads/ (公版默认版本是: 1.20.2)
-
tar -jxvf busybox-1.20.1.tar.bz2
-
cd busybox-1.20.2
2.2. 编译(使用默认config)¶
-
配置编译链:declare -x ARCH="arm";declare -x CROSS_COMPILE="arm-linux-gnueabihf-"
-
make menuconfig (配置可选项)
-
make clean;make
-
make install →根目录下_install 就是我们需要 busybox 安装包
-
release busybox到project目录
cd _install tar -zcvf _install.tar.gz ./ cp _install.tar.gz /project/image/busybox/ cd ~/project/image/busybox/ mv _install.tar.gz busybox-1.20.2-arm-linux-gnueabihf-glibc-9.1.0-dynamic.tar.gz
-
重新编译project即可
如果编译提示如下错误:
shell/shell_common.c:375:2: error: unknown type name ‘rlim_t’ shell/shell_common.c:377:13: error: dereferencing pointer to incomplete type ‘const struct rlimit’ shell/shell_common.c:381:13: error: ‘RLIM_INFINITY’ undeclared (first use in this function) shell/shell_common.c:416:17: error: storage size of ‘limit’ isn’t known shell/shell_common.c:452:6: error: unknown type name ‘rlim_t’
可以尝试
vi include/libbb.h添加头文件:#include <sys/resource.h>
3. 公版默认config¶
sstar_alkaid_arm-linux-gnueabihf-glibc_defconfig
4. 通用config说明(用户按需针对性裁剪)¶
根据busybox 主选项进行分类。
setting
| 配置选项 | 占用空间 (Bytes) | 功能描述 |
|---|---|---|
| CONFIG_DESKTOP | 8k | 开启一些非必要的配置以兼容桌面系统 |
| CONFIG_INCLUDE_SUSv2 | --- | 开启UNIX 98支持 |
| CONFIG_SHOW_USAGE | 7k | applets 帮助信息 |
| CONFIG_FEATURE_UTMP | 用于记录当前登录用户, who功能会使用到 | |
| CONFIG_FEATURE_PIDFILE | pid文件生成路径 | |
| CONFIG_FEATURE_SUID | 开启root权限管理 | |
| CONFIG_STACK_OPTIMIZATION_386 | i386架构stack-boundary=2 | |
| CONFIG_FLOAT_DURATION | 使applets支持浮点, 例如:sleep N.NNN | |
| CONFIG_FEATURE_NON_POSIX_CP | Non-POSIX标准cp命令 |
Applets
按照 Applets 显示顺序进行排序,下列为busybox工具的支持配置, 可以根据需要选择是否开启:
-
Archival Utilities
→各类压缩格式以及压缩工具的配置
-
Coreutils
→系统常用工具的配置
-
Console Utilities
→控制台工具配置
-
Debian Utilities
→Debian 系统工具
-
klibc-utils
→klibc 工具,包括minips(ps), nuke(rm -rf), resume, run-init
-
Editors
→编辑工具, 包括sed, awk, vi等
-
Finding Utilities
→find, grep, xargs 等工具功能的配置
-
Init Utilities
→系统初始化工具, 包括reboot, poweroff,halt等
-
Login/Password Management Utilities
→登录以及密码管理工具
-
Linux Ext2 FS Progs
→Ext2 文件系统管理相关工具
-
Linux Module Utilities
→linux 模块管理, insmod/rmmod/modprobe等
-
Linux System Utilities
→linux 系统管理工具
-
Miscellaneous Utilities
→杂项类工具
-
Networking Utilities
→网络管理工具, 可配置Ipv4/ipv6支持,以及tftp, telnetd等工具的支持
-
Print Utilities
→打印机工具,包括lpd/lpr/lpq 工具
-
Mail Utilities
→邮件相关工具
-
Process Utilities
→进程管理工具, 包括free, kill, top, watch等
-
Runit Utilities
→runit 套件的支持
-
Shells
→包括ash, 以及hush两种shell的支持
-
System Logging Utilities
→系统log工具的支持