123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/bin/sh
- . /lib/dracut-lib.sh
- data=$(getarg aufs_root)
- if [ ! -z "$data" ] ; then
- skip_dirs=$(getarg rfreeze_skip_dirs)
- # we can have either "aufs_root=UUID=" or "aufs_root=DIR="
- case $data in
- *UUID=* )
- echo "AAA"
- UUID=${data#UUID=}
- DIR=""
- ;;
- *DIR=* )
- UUID=""
- DIR=${data#DIR=}
- ;;
- esac
- mount -t tmpfs tmpfs /sysroot/tmp
- mkdir /sysroot/tmp/xinos
- mkdir /sysroot/tmp/sysroot-rw
- mkdir /sysroot/tmp/sysroot-ro
- mount -o bind /sysroot /sysroot/tmp/sysroot-ro
- RES=0
- if [ ! -z "$UUID" ] ; then
- /sbin/fsck.ext2 -y /dev/disk/by-uuid/$UUID
- mount /dev/disk/by-uuid/$UUID /sysroot/tmp/sysroot-rw && RES=1
- fi
- if [ ! -z "$DIR" ] ; then
- RES=1
- fi
- if [ "$RES" = 0 ] ; then
- mount -n -t tmpfs tmpfs /sysroot/tmp/sysroot-rw
- fi
- if [ ! -z "$skip_dirs" ] ; then
- SKIP_DIRS=${skip_dirs//:/ }
- else
- SKIP_DIRS="dev home lost+found media mnt proc run sys tmp"
- fi
- for d in `ls /sysroot `
- do
- skip_dir=0
- if [ ! -d "/sysroot/$d" ] ; then
- continue
- fi
- for sd in $SKIP_DIRS
- do
- if [ $d = $sd ] ; then
- skip_dir=1
- fi
- done
- if [ $skip_dir = 1 ] ; then
- continue
- fi
- if [ ! -e "/sysroot/tmp/sysroot-rw/$d" ] ; then
- if [ $d = "root" ] ; then
- mkdir -m 750 "/sysroot/tmp/sysroot-rw/$d"
- else
- mkdir -m 755 "/sysroot/tmp/sysroot-rw/$d"
- fi
- fi
- if [ ! -d "/sysroot/tmp/sysroot-rw/$d" ] ; then
- continue
- fi
- if [ ! -z "$DIR" ] ; then
- mount -o bind /sysroot/$DIR/$d /sysroot/tmp/sysroot-rw/$d
- fi
- mount -n -t aufs -o nowarn_perm,noatime,xino=/sysroot/tmp/xinos/$d.xino.aufs,dirs=/sysroot/tmp/sysroot-rw/$d=rw:/sysroot/$d=rr none /sysroot/$d
- done
- # cp -f /etc/halt /sysroot/etc/init.d/halt
- # cp -f /etc/functions /sysroot/etc/init.d/functions
- # mount -n -t aufs -o noatime,xino=/xinos/sysroot.xino.aufs,dirs=/sysroot-rw=rw:/sysroot=rr none /sysroot
- fi # if [ ! -z "$data" ]
|