#!/bin/bash
#================
# FILE          : preinit
#----------------
# PROJECT       : openSUSE KIWI Image System
# COPYRIGHT     : (c) 2006 SUSE LINUX Products GmbH. All rights reserved
#               :
# AUTHOR        : Marcus Schaefer <ms@suse.de>
#               :
# BELONGS TO    : Operating System images
#               :
# DESCRIPTION   : This file is called after the image root
#               : has changed by the linuxrc script
#               :
# STATUS        : BETA
#----------------
#======================================
# Functions
#--------------------------------------
. /include

#======================================
# 1) start error log
#--------------------------------------
errorLogStart
Echo "Calling pre-init stage in system image"

#======================================
# 2) check for LOCAL_BOOT
#--------------------------------------
if [ $LOCAL_BOOT = "yes" ];then
    exit 0
fi

#======================================
# 3) start udev
#--------------------------------------
mountSystemFilesystems
udevSystemStart

#======================================
# 4) update mount table
#--------------------------------------
updateMTAB

#======================================
# 5) create framebuffer devices
#--------------------------------------
if [ "$systemIntegrity" = "clean" ];then
    createFramebufferDevices
fi

#======================================
# 6) create initrd on diskful
#--------------------------------------
if  [ ! -z "$imageDiskDevice" ]      && \
    [ "$systemIntegrity" = "clean" ] && \
    [ -z "$NETBOOT_ONLY" ]
then
    if [ -z "$UNIONFS_CONFIG" ];then
        #======================================
        # use distro initrd tool
        #--------------------------------------
        setupInitrd
    else
        #======================================
        # use kiwi initrd downloaded before
        #--------------------------------------
        bootLoaderOK=1
    fi
fi

#======================================
# 7) Install boot loader on diskful
#--------------------------------------
if [ "$bootLoaderOK" = 1 ] && [ -z "$DO_NOT_INSTALL_BOOTLOADER" ]; then
    installBootLoader
fi

#======================================
# 8) check for valid mount points
#--------------------------------------
if [ ! -z "$imageDiskDevice" ] && [ "$systemIntegrity" = "clean" ];then
    for i in $(echo $PART_MOUNT | tr ':' ' ');do
    if [ ! -z "$i" ] && [ ! -e "$i" ] && [ ! "$i" = "x" ];then
        mkdir -p $i
    fi
    done
fi

#======================================
# 9) Update /etc/ImageVersion files
#--------------------------------------
if [ ! -z "$imageDiskDevice" ] && [ "$systemIntegrity" = "clean" ];then
    count=0
    for i in $(echo $IMAGE | tr , ' ');do
        count=$(($count + 1))
        field=0
        for n in $(echo $i | tr ';' ' ');do
        case $field in
            0) field=1 ;;
            1) imageName=$n   ; field=2 ;;
            2) imageVersion=$n; field=3
        esac
        done
        atversion="$imageName-$imageVersion"
        versionFile="/etc/ImageVersion-$atversion"
        md5sum=`getSystemMD5Status $count`
        if test `getSystemIntegrity $count` = "clean";then
            echo "$atversion $md5sum" > $versionFile
        fi
    done
fi

#======================================
# 10) setup console
#--------------------------------------
if [ "$systemIntegrity" = "clean" ];then
    setupConsole
    setupMachineID
fi

#======================================
# 11) Run user script
#--------------------------------------
runHook preCallInit

#======================================
# 12) kill udev
#--------------------------------------
udevSystemStop
umountSystemFilesystems
