#!/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
udevTrigger # let udev create the /dev/disk/by-uuid links

#======================================
# 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" ] && [ -z "$COMBINED_IMAGE" ];then
		#======================================
		# use distro initrd via mkinitrd
		#--------------------------------------
		setupSUSEInitrd
	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) create /etc/ImagePackages
#--------------------------------------
if [ "$systemIntegrity" = "clean" ];then
	if [ -x /bin/rpm ];then
		Echo "Creating initial image package info file"
		rpm -qa --last > /etc/ImagePackages
	fi
fi

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

#======================================
# 10) Update /etc/ImageVersion files
#--------------------------------------
if [ ! -z "$imageDiskDevice" ] && [ "$systemIntegrity" = "clean" ];then
	count=0
	IFS="," ; for i in $IMAGE;do
		count=$(($count + 1))
		field=0
		IFS=";" ; for n in $i;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

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

#======================================
# 12) kernelCheck
#--------------------------------------
kernelCheck

#======================================
# 13) create origin snapshot if possible
#--------------------------------------
createOriginSnapshot

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