#!/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 ... SLXPREFIX=/srv/openslx IRTARGET=${SLXPREFIX}/build/$1 # add openslx distro (in)dependent data to the initramfs target DISTRONAME=ubuntu DISTROVER=12.04 for content in ${SLXPREFIX}/core/base ${SLXPREFIX}/core/${DISTRONAME}/base ${SLXPREFIX}/core/${DISTRONAME}/${DISTROVER} ; do cp -a $content ${IRTARGET} done # add kernel stuff to the initramfs target KERNELVER= mkdir -p ${IRTARGET}/lib/modules cp -a ${SLXPREFIX}/kernel/${KERNELVER}/modules \ ${IRTARGET}/lib/modules/${KERNELVER} # produce stage3.1 mkdir -p ${IRTARGET}/stage3.1 # create the base directory structure for stage3.1 mkdir -p ${IRTARGET}/stage3.1/{bin,dev,proc,run,lib,etc,mnt,sys} cp -a /dev/{console,kmsg,mem,null,tty,tty0,tty1,tty9,urandom,zero} \ ${IRTARGET}/stage3.1/dev cp ${IRTARGET}/openslx/bin/busybox ${IRTARGET}/stage3.1/bin # link the required busybox applets for stage3.1 for app in insmod modprobe mount mkdir umount sh switch_root ; do ln -s /bin/busybox ${IRTARGET}/stage3.1/bin/${app} done # add the static stuff for stage3.1 cp -a ${SLXPREFIX}/core/stage3.1 ${IRTARGET}/stage3.1 # finalize the initramfs target which mksquashfs 2>&1>/dev/null || { echo "Please install SquashFS utilities" ; exit 1 } mksquashfs -ef ${IRTARGET}/stage3.1 ${IRTARGET} \ ${IRTARGET}/stage3.1/mnt/openslx.sqfs -comp xz -b 1M -no-progress -no-recovery 2>/dev/null (cd ${IRTARGET}/stage3.1; find . | cpio --format="newc" --create | gzip -9 > ${IRTARGET}/initramfs)