[Buildroot] Re-building a Linux Net-bootable image after all other components are built
Stephen Beckwith
embeddedsteve at gmail.com
Wed Jul 22 22:05:39 UTC 2020
Please pardon the verbosity of this - I am a believer that the more you
know (i.e. context) the better. I am grateful for your expertise and
assistance.
Regards,
Stephen Beckwith
*In original setup:*
BR 2015.08.1 With GCC 4.4.7 (BR Build)
Kernel = linux-3.14.17-pilot4 {with patches}
U-Boot = u-boot-2013.07-pilot4 {with patches}
- in this setup, everything works fine. We complete our build steps, then
we go back and do a “rebuild” of the Linux kernel as shown below. The
output uImage (renamed to uImage_netboot) will be approximately the same
size as the output image we create for flashing: ~ 26MB.
- This will be a linux kernel (~ 2.8MB) + an INITRAMFS attached - to make
the total size.
*New Setup:*
BR 2020.02.1 With GCC 9.2.0 (and updated glibc as well)
Kernel and U-boot are the same, with some additional patches to allow for
successful compile.
- here, the final output is ~ the same as the previous build.
- However, when we go to remake the Netboot image, we only get the Kernel
output size of ~ 2.8MB, without the attached ROOT FILE SYSTEM.
Investigation seems to show that the updated Buildroot internals are doing
somethings differently vs. how we had implemented this in the current setup.
The linux .config (in the output/build/linux-custom directory) seems to be
getting overwritten by Buildroot AFTER we have manually modified it (shown
below). When I searched the .config file in the linux build directory, the
parameters set below are NOT present, which leads me to believe that
Buildroot is overwriting this during the reconfigure step (which it didn’t
use to in the current setup).
I’m looking for suggestions on how to do this post-processing build with
the new Buildroot setup to generate this image. We have the rootfs.cpio
file to be attached to the kernel, just need to figure out how to do this
“correctly”.
*BR Configuration:*
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_SP_DEV_PATH)/scripts/post_image_build.sh"
The post_image_build.sh script calls: buildrootfs_binary_files script
This script will Generate the ext4 RFS images required (verified they are
correct)
The post_image_build.sh then creates the package we flash on our devices,
packing up the kernel and RFS with a “header” for our update process.
The very last step done in the entire process is to call:
build_netbooting_image.sh
This build_netbooting_image.sh script will:
Save off the uImage in the build directory, saves the original config file
as well
It then “tweaks” the output/build/linux-custom directory’s .config file
CONFIG_INITRAMFS_SOURCE=${BR_BINARIES_DIR}/rootfs.cpio
CONFIG_INITRAMFS_ROOT_UID = 0
CONFIG_INITRAMFS_ROOT_GID =0
CONFIG_INITRAMFS_COMPRESSION_NONE = y
cd into the output directory and from here does a “make linux-reconfigure”
Does clean up and re-copy of images: so we get a “uImage_netboot” of ~ 26MB
This is the exact same process that we do with current buildroot setup -
the only real difference is the Buildroot infrastructure and the compiler.
*Current Build:*
LD vmlinux
SORTEX vmlinux
SYSMAP System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
arm-buildroot-linux-gnueabi-gcc: warning:
/u/sbeckwit/p4/spNext/mendo_dev/src/include: linker input file unused
because linking not done
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.14.17-ami
Created: Thu Jun 11 15:17:52 2020
Image Type: ARM Linux Kernel Image (uncompressed)
*Data Size: 26622048 Bytes = 25998.09 kB = 25.39 MB*
Load Address: 81008000
Entry Point: 81008000
Image arch/arm/boot/uImage is ready
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[6]: `include/generated/mach-types.h' is up to date.
CALL scripts/checksyscalls.sh
arm-buildroot-linux-gnueabi-gcc: warning:
/u/sbeckwit/p4/spNext/mendo_dev/src/include: linker input file unused
because linking not done
Building modules, stage 2.
MODPOST 8 modules
*New Build:*
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[6]: 'include/generated/mach-types.h' is up to date.
CALL scripts/checksyscalls.sh
arm-buildroot-linux-gnueabi-gcc.br_real: warning:
/home/sbeckwit/sp_dev/bowie_dev/src/include: linker input file unused
because linking not done
CHK include/generated/compile.h
CHK kernel/config_data.h
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.14.17-ami
Created: Thu Jun 11 15:04:23 2020
Image Type: ARM Linux Kernel Image (uncompressed)
*Data Size: 2824656 Bytes = 2758.45 KiB = 2.69 MiB*
Load Address: 81008000
Entry Point: 81008000
Image arch/arm/boot/uImage is ready
- More detailed listings can be provided.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20200722/ec68d563/attachment.html>
More information about the buildroot
mailing list