[Unionfs] can we give root fs as mountpoint for unionfs

Paul Bender pebender at san.rr.com
Mon Aug 4 21:47:13 EDT 2008


kalyan keerthi wrote:
> Hi,
> 
> I have created squashfs for our embedded board.
> I excluded /mnt directory from being squashed.
> I now have the rootfs "/" squashed (ro) and "/mnt" mounted on jffs2 (rw)
> I tried to union these filesystems and make squashfs writeable, but it 
> did not work below is the command that i used
> 
> # mount -t unionfs -o dirs=/mnt=rw:/=ro none /mnt
> 
> I can create and edit files in the /mnt directory. ex: cd /mnt/etc; cat 
>  > hello.c
> but if i do the same in /etc directory it says readonly filesystem.
> Can anyone please help me explain how to make rootfs "/" writeable
> 
> I appreciate your help

I maintain a project (MiniMyth) that does something similar. The root 
file system is a squashfs image and I use a RAM based file system to 
make it writable. Rather than put the root file system in /, I put it in 
a sub-directory (called /root-ro). I use an initial init script to do 
the following:

(1) Mount a read write partition in another sub-directory (called /rw).
(2) Use unionfs to unify them as another sub-directory (called /rw/rootfs).
(3) Use pivot_root and chroot to switch the root file system rot /rootfs 
and lauch the real init script

I have attached the initial init script below.

------------------------------------------------
#!/bin/sh

# Change the read-only root file system into a read-write root file system.
/bin/mount -n -t tmpfs none /rw
/bin/mkdir -p /rw/rootfs
/bin/mount -n -t unionfs -o dirs=/rw/rootfs=rw:/rootfs-ro=ro none /rootfs
cd /rootfs
/bin/mkdir -p initrd
/sbin/pivot_root . initrd

# Change root to the read-write root file system and start the real init.
exec /usr/sbin/chroot . ./bin/sh -c 'exec /sbin/init' <dev/console 
 >dev/console 2>&1


More information about the unionfs mailing list