#!/bin/bash

#sanify check

if [ $# -lt 1 ] ; then
	echo "usage $0 ROOTDIR"
	exit 1
fi

rootdir=$1
VZPKGENVDIR="/vz/pkgenv/rpmzypp49x64"
TEMPLATEDIR="/vz/template/sles/12/x86_64"

if [ -z "$rootdir" ]; then
	echo "ROOTDIR is not set."
	exit 1
fi
		
# Check root directory
if [ ! -d $rootdir ]; then
	echo "$rootdir: should be a directory."
	exit 1
fi

pushd $rootdir > /dev/null

# Bootstrap a minimal chroot tree for the rest installation
mkdir -p var/lib/rpm
mkdir -p var/lock/rpm
mkdir -p var/tmp
mkdir -p dev
mkdir -p etc/sysconfig
mkdir -p var/run/dhcpv6

# Create the default lang file
echo "RC_LANG=\"\"
RC_LC_ALL=\"\"
RC_LC_MESSAGES=\"\"
RC_LC_CTYPE=\"\"
RC_LC_COLLATE=\"\"
RC_LC_TIME=\"\"
RC_LC_NUMERIC=\"\"
RC_LC_MONETARY=\"\"
RC_LC_PAPER=\"\"
ROOT_USES_LANG=\"ctype\"
AUTO_DETECT_UTF8=\"no\"
INSTALLED_LANGUAGES=\"\"" > etc/sysconfig/language

# Create the empty rpmdb and import the keys from every repository
cp $VZPKGENVDIR/var/lib/rpm/* var/lib/rpm
for i in $TEMPLATEDIR/pm/raw/*; do
	VIRT_OSRELEASE=`cat $VZPKGENVDIR/osrelease 2>/dev/null` \
		/usr/libexec/run_from_chroot $VZPKGENVDIR /bin/rpm \
		--import --root $rootdir $i/repodata/*.key > /dev/null 2>&1
done

# mount /dev/pts and proc
echo "proc  /proc       proc    defaults    0       0" >> etc/fstab
echo "none  /dev/pts    devpts  nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000    0    0" >> etc/fstab

# add some groups and users, provides by aaa_base
# some rpms (filesystem,..) use it before aaa_base installation
echo "at:x:25:
audio:x:17:
bin:x:1:daemon
brlapi:x:494:
cdrom:x:20:
console:x:21:
daemon:x:2:
dialout:x:16:
disk:x:6:
floppy:x:19:
ftp:x:49:
games:x:40:
gdm:x:485:
kmem:x:9:
lock:x:54:
lp:x:7:
mail:x:12:postfix
maildrop:x:59:postfix
man:x:62:
messagebus:x:499:
modem:x:43:
news:x:13:
nobody:x:65533:
nogroup:x:65534:nobody
nscd:x:495:
ntadmin:x:71:
ntp:x:492:
polkitd:x:496:
postfix:x:51:
public:x:32:
pulse:x:489:
pulse-access:x:488:
root:x:0:
rtkit:x:490:
scard:x:487:
shadow:x:15:
sshd:x:498:
sys:x:3:
systemd-journal:x:493:
tape:x:497:
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:gdm
vnc:x:491:
wheel:x:10:
winbind:x:486:
www:x:8:
xok:x:41:
users:x:100:
" > etc/group

echo "at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
ftpsecure:x:488:65534:Secure FTP User:/var/lib/empty:/bin/false
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:486:485:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:499:499:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
nscd:x:496:495:User for nscd:/run/nscd:/sbin/nologin
ntp:x:74:492:NTP daemon:/var/lib/ntp:/bin/false
openslp:x:494:2:openslp daemon:/var/lib/empty:/sbin/nologin
polkitd:x:497:496:User for polkitd:/var/lib/polkit:/sbin/nologin
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:490:489:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rpc:x:495:65534:user for rpcbind:/var/lib/empty:/sbin/nologin
rtkit:x:491:490:RealtimeKit:/proc:/bin/false
scard:x:487:487:Smart Card Reader:/var/run/pcscd:/usr/sbin/nologin
sshd:x:498:498:SSH daemon:/var/lib/sshd:/bin/false
statd:x:489:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:493:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
vnc:x:492:491:user for VNC:/var/lib/empty:/sbin/nologin
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
" > etc/passwd

mknod dev/zero c 1 5
chmod 666 dev/zero

popd > /dev/null
