#!/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 ############################################################################# # first parameter is a hash pointing to the target directory # /srv/openslx/build # in the future the prefix should be set via slxsettings ... MODULE_DIR=${ROOT_DIR}/server STAGE31_DIR=${ROOT_DIR}/remote/stage3.1 STAGE32_DIR=${ROOT_DIR}/remote/stage3.2 # initial checks initial_checks() { local TOOL_STR="$TOOL_STR initial_checks:" [ -d "${STAGE31_DIR}" ] || perror "No stage3.1 directory found. Please run './mltk core -b' first." [ -d "${STAGE32_DIR}" ] || perror "No stage3.2 directory found. Please run './mltk tools -b' first." [ -z $(which mksquashfs) ] && perror "mksquashfs not found, please install squashfs-tools first." } generate_squashfs() { [[ $CORE_NO_SQUASHFS == 1 ]] && return local TOOL_STR="$TOOL_STR generate_squashfs:" [ -e "${MODULE_DIR}/openslx/mnt/openslx.sqfs" ] && rm "${MODULE_DIR}/openslx/mnt/openslx.sqfs" pinfo "Writing openslx.sqfs to '${MODULE_DIR}/openslx/mnt/'" mksquashfs "${STAGE32_DIR}" "${MODULE_DIR}/openslx/mnt/openslx.sqfs" -comp xz -b 1M -no-recovery >&6 || perror "mksquashfs failed ($?)." generate_initramfs "initramfs2" "${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."; } }