Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] Troubles with initramfs
@ 2012-07-31 15:59 Dallas Clement
  2012-07-31 18:26 ` Thomas Petazzoni
  0 siblings, 1 reply; 3+ messages in thread
From: Dallas Clement @ 2012-07-31 15:59 UTC (permalink / raw)
  To: buildroot

Greetings:

I recently tried turning on initramfs in my buildroot configuration.
Prior to this I was able to build everything fine and run.  Now after
simply selection initramfs under filesystem images, I'm getting a
linker error during the final stages of building the kernel.  Some
google searching seems to indicate that this may have something to do
with the size of the initramfs and maximum branch distance for the ARM
processor (see http://www.spinics.net/lists/arm-kernel/msg65093.html).

The size of the initramfs contents seem to be reasonable:

[dallasc /development/dallasc/buildroot-2011.05-sdk6.0] ls -l output/images/
total 76116
-rw-r--r-- 1 dallasc dallasc   514194 Jul 31 15:30 rootfs.initramfs
-rw-r--r-- 1 dallasc dallasc 77424640 Jul 31 15:16 rootfs.tar

Does anyone have any ideas for me on how to get past this error?

>>> toolchain Invoking  /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc --sysroot /development/dallasc/TS-3400/buildroot-2011.05-sdk6.0/output/host/usr/arm-unknown-linux-gnueabi/sysroot -march=armv7-a -mtune=marvell-fv7 -mabi=aapcs-linux -msoft-float -mlittle-endian -Wp,-MD,usr/.initramfs_data.o.d -nostdinc -isystem /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.4.5/include -I/development/dallasc/TS-3400/buildroot-2011.05-sdk6.0/output/build/linux-3.0.6/arch/arm/include -Iarch/arm/include/generated -Iinclude -include include/generated/autoconf.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-armadaxp/include -Iarch/arm/plat-armada/include -D__ASSEMBLY__ -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -include asm/unified.h -msoft-float -gdwarf-2 -DINITRAMFS_IMAGE=usr/initramfs_data.cpio.gz -c -o usr/initramfs_data.o usr/initramfs_data.S
  LD      usr/built-in.o
  LD      vmlinux.o
  MODPOST vmlinux.o
WARNING: modpost: Found 3 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
>>> toolchain Invoking  /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp//bin/arm-marvell-linux-gnueabi-gcc --sysroot /development/dallasc/TS-3400/buildroot-2011.05-sdk6.0/output/host/usr/arm-unknown-linux-gnueabi/sysroot -march=armv7-a -mtune=marvell-fv7 -mabi=aapcs-linux -msoft-float -mlittle-endian -Wp,-MD,init/.version.o.d -nostdinc -isystem /opt/armada-sdk-5.0-64k/armv7-marvell-linux-gnueabi-softfp/bin/../lib/gcc/arm-marvell-linux-gnueabi/4.4.5/include -I/development/dallasc/TS-3400/buildroot-2011.05-sdk6.0/output/build/linux-3.0.6/arch/arm/include -Iarch/arm/include/generated -Iinclude -include include/generated/autoconf.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-armadaxp/include -Iarch/arm/plat-armada/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -marm -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DKBUILD_STR(s)=#s -DKBUILD_BASENAME=KBUILD_STR(version) -DKBUILD_MODNAME=KBUILD_STR(version) -c -o init/version.o init/version.c
  LD      init/built-in.o
  LD      .tmp_vmlinux1
kernel/built-in.o:(.fixup+0x11c): relocation truncated to fit:
R_ARM_JUMP24 against `.init.text'
make[1]: *** [.tmp_vmlinux1] Error 1
make[1]: Leaving directory
`/development/dallasc/TS-3400/buildroot-2011.05-sdk6.0/output/build/linux-3.0.6'
make: *** [/development/dallasc/buildroot-2011.05-sdk6.0/output/build/linux-3.0.6/.stamp_initramfs_rebuilt]
Error 2

Thanks,

Dallas

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] Troubles with initramfs
  2012-07-31 15:59 [Buildroot] Troubles with initramfs Dallas Clement
@ 2012-07-31 18:26 ` Thomas Petazzoni
  2012-07-31 18:44   ` Dallas Clement
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Petazzoni @ 2012-07-31 18:26 UTC (permalink / raw)
  To: buildroot

Hello,

Le Tue, 31 Jul 2012 10:59:39 -0500,
Dallas Clement <dallas.a.clement@gmail.com> a ?crit :

> [dallasc /development/dallasc/buildroot-2011.05-sdk6.0] ls -l output/images/
> total 76116
> -rw-r--r-- 1 dallasc dallasc   514194 Jul 31 15:30 rootfs.initramfs
> -rw-r--r-- 1 dallasc dallasc 77424640 Jul 31 15:16 rootfs.tar

How can you get a rootfs.initramfs file? I don't think it's possible to
get such an image with the default Buildroot.

With the default Buildroot, when you enable the initramfs file format,
it's the entire root filesystem that gets included as an initramfs into
the kernel.

If you decided to follow Avery's suggestion (creating a separate
initramfs that includes selected parts of the real root filesystem),
then you should probably not use Buildroot initramfs capabilities, and
simply configure your kernel to point CONFIG_INITRAMFS_SOURCE to your
special initramfs.

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] Troubles with initramfs
  2012-07-31 18:26 ` Thomas Petazzoni
@ 2012-07-31 18:44   ` Dallas Clement
  0 siblings, 0 replies; 3+ messages in thread
From: Dallas Clement @ 2012-07-31 18:44 UTC (permalink / raw)
  To: buildroot

> With the default Buildroot, when you enable the initramfs file format,
> it's the entire root filesystem that gets included as an initramfs into
> the kernel.

That could very well be.  It's apparently creating a default initramfs
image found under linux-<blah>/usr named initramfs_data.cpio.gz.  I
cracked it open and there's a lot of files in there.

dallasc dallasc 76142592 Jul 31 17:12 initramfs_data.cpio

> If you decided to follow Avery's suggestion (creating a separate
> initramfs that includes selected parts of the real root filesystem),
> then you should probably not use Buildroot initramfs capabilities, and
> simply configure your kernel to point CONFIG_INITRAMFS_SOURCE to your
> special initramfs.

<nod>, still intending to do that.  This was just an initial
experiment.  Looks like the linker errors came from the large size of
the initramfs and limited branching range on ARM.  I was frankly
surprised that buildroot attempts to create a default initramfs.

Moving on to creating a minimal size initramfs.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-07-31 18:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-31 15:59 [Buildroot] Troubles with initramfs Dallas Clement
2012-07-31 18:26 ` Thomas Petazzoni
2012-07-31 18:44   ` Dallas Clement

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox