|
|
第 1 帖 | |
|
|
标题: [原创]玩点新鲜的,做一个功能单一,体积小巧的LFS 前言
来来回回编译LFS不知道多少次了,总觉得都是这个步骤,出来的东西也都差不多,所以就想玩点变化的,这次想做一个功能单一,但体积要非常小巧的LFS出来。 听说过有人把httpd的系统做到只有5M大小,我也想尝试一下,所以这次要做的是一个只有简单的http功能的系统,方法其实并不复杂,制作出来的系统体积虽然不算大,但功能也很有限,只是用来研究用可以,如果用来实际应用还需要增加许多东西。 在下文中并没有给出详细的命令,只是给了一个方法和需要注意的一些地方,这是为了能让读者亲手制作一下,这样才能最大程度的获得知识。 如果你有兴趣可以继续看下去。 原理 其实很简单,就是按照Linux启动的顺序只放需要的东西,其它东西一律不装。 启动过程 介绍Linux启动过程的文章有很多,所以我这里就不多说了,不过这个启动过程也是我们制作系统的过程,按照Grub->Kernel->INIT 制作工具链 制作这个“小”系统当然也需要一个工具链,目的和LFS是一致的,但必须要支持静态编译才行,当然这个工具链可以按照LFS的步骤制作,但还有另一种更快速的方法就是在完成了工具链glibc的编译后就可以开始制作这个小系统了。 建立目录 在完成了工具链的制作后就可以开始建立必要的目录了,这步也可以完全按照LFS中的建立过程建立,也可以用省事的方法,你只需要建立/boot/grub、/etc、/dev、/bin、/sbin/init、/var/log就可以了。 编译GRUB 编译GRUB只需要./configure && make就可以了,不需要make install,因为这个最终的LFS在运行过程中并不需要grub这套工具的支持,我们编译它只是为了能够建立起bootloader而已,所以只需要复制stage1和stage2以及支持启动盘的文件系统的xxfs_stage1_5到/boot/grub中,再使用grub/grub命令来启动grub的环境,这部分可以参考LFS中的grub这部分,最后建立/boot/grub/menu.lst文件就可以了,现在可以删除state1和xxfs_stage1_5了,因为已经不需要了。 编译Kernel 这步十分重要也很关键,编译选择中不要使用模块支持,因为要缩小体积就把需要的选上,并将其编译进内核,这样大概编译完成后的Kernel也就1M多,不过这里要注意的是一定要选上需要使用的文件系统,磁盘的驱动以及使用的网卡驱动(因为需要支持http所以必须要支持网络)。这次我用的kernel是2.6.14.2的版本 UDEV UDEV用来建立/dev下的设备驱动,这里我们可以有两种方式来使用它,一种是在编译完成后直接用udevstart来建立好/dev下面的内容,还有一种方法则是LFS的标准方式,在运行目标系统的时候建立/dev下的内容,这里为了减少系统体积使用了第一种方式,这样就可以在启动时减少一步。 INIT 通常INIT是包含在sysinit这个包中的,但我们这个系统是不需要这么复杂的INIT,因为INIT不一定要是二进制可执行的文件,使用可执行的脚本也是可以的,所以只需要建立一个脚本文件来代替INIT就可以了,在脚本中加入启动网络和http的脚本即可。这里要注意的是init必须具备可执行的属性。 BASH 因为INIT是使用脚本的方式,那么就必须要安装一个支持他的脚本的SHELL,这里我选择了LFS标准的BASH,这里我们用静态编译的方法来编译BASH,然后将编译好的bash复制到目标系统的目录中,然后将sh的连接指向该文件即可 iproute2 一个有http支持的系统没有网络设置是不可能的,这里我使用LFS6以后使用的iproute2,静态编译它之后只需要使用它的ip这个文件即可。在INIT中加入启动网络的命令即可。 Apache 这个当然是用来做http服务的,同样静态编译它,然后只需要复制httpd到/bin目录下即可,不过要建立一个httpd.conf文件,当然你还要根据httpd.conf中的设置在相应的目录下放置网页文件。 在INIT中加入启动httpd的命令这样就完成了这个系统的制作。 启动 现在可以重新启动了,如果你的内核配置得当,启动的速度应该是相当快的。 另外找台机器打开浏览器输入配置给这太机器的地址,看看能不能看到你的页面。 成品下载 http://www.zdbr.net.cn/download/miniLFS.rar 采用的是linux-2.6.14.3的内核和Apache-2.0.55实现的系统,通过GCC-4.0.2进行编译,静态库来自Glibc-2.3.6 下载后解压缩后形成一个VMWare5.0支持的完整目录,直接用VMWare5启动即可。 采用DHCP来设置IP地址的,在完成启动后会有地址提示,根据提示的地址进行访问即可。 结束语 我用这个方法制作了一个用Apache来提供httpd的系统,最后不算上文件系统本身占据的空间,这些文件大概就只有5M多一些,其实这个并不是最小的,因为是使用了LFS使用的标准的程序包和一些自己写的脚本,所以体积要稍微大一些,如果使用比如uclibc和busybox这样的包,这个系统还可以做的更小,这篇文章的目的就是为了研究裁减LFS而写的,文中难免有错,如果发现还望谅解,并给予指正,如果能起到抛砖引玉的作用,那就值了。 ![]() 作者:youbest(冲天飞豹) 2005-11-29 此帖于 05-12-01 11:10 被 youbest 编辑. 原因: 增加成品的下载地址 |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
再写详细一些嘛.
__________________
如果您对使用OSS进行信息技术教育感兴趣,请来www.ictedu.net.cn 聊聊。 |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
兄弟玩出名堂来了,恭喜!
__________________
LFS全套中文文档:http://lfs.linuxsir.org(主力) LFS 英文站点镜像:http://lfs.cosoft.org.cn 二笔输入法 for Linux: http://ebf.cosoft.org.cn |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
youbest兄一出手果然不同凡响!PF!
|
|
|
|
|
|
|
|
第 5 帖 | |
|
|
LFS手册开首就说把httpd的系统做到只有5M大小,可是众人在mailing list上问及时,高人只回答已被删除,无法提供下载。
偶曾经想过如何做,可是光是kernel就占去约1.5MB,5M的系统确实很有难度啊! 敬请豹兄再详细说明一下,普导众生,功德无量。 |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
强……
8过感觉还是不会制作工具链 等待详细的说明,嘿嘿
__________________
了解她愈多,爱她愈深 一切源于她优秀的内在 |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
这才叫做真正的lfs玩家,想把lfs怎么搞就怎么搞,变出适合自己的许多东东出来
这篇文章堪称其中的典范,当然还包括制作各种超小型的linux也是很good 顺便问一下 不过你们的时间也太多了,怎么能够有那么多精力搞LFS? 在机器上编译LFS,一定是用脚本搞定的吧??
__________________
Hack the free software. Into the freedom world. Fight for the free. |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
看到kde3.5起来以后,真的不知道应该从什么地方继续下去了!N大的包,有时候需要给一个东西添加一个功能,几乎要从新编译N个大包,估计lfs的精髓就在于此吧,高度制定。
偶还需要举行学习
__________________
MSN上人太少拉,大家都来+吧,免得看到msn上可怜的几个人…… evinmask at msn dot com |
|
|
|
|
|
|
|
第 9 帖 | |||
|
|
引用:
我想大多数搞LFS的人都有自己维护的一份脚本,有些重复劳动不太必要,用脚本很方便。 引用:
详细的文档我还在整理中,这样吧,我可以先传一个做好的文件,有兴趣的可以看一下. |
|||
|
|
|
|||
|
|
第 10 帖 | |
|
|
建立目录
这一项用 rpm 指定一个 root 然后安装 fedora 自带的 filesystem rpm 会更快更保险,包括权限位之类都可以设置完备。小系统里不必安装 rpm 的,就是安装也不会很大 |
|
|
|
|
|
|
|
第 11 帖 | |
|
|
强呀,学习学习
|
|
|
|
|
|
|
|
第 12 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 13 帖 | |
|
|
支持一下,我回来了
__________________
我什么都不会 当我白痴好了! 可是…… 爱就爱了! |
|
|
|
|
|
|
|
第 14 帖 | |
|
|
已经在原文中增加了成品下载的链接,下载文件大小为2.8M左右,采用rar格式压缩,下载后解压缩后形成一个VMWare5.0支持的完整目录,直接用VMWare5启动即可。采用DHCP来设置IP地址,启动后有地址提示,直接访问可看到一个写有“OK”的页面。
内存占用12M。 |
|
|
|
|
|
|
|
第 15 帖 | |
|
|
谢楼主
(7zip + vmware player) |
|
|
|
|
|