#!/bin/bash # Copyright (c) 2012 - OpenSLX GmbH # # This program is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your feedback to feedback@openslx.org # # General information about OpenSLX can be found at http://openslx.org # # Server side script to generate stage3.1,2 initial ramfses for OpenSLX Linux # stateless clients ############################################################################# #where we are MODE_DIR="${ROOT_DIR}/server" #files generated by this script land in boot SERVER_BOOT_DIR="${MODE_DIR}/boot" #builds from remote server SERVER_BUILD_DIR="${MODE_DIR}/remote_builds" REMOTE_BUILD_DIR="${ROOT_DIR}/remote/builds" #stage32 sqfs directory STAGE32_SQFS_DIR="${SERVER_BOOT_DIR}/stage32_sqfs/mnt" #Default values if -b was not supplied in mltk DEFAULT_STAGE32="stage32-default" DEFAULT_STAGE31="stage31-default" DEFAULT_ADDONS="addons-default" # initial checks initial_checks() { local TOOL_STR="$TOOL_STR initial_checks:" #check for required tools for BIN in squashfs-tools do local TEST=$(which ${BIN}) [ -z "${TEST}" ] && pinfo "Installing ${BIN}..." && apt-get install ${BIN} done #setup link to remote build directory, later this directory will be rsynced or exported to this server... if [ ! -d "${SERVER_BUILD_DIR}" ]; then [ ! -d "${REMOTE_BUILD_DIR}" ] && perror "remote 'builds' directory not foud, exiting." ln -s "${REMOTE_BUILD_DIR}" "${SERVER_BUILD_DIR}" fi [ ! -d "${SERVER_BOOT_DIR}" ] && mkdir -p "${SERVER_BOOT_DIR}" } generate_stage32() { local TOOL_STR="${TOOL_STR} generate_stage32:" [ ! -d "${STAGE32_SQFS_DIR}" ] && mkdir -p "${STAGE32_SQFS_DIR}" [ -e "${STAGE32_SQFS_DIR}/${BUILD}.sqfs" ] && rm "${STAGE32_SQFS_DIR}/${BUILD}.sqfs" pinfo "Writing ${BUILD}.sqfs to '${STAGE32_SQFS_DIR}/${BUILD}.sqfs'" mksquashfs "${SERVER_BUILD_DIR}/${BUILD}" "${STAGE32_SQFS_DIR}/${BUILD}.sqfs" -comp xz -b 1M -no-recovery >&6 || perror "mksquashfs failed ($?)." generate_initramfs "initramfs-${BUILD}" "${MODULE_DIR}/openslx" } generate_stage31() { initial_checks generate_rootfs generate_squashfs if [ ! -e ${MODULE_DIR}/kernel ]; then local TOOL_STR="$TOOL_STR copy_kernel:" pinfo "Copying Kernel $(uname -r) to ${MODULE_DIR}/kernel" cp "/boot/vmlinuz-$(uname -r)" "${MODULE_DIR}/kernel" || perror "Cannot copy kernel from '/boot/vmlinuz-$(uname -r)' to '${MODULE_DIR}/kernel'" else pinfo "Not copying kernel from system, as it already exists." fi } clean_core() { local TOOL_STR="$TOOL_STR clean_core:" pinfo "Cleaning '${STAGE31_DIR}'..." [ -d ${STAGE31_DIR} ] && { rm -rf ${STAGE31_DIR} || perror "rm -rf failed."; } pinfo "Cleaning '${MODULE_DIR}/kernel'..." [ -e ${MODULE_DIR}/kernel ] && { rm ${MODULE_DIR}/kernel || perror "rm failed."; } pinfo "Cleaning '${MODULE_DIR}/initramfs'..." [ -e ${MODULE_DIR}/initramfs ] && { rm ${MODULE_DIR}/initramfs || perror "rm failed."; } pinfo "Cleaning '${MODULE_DIR}/openslx'..." [ -d ${MODULE_DIR}/openslx ] && { rm -rf ${MODULE_DIR}/openslx || perror "rm failed."; } pinfo "Cleaning '${MODULE_DIR}/initramfs2'..." [ -d ${MODULE_DIR}/initramfs2 ] && { rm ${MODULE_DIR}/initramfs2 || perror "rm failed."; } }