[fedora-virt] Re: febootstrap question

Christopher Johnston cjohnstonwork at gmail.com
Fri Jun 19 21:44:52 UTC 2009


On Wed, Jun 17, 2009 at 5:38 PM, Richard W.M. Jones <rjones at redhat.com>wrote:

> [CC'd to fedora-virt]
>
> On Wed, Jun 17, 2009 at 05:25:26PM -0400, Christopher Johnston wrote:
> > I had a question about febootstrap and a specific
> > use case of mine at my company where I am implementing a stateless
> solution
> > for our grid.  I wanted to be able to take the initramfs image that is
> spun
> > up out of febootstrap and put a custom linuxrc in there which will
> > essentially take the contents of the initramfs and copy them directly
> into a
> > tmpfs filesystem thats mounted as /sysroot then do a pivot_root into it
> and
> > then do a full execution of init.
>
> I'm a bit confused why you'd want to do this, but maybe I'm missing
> something.  Why copy the initramfs image into a tmpfs?  The initramfs
> is already loaded into kernel memory at boot time and so it has all
> the same properties / benefits of tmpfs.
>
> > I have been using nash currently to do
> > this and I have ran into a few issue when the system boots up once init
> > forks off where it segfaults.  Below is my custom linuxrc:
>
> I would tend to avoid using nash.  If it's possible to add bash to the
> image, just use bash.
>
> You might find it helpful to look at what we do in libguestfs, here:
>
>
> http://git.et.redhat.com/?p=libguestfs.git;a=blob;f=appliance/make.sh.in;hb=HEAD
>
> > #!/sbin/nash
> >
> > mount -t proc /proc /proc
> > echo Mounting proc filesystem
> > echo Mounting sysfs filesystem
> > mount -t sysfs /sys /sys
> > echo Creating /dev
> > mount -o mode=0755 -t tmpfs /dev /dev
> > mkdir /dev/pts
> > mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
> > mkdir /dev/shm
> > mkdir /dev/mapper
> > echo Creating initial device nodes
> > mknod /dev/null c 1 3
> > mknod /dev/zero c 1 5
> > mknod /dev/systty c 4 0
> > mknod /dev/tty c 5 0
> > mknod /dev/console c 5 1
> > mknod /dev/ptmx c 5 2
> > mknod /dev/fb c 29 0
> > mknod /dev/tty0 c 4 0
> > mknod /dev/tty1 c 4 1
> > mknod /dev/tty12 c 4 12
> > mknod /dev/ttyS0 c 4 64
> > mknod /dev/ttyS1 c 4 65
> > mknod /dev/ttyS2 c 4 66
> > mknod /dev/ttyS3 c 4 67
> > /lib/udev/console_init tty0
> > mkchardevs
> > mkblkdevs
> > echo Creating tmpfs filesystem
> > mkdir -p /sysroot
> > mkrootdev -t tmpfs -o defaults,ro /dev/root
> > mount -o mode=0755 -t tmpfs /dev/root /sysroot
> > mkdir -p /sysroot/proc
> > mkdir -p /sysroot/sys
> > mkdir -p /sysroot/.oldroot
> > echo Copying rootfs->tmpfs
> > cp -a bin /sysroot
> > cp -a dev /sysroot
> > cp -a etc /sysroot
> > cp -a home /sysroot
> > cp -a lib /sysroot
> > cp -a lib64 /sysroot
> > cp -a mnt /sysroot
> > cp -a sbin /sysroot
> > cp -a tmp /sysroot
> > cp -a usr /sysroot
> > cp -a var /sysroot
> > cp -a root /sysroot
> > echo Setting up the new root tmpfs filesystem
> > setuproot
> > echo Switching from rootfs to tmpfs
> > switchroot
> >
> > -Chris
>
> Rich.
>
> --
> Richard Jones, Emerging Technologies, Red Hat
> http://et.redhat.com/~rjones
> virt-df <http://et.redhat.com/%7Erjones%0Avirt-df> lists disk usage of
> guests without needing to install any
> software inside the virtual machine.  Supports Linux and Windows.
> http://et.redhat.com/~rjones/virt-df/<http://et.redhat.com/%7Erjones/virt-df/>


Rich,

The properties may be the same, but AFAIK you cannot limit the size of
rootfs so it will use all of memory.  With tmpfs you can specifiy how large
the filesystem will be to keep the root filesystem at a fixed size.  There
are also some new features/options where you can specifc which numa node to
use memory from or to interleave across.  There are some benefits to that
for our grid/hpc workloads.

Now to get this going for my testing I am comfortable using rootfs
(pivotroot and switchroot dont seem to work in nash).

What I have done in my testing here is generate a linuxrc which I posted.  I
attmpted to use bash instead of nash and have it just fork /sbin/init but
that also did not work (upstarts init does not seem to work well here).

I looked over the script you are using here for your virtual machine, but
what are you actually doing to start init so the usual RC stuff can start
running?

-Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/fedora-virt/attachments/20090619/e1f80ef2/attachment.htm>


More information about the Fedora-virt mailing list