linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rob Landley <rob@landley.net>
To: Jeff Garzik <jeff@garzik.org>
Cc: Michael Neuling <mikey@neuling.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	klibc@zytor.com, Al Viro <viro@ftp.linux.org.uk>,
	hpa@zytor.com, miltonm@bga.com
Subject: Re: [PATCH] initramfs: CPIO unpacking fix
Date: Wed, 22 Mar 2006 17:23:28 -0500	[thread overview]
Message-ID: <200603221723.29279.rob@landley.net> (raw)
In-Reply-To: <4420F93C.1050705@garzik.org>

On Wednesday 22 March 2006 2:14 am, Jeff Garzik wrote:
> Michael Neuling wrote:
> > Unlink files, symlinks, FIFOs, devices etc. (except directories) before
> > writing them when extracting CPIOs.  This stops weird behaviour like:
> >  1) writing through symlinks created in earlier CPIOs. eg foo->bar in
> >     the first CPIO.  Having foo as a non-link in a subsequent CPIO,
> >     results in bar being written and foo remaining as a symlink.
> >  2) if the first version of file foo is larger than foo in a
> >     subsequent CPIO, we end up with a mix of the two.  ie. neither
> >     the first or second version of /foo.
> >  3) special files like devices, fifo etc. can't be overwritten in
> >     subsequent CPIOS.
> >
> > With this, the kernel will more closely replicate
> >   for i in *.cpio; do cpio --extract --unconditional < $i ; done
> >
> > This is a change but it's regarded as fixing broken functionality.
> >
> > Signed-off-by: Michael Neuling <mikey@neuling.org>
>
> For the kernel, I would regard that as needless code...  Coding for a
> chain of CPIO archives overwriting each other seems like overengineering.

There's an obvious use case:

First initramfs.cpio.gz built into the kernel, second initramfs.cpio.gz 
supplied as an external file via the initrd mechanism.  Both get extracted 
into the same rootfs, and I believe external one will overwrite the internal 
one if files conflict.

And yes, there are people out there who want to deploy the same binary kernel 
image across a product line (or at least put each new one through 3 months of 
testing).  And others who want to be able to twiddle the rootfs contents 
without rebuilding the kernel from source each time.  (And of course anybody 
who needs to supply binary firmware to a statically linked device driver like 
ipw2200 is probably pretty happy about the ability to keep it in a separate 
file from the kernel, for license reasons.  Or should be, anyway.)

I'm actually fiddling with a script to let people do this for 
vmlinux->bzImage.  Objcopy with a new init.ramfs section and then go through 
the song and dance to make a bzImage.  Replacing the initramfs _in_ a 
bzimage?  Not fun.  Turning vmlinux into each of the other binary packaging 
types for other platforms?  Also not fun.  (I don't even have a complete list 
of what they all _are_ yet.  Working on it...)

> 	Jeff

Rob
-- 
Never bet against the cheap plastic solution.

  parent reply	other threads:[~2006-03-22 22:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-16  7:37 [PATCH] Chained CPIOs writing to the same file bug Michael Neuling
     [not found] ` <20060217160621.99b0ffd4.mikey@neuling.org>
2006-02-21 23:45   ` [PATCH] initramfs: multiple CPIO unpacking fix Michael Neuling
2006-02-22  2:14     ` [klibc] " Jeff Bailey
2006-02-22  2:17       ` H. Peter Anvin
2006-03-22  6:12   ` [PATCH] initramfs: " Michael Neuling
2006-03-22  7:14     ` Jeff Garzik
2006-03-22 16:05       ` [klibc] " H. Peter Anvin
2006-03-22 22:23       ` Rob Landley [this message]
2006-03-22 23:22         ` Jeff Garzik
2006-04-07 17:33   ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200603221723.29279.rob@landley.net \
    --to=rob@landley.net \
    --cc=hpa@zytor.com \
    --cc=jeff@garzik.org \
    --cc=klibc@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikey@neuling.org \
    --cc=miltonm@bga.com \
    --cc=viro@ftp.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).