LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 05-11-29, 17:08 第 1 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

标题: [原创]玩点新鲜的,做一个功能单一,体积小巧的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 编辑. 原因: 增加成品的下载地址
  youbest 当前在线   回复时引用此帖
旧 05-11-29, 20:10 第 2 帖
wen
 
 
 
注册会员  
  注册日期: Jan 2003
  我的住址: 广东东莞
  帖子: 267
  精华: 11
 

再写详细一些嘛.







__________________
如果您对使用OSS进行信息技术教育感兴趣,请来www.ictedu.net.cn 聊聊。
  wen 当前离线   回复时引用此帖
旧 05-11-29, 20:16 第 3 帖
tram
 
tram 的头像
 
 
资深版主  
  注册日期: Sep 2002
  帖子: 7,281
  精华: 27
 

兄弟玩出名堂来了,恭喜!







__________________
LFS全套中文文档:http://lfs.linuxsir.org(主力)
LFS 英文站点镜像:http://lfs.cosoft.org.cn
二笔输入法 for Linux: http://ebf.cosoft.org.cn
  tram 当前离线   回复时引用此帖
旧 05-11-29, 22:24 第 4 帖
csfrank 帅哥
 
csfrank 的头像
 
 
注册会员  
  注册日期: Jun 2005
  我的住址: 上海
  帖子: 524
  精华: 20
 

youbest兄一出手果然不同凡响!PF!
  csfrank 当前离线   回复时引用此帖
旧 05-11-29, 22:25 第 5 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 14,315
  精华: 10
 

LFS手册开首就说把httpd的系统做到只有5M大小,可是众人在mailing list上问及时,高人只回答已被删除,无法提供下载。

偶曾经想过如何做,可是光是kernel就占去约1.5MB,5M的系统确实很有难度啊!

敬请豹兄再详细说明一下,普导众生,功德无量。
  d00m3d 当前离线   回复时引用此帖
旧 05-11-30, 09:55 第 6 帖
drowsyboy
 
drowsyboy 的头像
 
 
注册会员  
  注册日期: Sep 2005
  帖子: 104
  精华: 2
 

强……

8过感觉还是不会制作工具链

等待详细的说明,嘿嘿







__________________
了解她愈多,爱她愈深
一切源于她优秀的内在
  drowsyboy 当前离线   回复时引用此帖
旧 05-11-30, 13:48 第 7 帖
sumargin
 
sumargin 的头像
 
 
注册会员  
  注册日期: Apr 2005
  我的住址: 宇宙的深渊
  帖子: 705
  精华: 1
 

这才叫做真正的lfs玩家,想把lfs怎么搞就怎么搞,变出适合自己的许多东东出来
这篇文章堪称其中的典范,当然还包括制作各种超小型的linux也是很good
顺便问一下
不过你们的时间也太多了,怎么能够有那么多精力搞LFS?
在机器上编译LFS,一定是用脚本搞定的吧??







__________________
Hack the free software.
Into the freedom world.
Fight for the free.
  sumargin 当前离线   回复时引用此帖
旧 05-11-30, 15:12 第 8 帖
休想
 
休想 的头像
 
 
注册会员  
  注册日期: Jan 2003
  我的住址: 火星来的猪
  帖子: 983
  精华: 1
 

看到kde3.5起来以后,真的不知道应该从什么地方继续下去了!N大的包,有时候需要给一个东西添加一个功能,几乎要从新编译N个大包,估计lfs的精髓就在于此吧,高度制定。
偶还需要举行学习







__________________
MSN上人太少拉,大家都来+吧,免得看到msn上可怜的几个人……
evinmask at msn dot com
  休想 当前离线   回复时引用此帖
旧 05-11-30, 17:37 第 9 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

引用:
作者: sumargin
这才叫做真正的lfs玩家,想把lfs怎么搞就怎么搞,变出适合自己的许多东东出来
这篇文章堪称其中的典范,当然还包括制作各种超小型的linux也是很good
顺便问一下
不过你们的时间也太多了,怎么能够有那么多精力搞LFS?
在机器上编译LFS,一定是用脚本搞定的吧??
太夸奖我了,有点惭愧。
我想大多数搞LFS的人都有自己维护的一份脚本,有些重复劳动不太必要,用脚本很方便。


引用:
作者: d00m3d
LFS手册开首就说把httpd的系统做到只有5M大小,可是众人在mailing list上问及时,高人只回答已被删除,无法提供下载。

偶曾经想过如何做,可是光是kernel就占去约1.5MB,5M的系统确实很有难度啊!

敬请豹兄再详细说明一下,普导众生,功德无量。
我现在做的这个系统大概是5.4M左右,除了能显示静态的网页外,其它的事情基本上都做不了.


详细的文档我还在整理中,这样吧,我可以先传一个做好的文件,有兴趣的可以看一下.
  youbest 当前在线   回复时引用此帖
旧 05-11-30, 18:15 第 10 帖
bbbush 帅哥
 
bbbush 的头像
 
 
临时退役版主  
  注册日期: Dec 2002
  我的住址: 内蒙古乌海=>小百合=>深圳
  帖子: 5,393
  精华: 16
 

建立目录

这一项用 rpm 指定一个 root 然后安装 fedora 自带的 filesystem rpm 会更快更保险,包括权限位之类都可以设置完备。小系统里不必安装 rpm 的,就是安装也不会很大
  bbbush 当前离线   回复时引用此帖
旧 05-11-30, 21:34 第 11 帖
GWCG
 
GWCG 的头像
 
 
注册会员  
  注册日期: Jul 2003
  帖子: 98
  精华: 0
 

强呀,学习学习
  GWCG 当前离线   回复时引用此帖
旧 05-11-30, 21:50 第 12 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 14,315
  精华: 10
 

引用:
作者: youbest
我现在做的这个系统大概是5.4M左右,除了能显示静态的网页外,其它的事情基本上都做不了.


详细的文档我还在整理中,这样吧,我可以先传一个做好的文件,有兴趣的可以看一下.
期待中。。。
  d00m3d 当前离线   回复时引用此帖
旧 05-12-01, 08:24 第 13 帖
darksun
 
darksun 的头像
 
 
注册会员  
  注册日期: Aug 2002
  我的住址: 北京
  帖子: 169
  精华: 0
 

支持一下,我回来了







__________________
我什么都不会
当我白痴好了!
可是……
爱就爱了!
  darksun 当前离线   回复时引用此帖
旧 05-12-01, 11:14 第 14 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

已经在原文中增加了成品下载的链接,下载文件大小为2.8M左右,采用rar格式压缩,下载后解压缩后形成一个VMWare5.0支持的完整目录,直接用VMWare5启动即可。采用DHCP来设置IP地址,启动后有地址提示,直接访问可看到一个写有“OK”的页面。
内存占用12M。
  youbest 当前在线   回复时引用此帖
旧 05-12-01, 14:05 第 15 帖
bbbush 帅哥
 
bbbush 的头像
 
 
临时退役版主  
  注册日期: Dec 2002
  我的住址: 内蒙古乌海=>小百合=>深圳
  帖子: 5,393
  精华: 16
 

谢楼主
(7zip + vmware player)
  bbbush 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 21:48


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org