|
|
第 1 帖 | |
|
|
标题: [原创]我们可以做的更小!《功能单一,体积小巧的LFS》续篇 提示:阅读此文请先阅读《[原创]功能单一,体积小巧的LFS完整版(5M大小的Apache服务器) 》http://www.linuxsir.org/bbs/showthread.php?t=234181,这样可能对下面的内容更容易理解。
说明: 先前写了如何制作只有5M大小的Apache服务器后,不知道看过的人是否注意到文中并没有对软件进行优化,所以限制它的大小,有没有想过把这个Apache系统做的更小一些呢?看过一些网友的回复,然后自己又进行了大量的实验裁减,基本上将回复中网友提出的和自己曾想过的方法都应用了进去,最后还是取得了比较满意的结果,下面的内容将逐渐分析如何缩小它的大小,至于能做到多小,看到最后你就知道了,不要惊讶,这是真实的。 当然最后这个系统基本上就都要使用非标准的LFS组件来制作这个系统了,不过有一个例外的就是Apache,我使用的是Apache1.3目前最新版本1.3.34来制作的。这一点始终没有发生变化,这也是为了达到能制作真正体积小巧的Apache系统的主题,这个变了就没意思了。 文中提到的数字可能和真实环境中产生的数据有所出入,但基本上是出入不大,可以作为参考。 第一阶段:优化编译 先来把5M的大小缩一半吧。这步非常简单,用-Os参数代替-O2参数即可,编译后大概能将系统减少到3.4M左右,不过这里要注意,还是根据LFS的提示Glibc不要进行优化编译,只对bash、dhcpcd和Apache进行这样的优化编译即可,当然内核还需要裁减,原来在5M的系统中内核就占用了2M大小,所以这里对内核的裁减效果非常明显。 第二阶段:用busybox代替bash和dhcpcd 从这个阶段开始,基本上就要使用非标准的LFS组件来制作这个系统了。busybox的特点和优点在很多帖子了都有提到,busybox在编译的时候只需要编译我们最需要的几条命令就可以了,他们是一个sh和一个udhcpc以及ifconfig是需要的,其它的基本上不需要。用他来代替bash和dhcpcd大概可以节约800K左右的空间,这样这步完成后系统大概只有2.6M左右大小了。 第三阶段:用uclibc来代替glibc 这个系统大小中还有一个举足轻重的部分,那就是glibc,如果用uclibc来代替glibc那么整个系统的体积将立刻发生大幅度的变化,在这里我使用了uclibc-0.9.28这个版本来编译,基本上没有什么问题,完成后一件很重要的事情就是将busybox和Apache重新编译,这里编译busybox没有什么问题,但在编译Apache的时候可能会发生错误,需要打上补丁才能完成编译。(补丁附在文后) 完成了这些编译后在检查这个系统的时候你会吃一惊,体积能够再次缩小1M多,这样已经基本上在1.5M左右的系统了,不过这还取决你的内核大小,如果你的内核在800~900K左右,那么你的系统可能快可以放入一张软盘里了。这里有点说明,用uclibc代替glibc并不能减少内核的大小,所以内核不重新编译没问题。 第四阶段:扫除所有多余的文件 这一步比较的麻烦,检查你的Apache系统里是否有一些不太需要的文件,特别是/dev下的文件,在5M大小的系统时,这里的文件基本上可以不考虑,但现在整个系统已经在1M左右大小了,这里的文件是该“清理”一下了,这样确实可以腾出不少空间了,这步完成后基本上就可以小于一张软盘的大小了。 (说明:到这时,系统已经被大幅度裁减了,下面开始的裁减就不像上面的那样1兆接着1兆的裁减了,基本上只能按百K的速度下降,如果你没什么特殊的要求基本上到这里就可以了。) 第五阶段:用2.4的内核来代替2.6的内核 目前为止我们还是在使用2.6的内核,这个阶段的缩减就把目标定在了这个重要的核心上,这次采用成熟的2.4内核(2.6内核现在也很成熟了,相较而言),如果你大手笔的去掉不需要的功能,到最后和2.6使用同样的功能后,编译得到的内核大概能比2.6小100~200K左右,这样的系统就只有1.2~1.3M左右了。 第六阶段:用initrd来“包装”系统 这步的处理比较复杂些,把busybox和Apache“包装”压缩后大概比没包装前小100K多些,处理的好基本上系统能在1M左右了。 第七阶段:用lilo来代替grub 到目前该缩的都缩了,但还有一个角落我一直没注意那就是grub,之前的系统比较大的时候引导程序所占用的体积基本上可以不必考虑,但到了现在再想裁减点大小只好对这里动手了,lilo的使用可以参考网络上的相关文章,基本上体积又能减少50~100K左右,现在的系统大概在900K到1M左右了。 (说明:到现在为止,后面的裁减将越来越困难,基本上每裁减一点都可能带来功能上的损耗,而能够裁减的大小也基本上按10K来计算了,所以想继续靠编译或者什么的已经很难有大作为了,只有对代码的改动也许能够减少一定的空间,所以基本上可不必再继续了。) 到目前为止,我们已经把原来5M大小的系统减少到1M左右,减少了5倍。总之,裁减越到后面越难,我在做裁减的时候,从5M到2.6M只用了一两天晚上,而从2.6M到1.5M用了四五天的晚上,而1.5M到现在的大小用了将近2个星期的时间。 我做了一个Apache系统的体验版,大概有600K左右的大小,基本上可以算缩小了10倍了 。我还在继续研究看看能不能再缩小一些,欢迎大家提出宝贵意见和想法与我交流。作者:youbest(冲天飞豹) Email:youbest@sina.com 2005年12月21日 此帖于 05-12-27 09:35 被 youbest 编辑. 原因: 增加了补丁和体验版下载 |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
运气不错,这篇文章刚好占居了第5000个主题.
![]() |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
已经将补丁和体验版上传上来了,体验版文件下来解压后是完整的VMware5的目录,用VMware启动就可以了,启动后会有IP地址的显示,用浏览器访问http://IP就可以显示出内容来。
|
|
|
|
|
|
|
|
第 4 帖 | |
|
|
厉害!
不精华实在浪费。。 佩服兄弟的实验精神,出手必是精彩内容。。
__________________
我的wiki: http://wiki.linuxgnu.org 马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
youbest 太利害了~~~
__________________
This is who I am My Blog: http://www.zlbruce.org/ |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
……:rolleyes:……![]() |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
请YOUBEST兄,能不能把GLIBC的那个PATCH再发一下,上次那个地址无效了
谢谢 |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
我找找看,好象不在我手头的机器上
|
|
|
|
|
|
|
|
第 9 帖 | |
|
|
嗯 很不错啊!!
但是我认为现在继续裁减下去没有实际的意义 而是应该继续增强功能 我认为实现一个10M 左右的系统 实现router 这是比较好的思路. 这个route 应该带上adsl 拨号等功能 流量控制 web 管理等功能 不知道youbest 由好主义吗? |
|
|
|
|
|
|
|
第 10 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 11 帖 | |
|
|
route os 就是这样一个系统 超级强大
|
|
|
|
|
|
|
|
第 12 帖 | |
|
|
高人!
拜过!
__________________
redhat9 +win2000 pm1.4 512m ddr 40g ati 9000m |
|
|
|
|
|
|
|
第 13 帖 | |
|
|
youbest,真高人也.不过,youbest兄,问个菜鸟的问题,该系统的实用性如何?作为Apache服务器,能否胜任,是否稳定? 谢谢.
![]()
__________________
XP +DEBIAN/SID/LXDE 请善用站内搜索,google/baidu搜索!! 欢迎来踩我的博客: http://blog.4message.net http://apzc2529.cublog.cn |
|
|
|
|
|
|
|
第 14 帖 | |
|
|
这个文章,主要是体现LFS的高度灵活性。
当然,这个系统也能胜任 一定的任务,只是肯定不如几百兆的功能强大咯。:)。 |
|
|
|
|
|
|
|
第 15 帖 | ||
|
|
引用:
下面只是猜测: 目前这个只能实现静态网页的功能,因为没有更改代码我想稳定性上应该是正常的.
__________________
青橄榄在入口的时候是苦的,过了一会你就可以长久的品味那淡淡而又清爽的甜味。 青橄榄 http://youbest.cublog.cn 青橄榄计划的第一步总算迈出来了,等待它的是万里长征. 做技术要有做技术的原则,决不拿技术做侵权的事情,更不能用来做违法的事情。工作丢了可以再找一个,原则丢了就找不回来了。 |
||
|
|
|
||