我目前正在尝试用一个定制的内核在embedded式设备上手动replaceubuntu-core内核。 但是,当我尝试更新initrd我的initrd变得更大。
这是我做的:
/lib/modules/new_kernel_version的新模块导向器获取相同的模块 如果我这样做,我的initrd变得比原来的更大,所以我检查了各个模块。 我select了btrfs.ko文件系统驱动程序作为例子。 所以通过比较这两个模块,我注意到我刚刚选入initrd的那个模块要大得多,这就造成了大小的差异。
-rw-r--r-- 1 root root 999K Nov 14 15:06 btrfs.ko
对于发货的initrd内的btrfs.ko 。
-rw-r--r-- 1 root root 7.2M Nov 14 15:08 btrfs.ko
对于新的btrfs.ko 。
这两个模块有什么不同? 这可能是由于新内核的一些错误设置造成的? 当生产内核时,我复制/proc/config.gz并使用make oldconfig来更新它,所以两个内核的所有优化都应该是一样的。
或者,在将模块放入initrd之前,还有其他一些模块正在做什么? 也许还有更好的方法来为Ubuntu中的新内核完全构build一个新的initrd。
更新:
我也用一个initrdtesting了mkinitrfs ,它是在ubuntu下使用mkinitrfs命令从头开始创build的,而且它与我手动更新的initrd发现的大小相同。
你的模块有很多符号和debugging信息。 你想要的命令是
strip --strip-unneeded 。