milis/talimatname/genel/dracut-aufs/aufs-mount.sh

93 lines
1.9 KiB
Bash

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