All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: viro@parcelfarce.linux.theplanet.co.uk
Cc: Andrey Borzenkov <arvidjaar@mail.ru>,
	Chris Friesen <cfriesen@nortelnetworks.com>,
	"Kevin P. Fleming" <kpfleming@backtobasicsmgmt.com>,
	Jeff Garzik <jgarzik@pobox.com>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Is initramfs freed after kernel is booted?
Date: Wed, 19 Nov 2003 16:07:52 +0100	[thread overview]
Message-ID: <3FBB8748.8020503@suse.de> (raw)
In-Reply-To: <20031117191513.GA24159@parcelfarce.linux.theplanet.co.uk>

viro@parcelfarce.linux.theplanet.co.uk wrote:
> On Mon, Nov 17, 2003 at 09:33:59PM +0300, Andrey Borzenkov wrote:
> 
>>On Monday 17 November 2003 21:03, viro@parcelfarce.linux.theplanet.co.uk 
>>wrote:
>>
>>>On Mon, Nov 17, 2003 at 12:50:34PM -0500, Chris Friesen wrote:
>>>
>>>>viro@parcelfarce.linux.theplanet.co.uk wrote:
>>>>
>>>>>On Mon, Nov 17, 2003 at 11:06:48AM -0500, Chris Friesen wrote:
>>>>>
>>>>>>Anyone know why it overmounts rather than pivots?
>>>>>
>>>>>Because amount of extra code you lose that way takes more memory than
>>>>>empty roots takes.
>>>>>
>>>>>Remove whatever files you don't need and be done with that.
>>>>
>>>>How do you remove files from the old rootfs after the new one has been
>>>>mounted on top of it?
>>>
>>>You do that before ;-)
>>
>>would the following work?
>>
>>pivot_root . /initramfs
>>cd /initramfs && rm -rf *
> 
> 
> No.  pivot_root() will not move the absolute root of tree elsewhere.
> 
> 
>>?? doing it before is rather hard ... you apparently still need something to 
>>execute your mounts :)
> 
> 
> You do, but you can trivially call unlink() on the executable itself.  It
> will be freed after it does exec() of final /sbin/init...
> 
> Alternatively, you could
> mkdir /root
> mount final root on /root
> 
> chdir("/root");
> mount("/", "initramfs", NULL, MS_BIND, NULL);
> mount(".", "/", NULL, MS_MOVE, NULL);
> chroot(".");
> execve("/sbin/init", ...)
> 
Nope. initramfs shares the superblock with 'rootfs', which has the 
MS_NOUSER flags set. Hence graft_tree() (which is the worker function 
for MS_BIND) refuses to work.
Can't we just remove the MS_NOUSER flags if initramfs is active?
Probably not the correct way, but certainly the quickest :-)
The correct way would probably be to clone the superblock of initramfs, 
set the filesystem-type of initramfs to 'ramfs' so that initramfs 
appears to be a chroot()ed filesystem like initrd. Then we could do a 
pivot_root and we have the contents of initramfs still available.
But needs someone with deeper fs-knowledge than myself to do it.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke			hare@suse.de
SuSE Linux AG				S390 & zSeries
Deutschherrnstr. 15-19			+49 911 74053 688
90429 Nürnberg				http://www.suse.de


  parent reply	other threads:[~2003-11-19 15:07 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-16 17:09 Is initramfs freed after kernel is booted? Andrey Borzenkov
2003-11-16 19:51 ` Jeff Garzik
2003-11-17 14:39   ` Chris Friesen
2003-11-17 15:36     ` "Andrey Borzenkov" 
2003-11-17 15:39       ` Chris Friesen
2003-11-17 15:46         ` Jeff Garzik
2003-11-17 18:32           ` Bryan O'Sullivan
2003-11-17 15:47         ` Kevin P. Fleming
2003-11-17 16:06           ` Chris Friesen
2003-11-17 16:25             ` Erik Mouw
2003-11-17 17:25             ` viro
2003-11-17 17:47               ` viro
2003-11-17 17:50               ` Chris Friesen
2003-11-17 18:03                 ` viro
2003-11-17 18:33                   ` Andrey Borzenkov
2003-11-17 19:15                     ` viro
2003-11-19 14:19                       ` Olaf Hering
2003-11-19 15:07                       ` Hannes Reinecke [this message]
2003-11-25 18:26                         ` Manuel Estrada Sainz

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=3FBB8748.8020503@suse.de \
    --to=hare@suse.de \
    --cc=arvidjaar@mail.ru \
    --cc=cfriesen@nortelnetworks.com \
    --cc=jgarzik@pobox.com \
    --cc=kpfleming@backtobasicsmgmt.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@parcelfarce.linux.theplanet.co.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.