summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Müller2007-01-06 19:20:29 +0100
committerLars Müller2007-01-06 19:20:29 +0100
commite302f7df22af41c7215b0b8bbdc62cc388afbd1b (patch)
tree007bb074a11327edbe5fb421d64f74c93b8a6519
parentCleanup of exclude files for system clone and stage1-to-stage2 copy ... (diff)
downloadcore-e302f7df22af41c7215b0b8bbdc62cc388afbd1b.tar.gz
core-e302f7df22af41c7215b0b8bbdc62cc388afbd1b.tar.xz
core-e302f7df22af41c7215b0b8bbdc62cc388afbd1b.zip
Start to use busybox to bootstrap the stage1 systems.
The configuration is slightly extended as we have to provide for RPM based systems a detailed package list. As soon as the base system including smart is installed we're able to use smart to install additional packages. Then we no longer have to provide detailed package information. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@588 95ad53e4-c205-0410-b2fa-d234c58c8868
-rwxr-xr-xinstaller/slxossetup337
-rw-r--r--installer/systems/opensuse102/settings82
-rw-r--r--installer/systems/opensuse102/settings.local.example2
-rw-r--r--installer/systems/suse101/settings84
-rw-r--r--installer/systems/suse101/settings.local.example2
-rw-r--r--installer/systems/ubuntu610/settings2
6 files changed, 478 insertions, 31 deletions
diff --git a/installer/slxossetup b/installer/slxossetup
index 64f44fc5..d02089b4 100755
--- a/installer/slxossetup
+++ b/installer/slxossetup
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
#
# slxossetup - OpenSLX script for OS setup
#
@@ -9,13 +9,15 @@
: ${SLX_CONFIG_PATH:=/etc/opt/openslx}
: ${SLX_PRIVATE_PATH:=/var/opt/openslx}
+: ${SLX_BOOTSTRAP_PATH:="/slxbootstrap"}
+: ${SLX_STAGE1_FINAL_PATH:="/slxfinal"}
SLX_SYSTEM_NAME=$1
test "$2" && \
SLX_OSSETUP_MODE=$2 ||
SLX_OSSETUP_MODE="install"
-PATH="/bin:/usr/bin"
+PATH="/sbin:/bin:/usr/bin:/usr/sbin"
for binary in smart; do
if ! type -p "${binary}" >/dev/null; then
@@ -39,29 +41,316 @@ for dir in . ${SLX_CONFIG_PATH}; do
fi
done
+for dir in ${SLX_CONFIG_PATH} .; do
+ for file in settings.default settings.local; do
+ file="${dir}/${file}"
+ test -f "${file}" && \
+ . "${file}"
+ done
+done
+
+SLX_BUSYBOX_CHROOT_NAME="busybox_chroot"
+
# Read config files for a particular system
for suffix in "" local ${SLX_SYSTEM_VARIANTNAME}; do
test -f "${SLX_SYSTEM_CONFIG_PATH}/settings${suffix:+.$suffix}" && \
. "${SLX_SYSTEM_CONFIG_PATH}/settings${suffix:+.$suffix}"
done
-function install_prereq_file()
+function setup_busybox_init()
+{
+ for dir in ${SLX_STAGE1_PATH}; do
+ if test -d "${dir}"; then
+ echo "$0: Error, ${dir} already exists! "
+ exit 1
+ fi
+ done
+}
+
+function setup_busybox_chroot()
+{
+ local dir file PERL_PATH BUSYBOX_PATH BUSYBOX_LINKS_PATH REQUIRED_LIBS
+
+ BUSYBOX_PATH="${SLX_SHARE_PATH}/busybox/busybox"
+ BUSYBOX_LINKS_PATH="${SLX_SHARE_PATH}/busybox/busybox.links"
+
+ case "${REPO_TYPE}" in
+ *deb*)
+ PERL_PATH=$( type -p perl)
+ if test -z "${PERL_PATH}"; then
+ echo "$0: Error, perl is not in your path, $PATH."
+ exit 1
+ fi
+ test -d "${CHROOT_DIR}/usr/bin/" || \
+ mkdir -p "${CHROOT_DIR}/usr/bin/"
+ cp -p "${PERL_PATH}" "${CHROOT_DIR}/usr/bin/"
+ ;;
+ esac
+
+ test -d "${CHROOT_DIR}/bin" || \
+ mkdir -p "${CHROOT_DIR}/bin"
+ cp -p "${BUSYBOX_PATH}" "${CHROOT_DIR}/bin/"
+
+ REQUIRED_LIBS=$( for file in ${CHROOT_DIR}/bin/* ${CHROOT_DIR}/usr/bin/*; do
+ test -e $file || \
+ continue
+ ${SLX_BIN_PATH}/slxldd $file;
+ done)
+
+ for file in ${REQUIRED_LIBS}; do
+ test -e "${CHROOT_DIR}/${file}" && \
+ continue
+ dir="${CHROOT_DIR}/${file%/*}"
+ test -d "${dir}" || \
+ mkdir -p "${dir}"
+ cp -p "${file}" "${dir}/"
+ done
+
+ while read file; do
+ dir="${CHROOT_DIR}/${file%/*}"
+ test -d "${dir}" || \
+ mkdir -p "${dir}"
+ ln -s "/bin/busybox" "${CHROOT_DIR}/${file}"
+ done <"${BUSYBOX_LINKS_PATH}"
+
+ test -d "${CHROOT_DIR}/etc" || \
+ mkdir -p "${CHROOT_DIR}/etc"
+ cp -p /etc/resolv.conf "${CHROOT_DIR}/etc/"
+
+ # FIXME this might not be enough to satisfy the resolver
+ for file in /lib/libnss_dns* /lib/libresolv*; do
+ test -e "${file}" || \
+ continue
+ dir="${CHROOT_DIR}/${file%/*}"
+ test -d "${dir}" || \
+ mkdir -p "${dir}"
+ cp -p "${file}" "${dir}/"
+ done
+}
+
+function setup_busybox_stage1_config()
+{
+ local key value CONFIG_FILE
+
+ CONFIG_FILE="${CHROOT_DIR}/etc/slxbootstrap.conf"
+
+ test -d "${CHROOT_DIR}/etc" || \
+ mkdir -p "${CHROOT_DIR}/etc"
+
+ echo "# OpenSLX bootstrap configuration file" >"${CONFIG_FILE}"
+
+ for key in \
+ SLX_BASE_BOOTSTRAP_PACKAGES \
+ SLX_BASE_PREREQ_PACKAGES \
+ SLX_STAGE1_FINAL_PATH \
+ SLX_INST_ARCH \
+ SLX_INSTALL_FAKE_FILE \
+ SLX_INST_SOURCE_BASEURL \
+ SLX_INST_SOURCE_DISTRIBUTION \
+ SLX_INST_SOURCE_PACKAGEKEYS \
+ SLX_INST_SOURCE_PACKAGE_SUBDIR; do
+ value=$( eval echo \$$key)
+ test "${value}" || \
+ continue
+ echo $key=\"$value\" >>"${CONFIG_FILE}"
+ done
+
+ test -d "${CHROOT_DIR}/bin" || \
+ mkdir -p "${CHROOT_DIR}/bin"
+ cp -p "${SLX_SHARE_PATH}"/busybox/slx* "${CHROOT_DIR}/bin"
+}
+
+function setup_busybox_install_prereq_file()
{
- # Install prerequired files
if test -d "${SLX_SYSTEM_CONFIG_PATH}/prereqfiles"; then
- cp -pr "${SLX_SYSTEM_CONFIG_PATH}"/prereqfiles/* "${SLX_STAGE1_PATH}"
+ test -d "${CHROOT_DIR}/etc/prereqfiles/" || \
+ mkdir -p "${CHROOT_DIR}/etc/prereqfiles/"
+ cp -pr "${SLX_SYSTEM_CONFIG_PATH}"/prereqfiles/* "${CHROOT_DIR}/etc/prereqfiles/"
find "${SLX_STAGE1_PATH}" -type d -name .svn -print0 | \
xargs -0 rm -rf
fi
- test -x "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq && \
- "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq "${SLX_STAGE1_PATH}"
+ if test -x "${SLX_SYSTEM_CONFIG_PATH}/scripts/postprereq"; then
+ test -d "${CHROOT_DIR}/bin" ||
+ mkdir -p "${CHROOT_DIR}/bin"
+ cp -p "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq "${CHROOT_DIR}/bin/"
+ fi
+}
- for file in ${SLX_INSTALL_FAKE_FILE}; do
- dir="${file%/*}"
- test -d "${SLX_STAGE1_PATH}/${dir}" || \
- mkdir -p "${SLX_STAGE1_PATH}/${dir}"
- touch "${SLX_STAGE1_PATH}/${file}"
+function setup_bootstrap_1b()
+{
+ chroot "${CHROOT_DIR}" /bin/slxbootstrap
+}
+
+function setup_bootstrap_1c()
+{
+ local packagekey
+
+ case "${SLX_SYSTEM_BASENAME}" in
+ *ubuntu*)
+ test -d "${SLX_STAGE1_FINAL_PATH}" || \
+ mkdir -p "${SLX_STAGE1_FINAL_PATH}"
+
+ DEBOOTSTRAP_DIR="${SLX_BOOTSTRAP_PATH}/usr/lib/debootstrap" \
+ chroot "${CHROOT_DIR}" /bin/ash \
+ "${SLX_BOOTSTRAP_PATH}/usr/sbin/debootstrap" \
+ ${SLX_INST_ARCH:+--arch $SLX_INST_ARCH} \
+ "${SLX_INST_SOURCE_DISTRIBUTION}" \
+ "${SLX_BOOTSTRAP_PATH}/${SLX_STAGE1_FINAL_PATH}" \
+ "${SLX_INST_SOURCE_BASEURL}"
+ ;;
+ *suse*)
+ test -d "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}/etc" || \
+ mkdir "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}/etc"
+ touch "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}/etc/mtab"
+ for packagekey in ${SLX_INST_SOURCE_PACKAGEKEYS}; do
+ chroot "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}" \
+ /bin/rpm --root="${SLX_STAGE1_FINAL_PATH}" --import "${packagekey}"
+ done
+ chroot "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}" \
+ /bin/rpm --root="${SLX_STAGE1_FINAL_PATH}" -ivh *.rpm
+ cp -p /etc/resolv.conf "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}/${SLX_STAGE1_FINAL_PATH}/etc/"
+ ;;
+ esac
+ mv "${CHROOT_DIR}/${SLX_BOOTSTRAP_PATH}/${SLX_STAGE1_FINAL_PATH}/"* "${SLX_STAGE1_PATH}/"
+ rm -rf ${CHROOT_DIR}
+}
+
+function setup_package_sources()
+{
+ case "${SLX_SYSTEM_BASENAME}" in
+ *ubuntu*)
+ SOURCES_LIST="${SLX_STAGE1_PATH}/etc/apt/sources.list"
+ rm -f "${SOURCES_LIST}"
+ ;;
+ esac
+ # Add available installation sources to an installed system.
+ # For systems using apt we're able to do this from outside.
+ for variable in ${!SLX_INST_SOURCE_NAME_*}; do
+ # Unset INST_SOURCE_* to let smart fail if they are not set for a particular
+ # channel; unset PACKAGEKEYS to prevent adding them multiple times.
+ unset INST_SOURCE_COMPONENTS \
+ INST_SOURCE_DISTRIBUTION \
+ INST_SOURCE_NAME \
+ INST_SOURCE_PRIORITY \
+ INST_SOURCE_TYPE \
+ PACKAGEKEYS
+
+ INST_SOURCE_CHANNEL="${variable##*_}"
+ INST_SOURCE_BASEURL=$( eval echo \$SLX_INST_SOURCE_BASEURL_${INST_SOURCE_CHANNEL})
+ INST_SOURCE_NAME=$( eval echo \$$variable)
+ test "${INST_SOURCE_NAME}" || \
+ INST_SOURCE_NAME="${INST_SOURCE_CHANNEL}"
+
+ INST_SOURCE_TYPE=$( eval echo \$SLX_INST_SOURCE_TYPE_${INST_SOURCE_CHANNEL})
+ # Use default repo type if not available from settings config file
+ test "${INST_SOURCE_TYPE}" || \
+ INST_SOURCE_TYPE="${REPO_TYPE}"
+
+ # Has this config distribution, components
+ INST_SOURCE_DISTRIBUTION=$( eval echo \$SLX_INST_SOURCE_DISTRIBUTION_${INST_SOURCE_CHANNEL})
+ INST_SOURCE_COMPONENTS=$( eval echo \$SLX_INST_SOURCE_COMPONENTS_${INST_SOURCE_CHANNEL})
+ INST_SOURCE_PRIORITY=$( eval echo \$SLX_INST_SOURCE_PRIORITY_${INST_SOURCE_CHANNEL})
+ # Check if one of our global settings is still undefined
+ for setting in ${GLOBAL_SETTINGS}; do
+ test "$( eval echo \$INST_SOURCE_${setting})" || \
+ eval INST_SOURCE_${setting}=\$SLX_INST_SOURCE_${setting}
+ done
+
+ echo "$0: Adding installation source name=\"${INST_SOURCE_NAME}\", baseurl=\"${INST_SOURCE_BASEURL}\". "
+
+ case "${SLX_SYSTEM_BASENAME}" in
+ *ubuntu*)
+ echo "deb ${INST_SOURCE_BASEURL} ${INST_SOURCE_DISTRIBUTION} ${INST_SOURCE_COMPONENTS}" \
+ >>${SOURCES_LIST}
+ # FIXME Add feature to sort the lines by given (?) priority.
+ ;;
+ *suse*)
+ # Prefix the config name for optional parameters
+ test "${INST_SOURCE_PRIORITY}" && \
+ INST_SOURCE_PRIORITY="priority=\"${INST_SOURCE_PRIORITY}\""
+
+ eval LC_ALL=POSIX chroot ${SLX_STAGE1_PATH} smart \
+ channel \
+ --add \"${INST_SOURCE_CHANNEL}\" \
+ name=\"${INST_SOURCE_NAME}\" \
+ type=\"${INST_SOURCE_TYPE}\" \
+ baseurl=\"${INST_SOURCE_BASEURL}\" \
+ ${INST_SOURCE_PRIORITY} \
+ -y
+ ;;
+ esac
+ done
+}
+
+# Install all available updates for an installed system.
+# Before we have to ensure to have the install sources up to date.
+function update_system()
+{
+ if test -z "${SLX_STAGE1_PATH}"; then
+ echo "Error: SLX_STAGE1_PATH is not set."
+ exit 1
+ fi
+
+ case "${SLX_SYSTEM_BASENAME}" in
+ *ubuntu*)
+ : ${SLX_STAGE1_UPDATE_OPTIONS:=-y}
+ : ${SLX_STAGE1_UPGRADE_OPTIONS:=-y}
+ chroot "${SLX_STAGE1_PATH}" apt-get update "${SLX_STAGE1_UPDATE_OPTIONS}"
+ chroot "${SLX_STAGE1_PATH}" apt-get upgrade "${SLX_STAGE1_UPGRADE_OPTIONS}"
+ ;;
+ *suse*)
+ : ${SLX_STAGE1_UPGRADE_OPTIONS:=-y}
+ LC_ALL=POSIX chroot "${SLX_STAGE1_PATH}" smart upgrade --update "${SLX_STAGE1_UPGRADE_OPTIONS}"
+ ;;
+ esac
+}
+
+function install_slxselection()
+{
+ if test -z "${SLX_STAGE1_PATH}"; then
+ echo "Error: SLX_STAGE1_PATH is not set."
+ exit 1
+ fi
+
+ local packagelist variable
+ for variable in ${!SLX_INSTALL_PACKAGES_*}; do
+ packagelist="${packagelist} $( eval echo \$$variable)"
done
+ test -z "${packagelist}" && \
+ return
+
+ case "${SLX_SYSTEM_BASENAME}" in
+ *ubuntu*)
+ : ${SLX_STAGE1_INSTALL_OPTIONS:=-y}
+ chroot "${SLX_STAGE1_PATH}" apt-get install "${SLX_STAGE1_INSTALL_OPTIONS}" ${packagelist}
+ ;;
+ *suse*)
+ : ${SLX_STAGE1_UPGRADE_OPTIONS:=-y}
+ LC_ALL=POSIX chroot "${SLX_STAGE1_PATH}" smart install "${SLX_STAGE1_UPGRADE_OPTIONS}" ${packagelist}
+ ;;
+ esac
+}
+
+function slxossetup_busybox()
+{
+ local CHROOT_DIR
+
+ setup_busybox_init
+ if test -z "${SLX_STAGE1_PATH}" -o -z "${SLX_BUSYBOX_CHROOT_NAME}"; then
+ echo "Error: SLX_STAGE1_PATH or SLX_BUSYBOX_CHROOT_NAME is not set."
+ exit 1
+ fi
+ CHROOT_DIR="${SLX_STAGE1_PATH}/${SLX_BUSYBOX_CHROOT_NAME}"
+ setup_busybox_chroot
+ setup_busybox_stage1_config
+ setup_busybox_install_prereq_file
+
+ setup_bootstrap_1b
+ setup_bootstrap_1c
+
+ setup_package_sources
+ update_system
+ install_slxselection
}
function install_prereq_packages()
@@ -128,6 +417,7 @@ function install_prereq_packages()
if test "${BOOTSTRAP_PATH}" -a -x "${BOOTSTRAP_PATH}/usr/sbin/debootstrap"; then
DEBOOTSTRAP_DIR="${BOOTSTRAP_PATH}/usr/lib/debootstrap" \
"${BOOTSTRAP_PATH}/usr/sbin/debootstrap" \
+ ${SLX_INST_ARCH:+--arch $SLX_INST_ARCH} \
"${SLX_INST_SOURCE_DISTRIBUTION}" \
"${SLX_STAGE1_PATH}" \
"${SLX_INST_SOURCE_BASEURL}"
@@ -159,9 +449,6 @@ function install_prereq_packages()
function slxossetup_smart()
{
- SLX_METADATA_PATH="${SLX_PRIVATE_PATH}/metadata/${SLX_SYSTEM_NAME}"
- SLX_STAGE1_PATH="${SLX_PRIVATE_PATH}/stage1/${SLX_SYSTEM_NAME}"
-
for dir in ${SLX_METADATA_PATH} ${SLX_STAGE1_PATH}; do
if test -d "${dir}"; then
echo "$0: Error, ${dir} already exists! "
@@ -281,20 +568,28 @@ function slxossetup_smart()
done
}
+function slxossetup_init()
+{
+ SLX_METADATA_PATH="${SLX_PRIVATE_PATH}/metadata/${SLX_SYSTEM_NAME}"
+ SLX_STAGE1_PATH="${SLX_PRIVATE_PATH}/stage1/${SLX_SYSTEM_NAME}"
+}
+
function slxossetup()
{
+ slxossetup_init
+
case "${SLX_SYSTEM_BASENAME}" in
*suse*)
# Inform SUSE RPMs that we're performing an installation
+ # This is only important in stage 1c
export YAST_IS_RUNNING="instsys"
+ GLOBAL_SETTINGS="BASEURL PACKAGEKEYS"
REPO_TYPE="rpm-md"
NAME_DEST_ROOT="rpm-root"
- slxossetup_smart
;;
*fedora*)
REPO_TYPE="rpm-md"
NAME_DEST_ROOT="rpm-root"
- slxossetup_smart
;;
*ubuntu*)
GLOBAL_SETTINGS="BASEURL COMPONENTS DISTRIBUTION"
@@ -302,13 +597,17 @@ function slxossetup()
NAME_DEST_ROOT="deb-root"
SLX_STAGE1_CREATE_DIR="/var/lib/dpkg/updates"
SLX_STAGE1_CREATE_FILE="/var/lib/dpkg/available /var/lib/dpkg/status"
- slxossetup_smart
;;
*) echo "$0: Error, unkown system ${SLX_SYSTEM_BASENAME}" ;;
esac
+
+ case "${SLX_OSSETUP_MODE}" in
+ install) slxossetup_busybox ;;
+ package-source) setup_package_sources ;;
+ esac
}
case "${SLX_OSSETUP_MODE}" in
- install) slxossetup ;;
+ install|package-source) slxossetup ;;
*) echo "Usage: $0 system-name [install]" ;;
esac
diff --git a/installer/systems/opensuse102/settings b/installer/systems/opensuse102/settings
index 6e07b1de..3464be0f 100644
--- a/installer/systems/opensuse102/settings
+++ b/installer/systems/opensuse102/settings
@@ -1,5 +1,6 @@
-SLX_INST_SOURCE_BASEURL_opensuse102="http://ftp.gwdg.de/pub/opensuse/distribution/10.2/repo/oss"
-SLX_INST_SOURCE_PACKAGEKEYS_opensuse102="
+SLX_INST_SOURCE_BASEURL="http://ftp.gwdg.de/pub/opensuse/distribution/10.2/repo/oss"
+SLX_INST_SOURCE_PACKAGE_SUBDIR="suse"
+SLX_INST_SOURCE_PACKAGEKEYS="
gpg-pubkey-0dfb3188-41ed929b.asc
gpg-pubkey-307e3d54-44201d5d.asc
gpg-pubkey-3d25d3d9-36e12d04.asc
@@ -11,6 +12,79 @@ SLX_INST_SOURCE_NAME_opensuse102="openSUSE 10.2"
SLX_INST_SOURCE_TYPE_opensuse102="yast2"
SLX_INST_SOURCE_BASEURL_opensuse102update="http://ftp.gwdg.de/pub/suse/update/10.2"
SLX_INST_SOURCE_NAME_opensuse102update="openSUSE 10.2 updates"
-SLX_BASE_PREREQ_PACKAGES="glibc"
+SLX_BASE_PREREQ_PACKAGES="
+i586/bzip2-1.0.3-36.i586.rpm
+i586/glibc-2.5-25.i586.rpm
+i586/popt-1.7-304.i586.rpm
+i586/rpm-4.4.2-76.i586.rpm
+i586/zlib-1.2.3-33.i586.rpm
+"
+SLX_BASE_BOOTSTRAP_PACKAGES="
+i586/aaa_base-10.2-38.i586.rpm
+i586/aaa_skel-2006.5.19-20.i586.rpm
+i586/audit-libs-1.2.6-20.i586.rpm
+i586/bash-3.1-55.i586.rpm
+i586/blocxx-1.0.0-36.i586.rpm
+i586/coreutils-6.4-10.i586.rpm
+i586/cpio-2.6-40.i586.rpm
+i586/cracklib-2.8.9-20.i586.rpm
+i586/cyrus-sasl-2.1.22-28.i586.rpm
+i586/db-4.4.20-16.i586.rpm
+i586/diffutils-2.8.7-38.i586.rpm
+i586/e2fsprogs-1.39-21.i586.rpm
+i586/file-4.17-23.i586.rpm
+i586/filesystem-10.2-22.i586.rpm
+i586/fillup-1.42-138.i586.rpm
+i586/findutils-4.2.28-24.i586.rpm
+i586/gawk-3.1.5-41.i586.rpm
+i586/gdbm-1.8.3-261.i586.rpm
+i586/gpg-1.4.5-24.i586.rpm
+i586/grep-2.5.1a-40.i586.rpm
+i586/gzip-1.3.5-178.i586.rpm
+i586/info-4.8-43.i586.rpm
+i586/insserv-1.04.0-42.i586.rpm
+i586/irqbalance-0.09-80.i586.rpm
+i586/kernel-default-2.6.18.2-34.i586.rpm
+i586/libacl-2.2.34-33.i586.rpm
+i586/libattr-2.4.28-38.i586.rpm
+i586/libcom_err-1.39-21.i586.rpm
+i586/libgcc41-4.1.2_20061115-5.i586.rpm
+i586/libstdc++41-4.1.2_20061115-5.i586.rpm
+i586/libvolume_id-103-12.i586.rpm
+i586/libxcrypt-2.4-30.i586.rpm
+i586/libzio-0.2-20.i586.rpm
+i586/limal-1.2.9-5.i586.rpm
+i586/limal-bootloader-1.2.4-6.i586.rpm
+i586/limal-perl-1.2.9-5.i586.rpm
+i586/logrotate-3.7.4-21.i586.rpm
+i586/mdadm-2.5.3-17.i586.rpm
+i586/mingetty-0.9.6s-107.i586.rpm
+i586/mkinitrd-1.2-149.i586.rpm
+i586/mktemp-1.5-763.i586.rpm
+i586/module-init-tools-3.2.2-62.i586.rpm
+i586/ncurses-5.5-42.i586.rpm
+i586/net-tools-1.60-606.i586.rpm
+i586/openldap2-client-2.3.27-25.i586.rpm
+i586/openssl-0.9.8d-17.i586.rpm
+i586/openSUSE-release-10.2-35.i586.rpm
+i586/pam-0.99.6.3-24.i586.rpm
+i586/pciutils-2.2.4-13.i586.rpm
+i586/pcre-6.7-21.i586.rpm
+i586/perl-5.8.8-32.i586.rpm
+i586/perl-Bootloader-0.4.5-3.i586.rpm
+i586/perl-gettext-1.05-31.i586.rpm
+i586/permissions-2006.11.13-5.i586.rpm
+i586/readline-5.1-55.i586.rpm
+i586/reiserfs-3.6.19-37.i586.rpm
+i586/sed-4.1.5-21.i586.rpm
+i586/sysvinit-2.86-47.i586.rpm
+i586/udev-103-12.i586.rpm
+i586/util-linux-2.12r-61.i586.rpm
+noarch/pciutils-ids-2006.11.18-2.noarch.rpm
+noarch/suse-build-key-1.0-707.noarch.rpm
+i586/rpm-python-4.4.2-76.i586.rpm
+i586/python-xml-2.5-19.i586.rpm
+i586/python-2.5-19.i586.rpm
+i586/smart-0.42-43.i586.rpm
+"
SLX_BASE_PREREQ_CLEANUP_PATH="etc"
-SLX_INSTALL_PACKAGES_MAIN="kernel-default bash"
diff --git a/installer/systems/opensuse102/settings.local.example b/installer/systems/opensuse102/settings.local.example
index f3c01c8f..0e58992e 100644
--- a/installer/systems/opensuse102/settings.local.example
+++ b/installer/systems/opensuse102/settings.local.example
@@ -3,7 +3,7 @@
# It's also possible to define addditional values here.
# Use a local installation source.
-SLX_INST_SOURCE_BASEURL_opensuse102="ftp://gab/pub/opensuse/distribution/10.2/repo/oss"
+SLX_INST_SOURCE_BASEURL="ftp://gab/pub/opensuse/distribution/10.2/repo/oss"
SLX_INST_SOURCE_BASEURL_opensuse102update="ftp://gab/pub/suse/update/10.2"
# Add more packages.
diff --git a/installer/systems/suse101/settings b/installer/systems/suse101/settings
index 375a69b1..121f2b27 100644
--- a/installer/systems/suse101/settings
+++ b/installer/systems/suse101/settings
@@ -1,5 +1,6 @@
-SLX_INST_SOURCE_BASEURL_suse101="http://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source"
-SLX_INST_SOURCE_PACKAGEKEYS_suse101="
+SLX_INST_SOURCE_BASEURL="http://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source"
+SLX_INST_SOURCE_PACKAGE_SUBDIR="suse"
+SLX_INST_SOURCE_PACKAGEKEYS="
gpg-pubkey-0dfb3188-41ed929b.asc
gpg-pubkey-1d061a62-427a396f.asc
gpg-pubkey-307e3d54-44201d5d.asc
@@ -10,6 +11,79 @@ SLX_INST_SOURCE_NAME_suse101="SUSE Linux 10.1"
SLX_INST_SOURCE_TYPE_suse101="yast2"
SLX_INST_SOURCE_BASEURL_suse101update="http://ftp.gwdg.de/pub/suse/update/10.1"
SLX_INST_SOURCE_NAME_suse101update="SUSE Linux 10.1 updates"
-SLX_BASE_PREREQ_PACKAGES="glibc"
-SLX_BASE_PREREQ_CLEANUP_PATH="etc"
-SLX_INSTALL_PACKAGES_MAIN="kernel-default bash"
+SLX_BASE_PREREQ_PACKAGES="
+i586/bzip2-1.0.3-15.i586.rpm
+i586/glibc-2.4-31.1.i586.rpm
+i586/popt-1.7-268.i586.rpm
+i586/rpm-4.4.2-43.4.i586.rpm
+i586/zlib-1.2.3-13.i586.rpm
+"
+SLX_BASE_BOOTSTRAP_PACKAGES="
+i586/aaa_base-10.1-41.i586.rpm
+i586/aaa_skel-2006.5.19-0.2.i586.rpm
+i586/ash-1.6.1-13.i586.rpm
+i586/audit-libs-1.1.3-23.3.i586.rpm
+i586/bash-3.1-24.3.i586.rpm
+i586/blocxx-1.0.0-15.i586.rpm
+i586/coreutils-5.93-20.i586.rpm
+i586/cpio-2.6-17.i586.rpm
+i586/cracklib-2.8.6-12.i586.rpm
+i586/cyrus-sasl-2.1.21-18.i586.rpm
+i586/db-4.3.29-13.i586.rpm
+i586/diffutils-2.8.7-15.i586.rpm
+i586/e2fsprogs-1.38-25.i586.rpm
+i586/expat-2.0.0-11.i586.rpm
+i586/file-4.16-15.4.i586.rpm
+i586/filesystem-10.1-5.i586.rpm
+i586/fillup-1.42-116.i586.rpm
+i586/findutils-4.2.27-12.i586.rpm
+i586/gawk-3.1.5-18.i586.rpm
+i586/gdbm-1.8.3-241.i586.rpm
+i586/gpg-1.4.2-23.7.i586.rpm
+i586/grep-2.5.1a-18.i586.rpm
+i586/gzip-1.3.5-159.5.i586.rpm
+i586/info-4.8-20.i586.rpm
+i586/insserv-1.04.0-18.i586.rpm
+i586/irqbalance-0.09-58.i586.rpm
+i586/kernel-default-2.6.16.21-0.25.i586.rpm
+i586/libacl-2.2.34-12.i586.rpm
+i586/libattr-2.4.28-14.i586.rpm
+i586/libcom_err-1.38-25.i586.rpm
+i586/libgcc-4.1.0-25.i586.rpm
+i586/libstdc++-4.1.0-25.i586.rpm
+i586/libxcrypt-2.4-10.i586.rpm
+i586/libzio-0.1-15.i586.rpm
+i586/limal-1.1.6-8.i586.rpm
+i586/limal-bootloader-1.1.2-7.i586.rpm
+i586/limal-perl-1.1.6-8.i586.rpm
+i586/logrotate-3.7.3-11.i586.rpm
+i586/mdadm-2.2-30.i586.rpm
+i586/mingetty-0.9.6s-86.i586.rpm
+i586/mkinitrd-1.2-106.19.i586.rpm
+i586/mktemp-1.5-742.i586.rpm
+i586/module-init-tools-3.2.2-32.13.i586.rpm
+i586/ncurses-5.5-16.i586.rpm
+i586/net-tools-1.60-581.i586.rpm
+i586/openldap2-client-2.3.19-18.i586.rpm
+i586/openssl-0.9.8a-18.10.i586.rpm
+i586/pam-0.99.3.0-29.3.i586.rpm
+i586/pciutils-2.2.1-14.i586.rpm
+i586/pcre-6.4-12.i586.rpm
+i586/perl-5.8.8-12.i586.rpm
+i586/perl-Bootloader-0.2.27-0.4.i586.rpm
+i586/perl-gettext-1.05-11.i586.rpm
+i586/permissions-2006.2.24-8.i586.rpm
+i586/python-2.4.2-18.i586.rpm
+i586/python-elementtree-1.2.6-18.i586.rpm
+i586/python-xml-2.4.2-18.i586.rpm
+i586/readline-5.1-22.i586.rpm
+i586/reiserfs-3.6.19-17.i586.rpm
+i586/rpm-python-4.4.2-40.i586.rpm
+i586/sed-4.1.4-15.i586.rpm
+i586/smart-0.41-23.2.i586.rpm
+i586/suse-release-10.1-9.i586.rpm
+i586/sysvinit-2.86-19.i586.rpm
+i586/udev-085-30.15.i586.rpm
+i586/util-linux-2.12r-35.i586.rpm
+noarch/suse-build-key-1.0-685.noarch.rpm
+"
diff --git a/installer/systems/suse101/settings.local.example b/installer/systems/suse101/settings.local.example
index 026258ad..838e771b 100644
--- a/installer/systems/suse101/settings.local.example
+++ b/installer/systems/suse101/settings.local.example
@@ -3,7 +3,7 @@
# It's also possible to define addditional values here.
# Use a local installation source.
-SLX_INST_SOURCE_BASEURL_suse101="ftp://gab/pub/opensuse/distribution/SL-10.1/inst-source"
+SLX_INST_SOURCE_BASEURL="ftp://gab/pub/opensuse/distribution/SL-10.1/inst-source"
SLX_INST_SOURCE_BASEURL_suse101update="ftp://gab/pub/suse/update/10.1"
# Add more packages.
diff --git a/installer/systems/ubuntu610/settings b/installer/systems/ubuntu610/settings
index 4c246b59..40c5c4d3 100644
--- a/installer/systems/ubuntu610/settings
+++ b/installer/systems/ubuntu610/settings
@@ -6,5 +6,5 @@ SLX_INST_SOURCE_NAME_ubuntu610updates="Ubuntu 6.10 updates"
SLX_INST_SOURCE_DISTRIBUTION_ubuntu610updates="edgy-updates"
SLX_INST_SOURCE_NAME_ubuntu610security="Ubuntu 6.10 security"
SLX_INST_SOURCE_DISTRIBUTION_ubuntu610security="edgy-security"
-SLX_BASE_PREREQ_PACKAGES="debootstrap"
+SLX_BASE_PREREQ_PACKAGES="pool/main/d/debootstrap/debootstrap_0.3.3.0ubuntu7_all.deb"
SLX_INSTALL_PACKAGES_MAIN="kaddressbook kmail kontact korganizer"