+#! /bin/sh -xe
+
+# Export safe locale
+export LC_ALL=C
+
+# Get distcook path
+. config/distcook.conf
+
+# Copy distcook root config
+cp $DISTCOOK/root.conf config/
+
+# Extract configuration
+echo '#! /bin/sh -e' > lib/config.sh
+cat config/*.conf | perl -pne 'if (/^#/) {undef $_;} else {s/^/export /}' >> lib/config.sh
+
+# Source config
+. lib/config.sh
+
+# Test mapper entries
+if [ -f "/dev/mapper/$SLASHNAME" -o -f "/dev/mapper/$DATANAME" ]; then
+ echo "Mapper name already exists, try to run:"
+ echo "cryptsetup close $SLASHNAME"
+ echo "cryptsetup close $DATANAME"
+ exit 1
+fi
+
+# Test loopa and loopb
+if [ `losetup ${LOOPA} >/dev/null 2>&1; echo $?` -ne 1 -o `losetup ${LOOPB} >/dev/null 2>&1; echo $?` -ne 1 ]; then
+ echo "Loopa or loopb already exists, try to run:"
+ echo "mdadm -S /dev/md/$MDBOOT"
+ echo "mdadm -S /dev/md/$MDDATA"
+ echo "losetup -d ${LOOPA}"
+ echo "losetup -d ${LOOPB}"
+ exit 1
+fi
+
+# Create root dir
+if [ ! -d "$PWD/root" ]; then
+ mkdir "$PWD/root"
+fi
+
+# Device creation
+. lib/device.sh
+
+# Fs creation
+. lib/mkfs.sh
+
+# Setup root
+. lib/root.sh
+
+# Sync data
+. lib/sync.sh
+
+# Setup boot
+. lib/boot.sh
+
+# Free resources
+. lib/free.sh
+
+# Export config
+. lib/export.sh