Bug 1141

Summary: BusyBox based initramfs generation
Product: buildroot Reporter: Serj Kalichev <serj.kalichev>
Component: OtherAssignee: unassigned
Status: RESOLVED WONTFIX    
Severity: enhancement CC: buildroot
Priority: P5    
Version: 2009.11   
Target Milestone: 2010.05   
Hardware: PC   
OS: Linux   
Host: Target:
Build:
Attachments: BusyBox based initramfs generation patch

Description Serj Kalichev 2010-02-19 11:44:44 UTC
Created attachment 1141 [details]
BusyBox based initramfs generation patch

Sometimes it's necessary to generate not rootfs only but both real rootfs and initramfs. Initramfs is more simpler and don't need many different packages but only specially configured busybox and some additional scripts.

There is a makefile initramfs.mk in package/busybox dir for BusyBox based initramfs generation. But it was unfinished and commented in Config.in. I could not use it for real project so I try to patch BuildRoot to make it work.

Now BuildRoot can use target dir for generation initramfs. I change target/initramfs/Config.in file to select the initramfs generation way. They can choose "none", "initramfs from target dir" and "BusyBox based initramfs".
When you choose "initramfs from target dir" - it's a traditional way to generate initramfs.

When the choice is "BusyBox based initramfs" BuildRoot can generate two images - one for initramfs (put it into the bzImage) and the second for real rootfs. The user can specify the BusyBox config file, the filesystem skeleton and a dir with customization files for initramfs generation.

The attached patch consist of 
* target/initramfs/Config.in - to configure initramfs generation parameters
* package/busybox/initramfs.mk - to build specially configured BusyBox and generate the initramfs image. It depends on files in the package/busybox/initramfs_custom (by default) directory. So user can change custom files and the initramfs will be rebuild.
* package/busybox/busybox-initramfs.config - it's only the example of minimalist BusyBox configuration for the initramfs.
* package/busybox/initramfs_custom - it's only the example of simple init script for the initramfs. It can mount rootfs by the UUID and LABEL.
Comment 1 Thomas Petazzoni 2010-02-21 22:33:15 UTC
Move milestone to 2010.05 since enhancements will not be handled before the release of 2010.02.
Comment 2 Thomas Petazzoni 2010-06-07 14:52:47 UTC
Peter, do we really want to go this way, and make Buildroot support the fact of creating two separate filesystems: one small initramfs and one "normal" root filesystem containing all libraries and applications ?

With a first look, I'd tempted to say "no" : just use Buildroot twice, once to build your initramfs and once to build your real root filesystem. But this is something that can be discussed, of course.
Comment 3 Peter Korsgaard 2010-06-07 19:44:26 UTC
(In reply to comment #2)
> Peter, do we really want to go this way, and make Buildroot support the fact of
> creating two separate filesystems: one small initramfs and one "normal" root
> filesystem containing all libraries and applications ?
> 
> With a first look, I'd tempted to say "no" : just use Buildroot twice, once to
> build your initramfs and once to build your real root filesystem. But this is
> something that can be discussed, of course.

No, I agree with you.
Comment 4 Thomas Petazzoni 2010-06-07 20:22:59 UTC
Ok, so I'm closing this bug, marking as WONTFIX. The rationale is that we don't want to enter into the game where Buildroot would build two separate filesystems.