[Voyage-linux] aufs and unionfs

Kim-man 'Punky' TSE (spam-protected)
Mon Feb 25 10:14:08 HKT 2008


Hi,

Can you elaborate which exact lines that mounts tmpfs for ro/rw and 
union them together with rootfs?

Regards,
Punky

n schembr wrote:
>
> 	
> 	
> 	
> 	
> 	<!--
> 		@page { size: 8.5in 11in; margin: 0.79in }
> 		P { margin-bottom: 0.08in }
> 	-->
> 	
>
> Is there a reason that voyage is not
> using unionfs or aufs for the root file system?
>
>
>
>
> I this is my pre-test how to use aufs
> to create a voyage like read only root file system. 
>
>
>
>
>
>
> background
>
>
>
>
>
> I've used Voyage Linux on a few
> machines for the last three years without issue. The voyage is small
> and easy to use.  Voyage is the best embedded router/firewall I have
> used.
>
>
>
>
>
> Great job guys!
>
>
>
>
>
> I just purchased an eee pc to play
> with.  I want to replace the desktop with ubuntu or debian.  The eee 
> mailing lists and howto are remastering a live cd or just set noatime
> and moving a few files to tmpfs. I have loved the ease of use voyage
> offers,  remountrw  and update.   
>
>
>
>
>
>
> I could not find a good example of
> unionfs or aufs on a root file system.
>
>
>
>
>
> I found small diskless howto that used
> unionfs to mount a tmpfs rw and nfs mounted file system ro. 
>
>
>
>
>
>
> After a small post to I ubuntu irc I
> found an example of using update-initramfs.
>
>
>
>
>
> The Setup.
>
>
>
>
>
> I'm using vmware to test. 
>
>
>
>
>
>
> Install eeeXubuntu 7.10 on a vm using
> the defaults.
>
> change /etc/apt/sources.list from gutsy
> to hardy.
>
> apt-get update 
>
>
> apt-get dist-upgrade
>
>
>
>
>
> echo aufs
>   
>>> /etc/initramfs-tools/modules
>>>       
>
>
>
>
>
> touch
> /etc/initramfs-tools/script/init-bottom/rootaufs
>
> chmod 0755
> /etc/initramfs-tools/script/init-bottom/rootaufs
>
>
>
>
>
> cat <<EOF
>   
>>> /etc/initramfs-tools/script/init-bottom/rootaufs 
>>>       
>
>
> #! /bin/sh
>
> #  Copyright 2008 Nicholas A. Schembri
> State College PA USA
>
> #
>
> #   This program is free software: you
> can redistribute it and/or modify
>
> #   it under the terms of the GNU
> General Public License as published by
>
> #   the Free Software Foundation,
> either version 3 of the License, or
>
> #   (at your option) any later version.
>
> #
>
> #   This program is distributed in the
> hope that it will be useful,
>
> #   but WITHOUT ANY WARRANTY; without
> even the implied warranty of
>
> #   MERCHANTABILITY or FITNESS FOR A
> PARTICULAR PURPOSE.  See the
>
> #   GNU General Public License for more
> details.
>
> #
>
> #    You should have received a copy of
> the GNU General Public License
>
> #    along with this program.  If not,
> see
>
> #    <http://www.gnu.org/licenses/>.
>
>
>
>
>
>
>
>
>
> case $1 in
>
> prereqs)
>
>         exit 0
>
>         ;;
>
> esac
>
>
>
>
>
> export aufs
>
>
>
>
>
> for x in $(cat /proc/cmdline); do
>
>         case $x in
>
>         aufs=*)
>
>                 aufs=${x#aufs=}
>
>                 ;;
>
>         esac
>
> done
>
>
>
>
>
> if [ "$aufs" != "tmpfs"
> ]; then
>
>         #not set in boot loader
>
>         #I'm not loved. good bye
>
>         echo    To activate read only
> live file system add  aufs=tmpfs
>
>         echo    to your bootloader
> command line.
>
>         exit 0
>
> fi
>
> #
>
> # initramfs init-botton script
>
> # move the root file system to unionfs
> readonly
>
>
>
>
>
> # the root file system has just been
> mounted rw or ro by the stock init script
>
> # root is mounted on ${rootmnt}
>
> # create a unionfs and move rootmnt to
> it
>
> # move aufs to rootmnt to finish the
> init process.
>
>
>
>
>
>
>
>
>
> echo
>
> echo            aufs setup on
> ${rootmnt}
>
> echo
>
>
>
>
>
> modprobe -Qb aufs
>
> if [ $? -ne 0 ]; then
>
>         echo    root-aufs error:       
>   Failed to load aufs.ko
>
>         exit 0
>
> fi
>
>
>
>
>
> #make the mount points for on the init
> root file system
>
> mkdir /aufs
>
> mkdir /rw
>
> mkdir /ro
>
>
>
>
>
>
>
>
>
> # mount the temp file system and move
> real root out of the way
>
> mount -t tmpfs aufs-tmpfs /rw
>
> mount --move ${rootmnt} /ro
>
> if [ $? -ne 0 ]; then
>
>         echo    root-aufs error:       
>  ${rootmnt}  failed to move to /ro
>
> fi
>
>
>
>
>
> mount -t aufs -o dirs=/rw:/ro=ro aufs
> /aufs
>
> if [ $? -ne 0 ]; then
>
>         echo    root-aufs error:       
>   Failed to mount /aufs files system
>
>
>
>
>
> fi
>
>
>
>
>
>
>
>
>
> #test for mount points on real file
> system
>
> [  -d /ro/ro ] || mkdir /ro/ro
>
> [  -d /ro/rw ] || mkdir /ro/rw
>
>
>
>
>
> mount --move /ro /aufs/ro
>
> if [ $? -ne 0 ]; then
>
>         echo    root-aufs error:       
>   Failed to move /ro /aufs/ro
>
>
>
>
>
> fi
>
> mount --move /rw /aufs/rw
>
> if [ $? -ne 0 ]; then
>
>         echo    root-aufs error:       
>   Failed to move /rw /aufs/rw
>
>
>
>
>
> fi
>
>
>
>
>
> # fix fstab
>
> #ROOTTYPE=$(/lib/udev/vol_id -t
> ${ROOT})
>
> ROOTTYPE=$(cat /proc/mounts|grep
> ${ROOT}|cut -d' ' -f3)
>
> ROOTOPTIONS=$(cat /proc/mounts|grep
> ${ROOT}|cut -d' ' -f4)
>
> echo ${ROOT} /ro $ROOTTYPE $ROOTOPTIONS
> 0 0 >>/aufs/etc/fstab
>
>
>
>
>
> echo aufs-tmpfs /rw tmpfs rw 0 0
>   
>>> /aufs/etc/fstab
>>>       
>
> # S22mount on debian systems is not
> mounting  /ro correctly after boot
>
> # add to rc.local to correct what you
> see from df
>
> #replace last case of exit with #exit
>
> cat /aufs/ro/etc/rc.local|sed
> 's/\(.*\)exit/\1\#exit/' >/aufs/etc/rc.local
>
> echo mount -f /ro >>/aufs/etc/rc.local
>
> echo exit 0 >>/aufs/etc/rc.local
>
>
>
>
>
>
>
>
>
> #build remountrw
>
> echo \#!/bin/sh >/aufs/bin/remountrw
>
> echo mount -o remount,rw ${ROOT}
>   
>>> /aufs/bin/remountrw
>>>       
>
> chmod 0700 /aufs/bin/remountrw
>
>
>
>
>
> if [ "$debug" != "aufs"
> ]; then
>
>          mount --move /aufs /root
>
> fi
>
>
>
>
>
> exit 0
>
> EOF
>
>
>
>
>
>
>
>
>
> update-initramfs -u
>
>
>
>
>
> The system should boot without error. 
> I'm going to write the howto in the AM.
>
>
>
>
> note:  aufs was a 10 minute port and has worked as
> advertised. Unionfs hung when the root file
> system was in a read only state. I'm sure this could be corrected
> with a simple patch.  
>
>  
>
>
>
>
>
> _______________________________________________
> Voyage-linux mailing list
> Voyage-linux at list.voyage.hk
> http://list.voyage.hk/mailman/listinfo/voyage-linux
>   


-- 
Regards,
Punky

Voyage Solutions (http://solution.voyage.hk)
* Embedded Solutions and Systems
  - Mesh Networking, Captive Portal, IP Surveillance, VoIP/PBX
  - Network Engineering, Development Platform and Consultation
  
	





More information about the Voyage-linux mailing list