内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

编译打包和其他
回复
SquallATF
帖子: 13
注册时间: 2007-08-05 12:30

内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#1

帖子 SquallATF » 2008-12-29 21:22

刚开始学习内核编译,编译了2次内核
2.6.28 官方和ubuntu-jaunty的git
都能正常的启动。
用的配置文件来自系统安装的内核的配置文件,修改了cpu配置去掉了一些不可能用到的模块。
不过有一个问题就是,系统的内核特别小压缩后才20多m而我自己编译的却特别大压缩后200多m。
我想知道为啥官方的内核能做得这么小呢,理论上来说参数都一样啊~~
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#2

帖子 rocky22 » 2008-12-29 21:32

先看看配置选项里的Kernel hacking里选了哪个,有个关于debug信息的选项,一旦选上了,包会急剧加大。
上次由 rocky22 在 2008-12-29 21:45,总共编辑 1 次。
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#3

帖子 rocky22 » 2008-12-29 21:45

这是我的.config文件里关于Kernel hacking部分的选项:
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y

有人说这部分全部都可以不选。如果选了CONFIG_UNUSED_SYMBOLS这个,包的尺寸就会特别大。
SquallATF
帖子: 13
注册时间: 2007-08-05 12:30

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#4

帖子 SquallATF » 2008-12-29 22:52

明天再看看~XD不过应该没开过多的选项~
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#5

帖子 rocky22 » 2008-12-30 8:53

还有,文件系统里,如果File systems下的Miscellaneous filesystems选上了,包的大小会增加几十M。
而那里的文件系统几乎都是用不到的,如ADFS file system、Amiga FFS file system等等。
SquallATF
帖子: 13
注册时间: 2007-08-05 12:30

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#6

帖子 SquallATF » 2008-12-30 8:57

发现一个问题同样的配置,官方的deb只有不到300个模块文件,而我自己编译出来的deb确有2300多个模块~~
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#7

帖子 rocky22 » 2008-12-30 9:25

几个可以精简的地方:
1、Device drivers下面的Serial ATA (prod) and Parallel ATA (experimental) drivers (ATA)这一项的ATA SFF support (ATA_SFF)下,只选自己机器用的,比如我的是Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (ATA_PIIX)。
2、I2C support下I2C Hardware Bus support这一项,也只选自己机器里用的,我的是Intel 82801 (ICH) (I2C_I801)。
3、Graphics support下,Support for frame buffer devices (FB)这一项,我的是Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM。其他的驱动不选。当然VESA VGA graphics support (FB_VESA)是要选的。
4、声卡部分同样。
5、File systems下,只选基本的那些,如ext2、ext3、ext4、reiserfs、xfs等,Miscellaneous filesystems下一个都不选。

硬件配置可以用 lshw 查看。
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#8

帖子 rocky22 » 2008-12-30 9:28

官方的包不只是那两个,它还有linux-restricted-modules包等。
rocky22
帖子: 684
注册时间: 2008-02-17 22:29
来自: 江苏

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#9

帖子 rocky22 » 2008-12-30 9:33

推荐楼主先看一下这个:
http://ti8er.blog.ubuntu.org.cn/files/2 ... x-2628.pdf

2.6.28配置项的翻译,很详细的。
SquallATF
帖子: 13
注册时间: 2007-08-05 12:30

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#10

帖子 SquallATF » 2008-12-30 15:50

刚才发现原来我看错了~官方的deb也是2300多个模块文件。
看来应该是和debug有关系~我去掉无用模块,剩下近600个模块都还比官方大XD

刚才google了一下,发现有个环境变量INSTALL_MOD_STRIP=1貌似可以strip 模块文件~正在重编译ing
头像
pcbird
帖子: 2337
注册时间: 2008-12-19 13:44
来自: 东8区

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#11

帖子 pcbird » 2009-01-08 17:51

xconfig里怎么选阿?

代码: 全选

 
       \   ,__,
        \  (oo)____
           (__)    )\
              ||--|| *  
 
头像
苹果虫
帖子: 185
注册时间: 2008-08-25 18:57

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#12

帖子 苹果虫 » 2009-01-31 0:18

我装ati官方驱动需要这两项打开
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
hlost
帖子: 121
注册时间: 2009-05-04 10:29

Re: 内核编译新手求助一个问题,关于生成的linux-image*.deb的大小

#13

帖子 hlost » 2009-05-14 11:32

我编译 2.6.29.3也是200多m

本来没打算再编译一次的,因为实在太慢了,看了这个觉得还应该再编译一次,嘿嘿
回复