diff --git a/contrib/rootfs/pre_installed_packages b/contrib/rootfs/pre_installed_packages
new file mode 100644
index 0000000000000000000000000000000000000000..a7eb4b1b8f84b9bbb9a9efc17ebd7d9784b25ec8
--- /dev/null
+++ b/contrib/rootfs/pre_installed_packages
@@ -0,0 +1,100 @@
+#Desktop stuff for Kubuntu
+firefox
+thunderbird
+kfind
+kompare
+xloadimage
+gpsd-clients
+kde-config-gtk-style
+ffmpeg
+hunspell
+vlc
+
+#System stuff, e.g. gcc and efibootmgr
+automake
+cmake
+aspell-de
+build-essential
+lvm2
+mencoder
+screen
+tofrodos
+efibootmgr
+gdisk
+linux-headers
+moreutils
+network-manager-vpnc
+vim
+htop
+
+#texlive
+chktex
+cm-super
+context
+dvidvi
+dvipng
+feynmf
+fragmaster
+info
+lacheck
+latex-beamer
+latex-cjk-all
+latexdiff
+latexmk
+latex-sanskrit
+latex-xcolor
+lcdf-typetools
+lmodern
+pgf
+prosper
+psutils
+purifyeps
+t1utils
+tex4ht
+tex-gyre
+texinfo
+texlive-base
+texlive-bibtex-extra
+texlive-binaries
+texlive-extra-utils
+texlive-fonts-extra
+texlive-fonts-recommended
+texlive-font-utils
+texlive-formats-extra
+texlive-games
+texlive-generic-extra
+texlive-generic-recommended
+texlive-humanities
+texlive-lang-english
+texlive-lang-german
+texlive-latex-base
+texlive-latex-extra
+texlive-latex-recommended
+texlive-luatex
+texlive-math-extra
+texlive-metapost
+texlive-music
+texlive-omega
+texlive-pictures
+texlive-plain-extra
+texlive-pstricks
+texlive-publishers
+texlive-science
+texlive-xetex
+tipa
+xindy
+
+#german language support
+hunspell-de-de
+language-pack-de
+language-pack-support-de
+wngerman
+wogerman
+wswiss
+poppler-data
+libreoffice-l10n-de
+libreoffice-help-de
+hyphen-de
+mythes-de
+thunderbird-locale-de
+firefox-locale-de
diff --git a/contrib/rootfs/pre_installed_packages.without-recommends b/contrib/rootfs/pre_installed_packages.without-recommends
new file mode 100644
index 0000000000000000000000000000000000000000..44e5e1b6ebfb88e35ee1472bfc25af4b5009208e
--- /dev/null
+++ b/contrib/rootfs/pre_installed_packages.without-recommends
@@ -0,0 +1 @@
+mdadm
diff --git a/scripts/remaster_rootfs.sh b/scripts/remaster_rootfs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..00708b2e1479a9afc3116cf77e6c2f60cb9b3935
--- /dev/null
+++ b/scripts/remaster_rootfs.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+SCRIPT_DIR="$1"
+CONTRIB_DIR="$SCRIPT_DIR/contrib/rootfs"
+
+#TODO: Disable initctl
+
+#source common functions (e.g. patch_all)
+if [ -e "$SCRIPT_DIR/scripts/common_functions.sh" ]; then
+	source "$SCRIPT_DIR/scripts/common_functions.sh"
+fi
+
+function prepare_install()
+{
+	if [ -e "$CONTRIB_DIR/lip_sources.list" ]; then
+		cp -v "$CONTRIB_DIR/lip_sources.list" "/etc/apt/sources.list"
+	fi
+	
+	#uncomment if newest texlive is not part of your distribution
+	#add-apt-repository -y ppa:texlive-backports/ppa
+
+	apt-get update
+}
+
+function install_packages_from_file()
+{
+	FILENAME="$1"
+	APT_OPTIONS=$2
+	
+	if [ ! -e "$FILENAME" ]; then
+		echo "Error: package file $FILENAME does not exist!"
+		exit 3
+	fi
+
+	PKGS=$(grep -v "^#" "$FILENAME" | tr '\n' ' ')
+
+	aptitude install -y $APT_OPTIONS $PKGS
+}
+
+function install_packages()
+{
+	apt-get upgrade --assume-yes --force-yes
+	apt-get install aptitude -y
+
+	#aptitude full-upgrade -y # make sure we have the newest versions
+	# Some daily images do not have a kernel ?!?
+	
+	#uncomment this if you remaster a daily build (fix kernel version!)
+	#aptitude reinstall linux-image-generic-lts-raring -y
+	#apt-cache depends linux-image-generic-lts-raring | tail -n+2 | awk '{print $NF}' | xargs aptitude reinstall -y 
+
+	install_packages_from_file "$CONTRIB_DIR/pre_installed_packages" ""
+	install_packages_from_file "$CONTRIB_DIR/pre_installed_packages.without-recommends" "--without-recommends"
+	
+	MISSING_LANG_PKG="$(check-language-support -l de_DE)"
+	MISSING_LANG_PKG="$(check-language-support -l en_US) $MISSING_LANG_PKG" # check for missing packages for de_DE and en_US
+	
+	if [ -n "$MISSING_LANG_PKG" ]; then
+		aptitude install $MISSING_LANG_PKG -y
+	fi
+	
+	EXTRA_LANG_PKG="$(dpkg-query --show | cut -f1 | grep -E '^(language-pack|language-support|firefox-locale|thunderbird-locale|libreoffice-help|libreoffice-l10n)' | grep -Ev "[-](de|en)\>")" # remove extra language packages
+
+	if [ -n "$EXTRA_LANG_PKG" ]; then
+		aptitude purge $EXTRA_LANG_PKG -y
+	fi
+	
+	install_debs "$CONTRIB_DIR/debs/"
+}
+
+function finalize()
+{
+	echo -n "Europe/Berlin" > /etc/timezone
+	
+	rm -rf /var/crash/*
+	#TODO: verify
+	rm -rf /var/cache/apt/*
+}
+
+function install_kde_defaults()
+{
+	mkdir -p /etc/skel/.kde/share/config/
+	cp "$CONTRIB_DIR/kde_config/"* /etc/skel/.kde/share/config/
+}
+
+prepare_install
+install_packages
+
+install_kde_defaults
+
+#patch rootfs
+patch_all "$SCRIPT_DIR/patches/rootfs/" "/"
+
+#i.e. required for applying default-wallpaper patch
+#echo "compiling glib2 schemas..."
+#glib-compile-schemas /usr/share/glib-2.0/schemas
+
+finalize