nihui 发表于 2008-5-11 12:51:25

如何把 1GB 弄成 700mb~

啊,很明显很实际的。

总所周知了吧。
mgc-2.1 总是出 dvd 版本而不出 cd 版本了。

总结了一下,部分来自 opensuse project 的建议(opensuse 那边的开发者很棒哦......)。

1.只保留一种桌面环境:KDE
2.一种语言包数量:使用 magic_rpm_clean.sh 脚本能去掉大部分
3.可以通过网络上的源补充完整
4.去除发行版中可选的部分
5.去除应用程序中的可选部分:需要细化分包,可以省下很多空间
6.减少字体数量:文泉驿正黑体已经可以满足了
7.从软件中拆出语言包/非中文语言支持组件/文档包
8.弱化软件包依赖关系:需要实际的测试
9.减小引导系统大小
10.减少静态库数量
11.减少库的数量

以上这些都是在不降低功能优势的前提下能做到的。

至于合理分配组合各个软件也是应该考虑的,一些具有重复功能的软件和不实用的软件去除。

最后说一句:文件压缩。lzma 似乎是好的,bzip2 次之。

npcomet 发表于 2008-5-11 14:14:01

其他的都还说,但是换文件压缩方式就要更改rpm的代码了,比较复杂。

sejishikong 发表于 2008-5-11 17:56:34

这两天在弄livecd,打了lzma补丁的squashfs怎么也通不过。现在只好用gzip来压缩了。不过好像压缩速度gzip要比lzma快不少。

jiangtao9999 发表于 2008-5-11 20:15:26

gzip 最快,压缩率最低,sejishikong 你还是用 bzip2 吧……

sejishikong 发表于 2008-5-13 16:07:22

内核只支持gzip的。

jiangtao9999 发表于 2008-5-13 16:20:42

没有 bzip2 的 patch?

sejishikong 发表于 2008-5-13 17:39:43

好像是没有,以前有2.4的。

jiangtao9999 发表于 2008-5-13 17:40:59

squashfs + lzma 编译过了……

ubuntu 8.04 chroot 到 Gentoo 。
gentoo 的当前内核是linux-2.6.23-gentoo-r5 ,但我尝试编译的是 linux-2.6.25-gentoo-r3 。

先修改
LzmaVer = lzma457
我下载的已经是 457 了,但 Makefile 还是无耻的 443

lzma 和 squ 3.3 两个目录打的补丁不能省下。

linux-2.6.25-gentoo-r3 自带了 3.3 ,打上 sqlzma2k-3.3.patch 后拷贝带的两个 .h 文件到内核的 fs/squashfs 里面就能编译成功了。
我想这个内核应该可以支持 lzma 的 squ 镜像了吧……

最新版的 squ 3.3 已经不自带源代码了,估计是在内核补丁里包含了源代码,需要修改 squlzma 的 Makefile ,把
SqFs = ${Squashfs}/kernel-patches/${KVer}/fs/squashfs
改为内核源代码目录才行。

我编译时,这里也要修改……
#KDir = /lib/modules/$(shell uname -r)/build
KDir = ${Sqlzma}/linux-2.6.25-gentoo-r3/
当然,如果 sejishikong 安装了准备好的内核,这里貌似不需要修改了。

之后 make ,没有出错。
除了:
WARNING: Symbol version dump /root/squashfs/src/linux-2.6.25-gentoo-r3/Module.symvers
         is missing; modules will have no dependencies and modversions.
因为我没有完整编译测使用的内核……

没地方装 ML 了……

jiangtao9999 发表于 2008-5-13 17:41:54

PS:我是另外拷贝内核源代码到 squlzma 工作目录的。

jiangtao9999 发表于 2008-5-13 17:45:51

忘了说了:
lzma 需要自建目录解压缩。命名规则要参考 Makefile 。
sqlzma 直接解压缩到工作目录就行了,这个 Makefile 要在 squ3.3 和 lzmaXXX 上面一级。

jiangtao9999 发表于 2008-5-13 17:50:36

测试了一下,编译出来的 squ-tools 可以生成镜像文件并且解压缩,挂载没试验,我的 ubuntu 貌似不支持 lzma 的 squ 镜像……

jiangtao9999 发表于 2008-5-13 17:53:21

压缩:
ubuntu src # squashfs3.3/squashfs-tools/mksquashfs squashfs3.3 test.squ
Parallel mksquashfs: Using 1 processor
Creating little endian 3.1 filesystem on test.squ, block size 131072.
lzmadic 131072
[==============================================================================================================] 41/41 100%
Exportable Little endian filesystem, data block size 131072, compressed data, compressed metadata, compressed fragments, duplicates are removed
lzmadic 131072
Filesystem size 403.04 Kbytes (0.39 Mbytes)
        19.07% of uncompressed filesystem size (2113.43 Kbytes)
Inode table size 589 bytes (0.58 Kbytes)
        30.46% of uncompressed inode table size (1934 bytes)
Directory table size 558 bytes (0.54 Kbytes)
        45.44% of uncompressed directory table size (1228 bytes)
Number of duplicate files found 0
Number of inodes 63
Number of files 40
Number of fragments 16
Number of symbolic links0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 23
Number of uids 2
        unknown (1000)
        root (0)
Number of gids 0
ubuntu src #
解压缩:
ubuntu asdasd # ../squashfs3.3/squashfs-tools/unsquashfs ../test.squ

created 40 files
created 23 directories
created 0 symlinks
created 0 devices
created 0 fifos
ubuntu asdasd #

sejishikong 发表于 2008-5-13 17:58:05

我在magic上这个也是可以编译通过的,但squashfs.ko模块无法加载。

jiangtao9999 发表于 2008-5-13 18:02:02

不可能吧?
按理上说编译成功就应该能加载了啊……

jiangtao9999 发表于 2008-5-13 18:35:57

有个问题:为什么要编译成为模块,而不是直接编译进内核呢?
页: [1] 2
查看完整版本: 如何把 1GB 弄成 700mb~