目前,我正在尝试用自定义内核手动替换嵌入式设备上的ubuntu内核中的内核。然而,当我试图更新initrd时,我的initrd就变得更大了。
以下是我所做的:
/lib/modules/new_kernel_version的新模块主管处获得相同的模块如果我这样做,我的initrd就会比原来的要大很多,所以我检查了各个模块。我以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中的新内核构建一个新的initrd。
我还用我在ubuntu中使用mkinitrfs命令从头创建的initrd进行了测试,它的大小与我手动更新的initrd相同。
发布于 2012-11-14 16:28:52
您的模块有很多符号和调试信息。您想要的命令是
strip --strip-unneeded。
https://serverfault.com/questions/448654
复制相似问题