首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法将kexec功能添加到busybox initrd?

是否有方法将kexec功能添加到busybox initrd?
EN

Stack Overflow用户
提问于 2019-10-29 14:35:22
回答 2查看 735关注 0票数 0

我有3MB的SPI闪存在我的板上,我可以将bzImage,busybox,initrd和coreboot ROM打包到这个SPI闪存中。我也能够引导到shell,所有使用ROM内核作为引导加载程序.

我在USB设备上有更大的内核。我也能够检测到USB和挂载它。但问题是,busybox似乎没有kexec实用程序。我不能使用任何其他initrd包,因为由于内存限制,我的cpio (未压缩的)大小不应该超过1.4MB。U根支持kexec,但是最小的映像大小很容易达到3MB,或者至少我无法找到一种方法来构建小于该大小的图像。

因此,是否有方法将kexec支持添加到busybox (编译静态二进制文件并将其复制到initrd )?或者任何其他可以满足1.4MB大小需要的initrd包?

编辑

这个职位建议在busybox中可能有kexec支持,但是我找不到它的任何踪迹。事实上,请求添加kexec-工具 to busybox是十多年前完成的。但是当我在垃圾箱里做grep的时候,我没有看到任何痕迹。

EN

回答 2

Stack Overflow用户

发布于 2019-10-29 20:06:20

来自kexec工具的kexec二进制文件大约需要300-Os (x86_64和-Os)。即使将其添加到busybox中,它也不会变得更小,因为它确实需要做一些非常复杂的事情,而这些事情在busybox中其他地方都没有完成。

如果您甚至没有剩下300 to,那么您可能应该从busybox中删除配置选项,以节省空间。使用uClibc,您还可以删除一些不需要的选项,如wchar和线程。确保您使用静态链接,这样可以节省一点空间。

下面的建筑工配置生成一个精确的1.4MB的initramfs。

代码语言:javascript
复制
BR2_x86_64=y
BR2_x86_corei7=y
BR2_STATIC_LIBS=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--stable-2018.11-1.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_7=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
BR2_PACKAGE_KEXEC=y
BR2_PACKAGE_KEXEC_ZLIB=y
BR2_TARGET_ROOTFS_CPIO=y
# BR2_TARGET_ROOTFS_TAR is not set
票数 2
EN

Stack Overflow用户

发布于 2022-08-16 14:43:08

我们可以为kexec构建一个busybox版本,生成一个220 K静态链接二进制,如下所示:

  1. 使用musl
  2. strip去除二进制文件(也许它可以进一步减小二进制文件的大小?)
  3. 通过./configure --without-<FEATURE>禁用未使用的功能
代码语言:javascript
复制
KEXEC_VERSION=2.0.24
KEXEC=kexec-tools-$KEXEC_VERSION

curl -LO https://mirrors.edge.kernel.org/pub/linux/utils/kernel/kexec/$KEXEC.tar.xz
tar xf $KEXEC.tar.xz
cd $KEXEC

CC=musl-gcc LDFLAGS=-static ./configure \
  --without-lzma \
  --without-xen \
  --sbindir=/bin
make
strip build/sbin/kexec

file buils/sbin/kexec  # -> [...] statically linked, stripped
du -h build/sbin/kexec # -> 220K [...]

还是不太好但是是的..。让我们知道,如果你能缩小它更多:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58609597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档