[arch-projects] [mkinitcpio PATCH 1/3] /run/initramfs: copy the whole ramfs
Dave Reisner
d at falconindy.com
Thu Nov 17 21:03:02 EST 2011
On Thu, Nov 17, 2011 at 10:51:37PM -0300, Gerardo Exequiel Pozzi wrote:
> On 11/17/2011 10:21 PM, Dave Reisner wrote:
> >On Fri, Nov 18, 2011 at 11:42:43AM +1100, Tom Gundersen wrote:
> >>On Fri, Nov 18, 2011 at 5:23 AM, Thomas Bächler<thomas at archlinux.org> wrote:
> >>>Am 17.11.2011 18:07, schrieb Tom Gundersen:
> >>>>I see two potential issues: boot speed and memory use. Moving stuff
> >>>>around in memory should be pretty much instantaneous, and the memory
> >>>>(a couple of MB) will be swapped out quick enough so it shouldn't make
> >>>>a difference.
> >>>>
> >>>>I'd be happy to write a new patch where this is optional, but I don't
> >>>>think we should optimize for stuff unless we know it is a measurable
> >>>>problem.
> >>>Depending on what's in there, it could be big. For example, I once wrote
> >>>a hook that extracted a tarfile that was stored inside initramfs (that
> >>>tarfile was the whole root filesystem IIRC).
> >>That's something to take into consideration. I think it would be best
> >>if we were able to optimize the cases that need it by adding some
> >>exceptions to the copying, but still keep the bits needed for
> >>shutdown++, rather than disabling it altogether. Having huge
> >>initramfs' being a corner case, any workaround should of course be
> >>unintrusive (if that is not possible then I agree on just allowing
> >>this stuff to be switched off).
> >>
> >>[untested: would bindmounting a directory (like say /lib/modules) to
> >>itself exclude it from "cp -ax"?]
> >No, it won't. Generally, detection of crossing onto another mount is
> >done by comparing the devno of '.' to the devno of '..'. Bind mounts
> >aren't special in this regard -- they'll just expose the underlying
> >physical mount.
> Mmm no, you can not access to files in underliying mount from such path.
> Anyway the rootfs is the HEAD of vfsmount, so you can not
> bind/move/pivot. :P
> But supose that you can do a bindmount... -a is used that implies
> -d, that implies --preserve=links, in that case cp will fails
> because will try to create a link to directory. ;)
No, this has nothing to do with chrooting. The point is that if you're
walking through a directory structure for an operation that's required
to stay on a single filesystem, you're stat'ing every directory before
descending into it (my example was actually backwards). Written in
(probably nonworking) shell..
walk() {
local pwd_dev dir_dev
pwd_dev=$(stat -c %d "$1")
for f in *; do
if [[ -d $f ]]; then
dir_dev=$(stat -c "$1/$f")
if (( pwd_dev != dir_dev )); then
# this is a mountpoint, skip it
continue
fi
walk "$f"
else
callback "$f"
fi
done
}
walk /
>
> Why no just copy the needed files? Yes needs more steps...
Because I don't want to have to calculate what's needed for teardown on
an encrypted LVM root device. Make it optional, and everything is
copasetic.
d
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://mailman.archlinux.org/pipermail/arch-projects/attachments/20111117/b9ac53bb/attachment.asc>
More information about the arch-projects
mailing list