[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[fedora-virt] Re: febootstrap question

On Wed, Jun 17, 2009 at 5:38 PM, Richard W.M. Jones <rjones 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:


> #!/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


Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.


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?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]