嵌入式linux系统裁剪
2009-07-16 11:23
302 查看
花了几天的时间,终于把系统从近200 MB裁到小于16 MB, 虽然现在看来过程非常简单,对于最初的那点恐惧觉得有点可笑。在这里把主要心得写一下,总结一下心得, 希望可以给相关人员一点参考。
主要步骤如下:
1. 充分了解系统
这有点像废话,但是确实很重要,特别对不是自己负责的模块,需要花点时间去在调研。最初觉得不好下手是没有对系统进行足够的了解,并不知道它为什么会这么庞大,但当你了解之后,就会信心倍增。
可以借助 du * | sort -n 按大小对文件或者目录进行排序, 从大到小依次裁剪。
2. UI 裁剪
一般来说,UI占用了整个系统最多的存储空间。SDK包括的东西都是一般比较全的,不同的产品有不同的需求。如QT,有网络,各种数据库,多种语言和字体的支持,以及为了保持向下兼容的冗余的库等,使得整个系统非常庞大。根据产品特性在此基础上删减是最有效果的。
3. 文件系统选择
文件系统包括根文件系统和应用程序的文件系统,嵌入式linux系统存储结构一般为:
{boot loader} {kernel } { rootfs } { application filesystem }
选择一个压缩率高的文件系统可以使系统变得非常小。
对于嵌入式设备来说,文件一般存储在flash里面,常用的文件系统主要有:
cramfs, squashfs, jffs2, yaffs2
各有特点,前二者是只读的,压缩率都比较高,后二者是可写的,jffs2压缩率比前二者稍差,Yaffs2最差。如果对空间要求比较高的系统,squashfs是比较好的选择,若需要支持可写,则squashfs + jffs2是比较合适的。
4. Kernel裁剪
kernel的裁剪相对简单,把不用的模块, driver去掉, 还可以把一些driver以module形式编译,放到rootfs中。编译kernel时,一般会生成未压缩的和经过压缩的kernel, 烧到falsh时选择压缩过的。
最后,提醒一下,在制作文件系统之前,别忘了对可执行文件和动态库进行strip操作。
主要步骤如下:
1. 充分了解系统
这有点像废话,但是确实很重要,特别对不是自己负责的模块,需要花点时间去在调研。最初觉得不好下手是没有对系统进行足够的了解,并不知道它为什么会这么庞大,但当你了解之后,就会信心倍增。
可以借助 du * | sort -n 按大小对文件或者目录进行排序, 从大到小依次裁剪。
2. UI 裁剪
一般来说,UI占用了整个系统最多的存储空间。SDK包括的东西都是一般比较全的,不同的产品有不同的需求。如QT,有网络,各种数据库,多种语言和字体的支持,以及为了保持向下兼容的冗余的库等,使得整个系统非常庞大。根据产品特性在此基础上删减是最有效果的。
3. 文件系统选择
文件系统包括根文件系统和应用程序的文件系统,嵌入式linux系统存储结构一般为:
{boot loader} {kernel } { rootfs } { application filesystem }
选择一个压缩率高的文件系统可以使系统变得非常小。
对于嵌入式设备来说,文件一般存储在flash里面,常用的文件系统主要有:
cramfs, squashfs, jffs2, yaffs2
各有特点,前二者是只读的,压缩率都比较高,后二者是可写的,jffs2压缩率比前二者稍差,Yaffs2最差。如果对空间要求比较高的系统,squashfs是比较好的选择,若需要支持可写,则squashfs + jffs2是比较合适的。
4. Kernel裁剪
kernel的裁剪相对简单,把不用的模块, driver去掉, 还可以把一些driver以module形式编译,放到rootfs中。编译kernel时,一般会生成未压缩的和经过压缩的kernel, 烧到falsh时选择压缩过的。
最后,提醒一下,在制作文件系统之前,别忘了对可执行文件和动态库进行strip操作。
相关文章推荐
- #嵌入式Linux最小系统移植# 对uboot移植和裁剪的一点点个人思考和总结
- 嵌入式linux系统裁剪
- 嵌入式linux系统裁剪
- CentOS 7.1 linux 裁剪 嵌入式 系统 定制
- 嵌入式之Linux系统裁剪和定制---(kernel+busyboxy+dropbear+nginx)
- linux命令:系统裁剪之五dropbear嵌入式系统专用ssh服务
- 嵌入式Linux系统中的.lds链接脚本基础
- 嵌入式设备上的 Linux 系统开发
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
- 我也来学做嵌入式Linux系统V0.1(完整版)
- 文件系统 2 之 嵌入式Linux文件系统详细介绍
- 嵌入式 Linux 虚拟系统文件交换器剖析
- 在嵌入式Linux系统(OK6410)中移植Boa 服务器
- zedboard--嵌入式linux系统移植
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式 linux下查看系统启动时间以及运行时间详解
- #嵌入式Linux最小系统移植# busybox分析和移植记录
- 嵌入式linux2.6平台搭建——bootloader、Linux内核、根文件系统、开源工程
- Linux嵌入式系统的内存管理方法详细介绍
- 嵌入式Linux开发——YAFFS文件系统详解