initrd 中的模块大小

initrd 中的模块大小

我目前正在尝试手动用自定义内核替换嵌入式设备上 ubuntu-core 中的内核。但是当我尝试更新 initrd 时,我的 initrd 变得大得多。

这是我所做的:

  • 提取 ubuntu 附带的 initrd
  • 列出旧 initrd 中的所有模块
  • 从新模块主管处获取相同的模块/lib/modules/new_kernel_version
  • 将这些模块添加到 initrd 并删除旧模块

如果我这样做,我的 initrd 会变得比原来的大很多,所以我检查了各个模块。我选择了btrfs.ko文件系统驱动程序作为示例。因此,通过比较这两个模块,我注意到我刚刚选入 initrd 的那个模块要大得多,这导致了大小差异。

-rw-r--r-- 1 root root 999K Nov 14 15:06 btrfs.ko

对于btrfs.ko已发货的 initrd。

-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 中的命令从头创建的 initrd 进行了测试mkinitrfs,它与我手动更新的 initrd 具有相同的大小差异。

答案1

您的模块有很多符号和调试信息。您需要的命令是
strip --strip-unneeded

相关内容