1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/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 ...
ROOT_DIR=$(dirname $(readlink -f $0))
SELF=$(readlink -f $0)
if [ "x$(whoami)" != "xroot" ]; then
echo "ERROR: You need to have root rights to install packages."
exit 1
fi
# add openslx distro (in)dependent data to the initramfs target
DISTRONAME=ubuntu
DISTROVER=12.04
STAGE31_DIR=${ROOT_DIR}/stage3.1
STAGE32_DIR=${ROOT_DIR}/../remote/stage3.2
# produce stage3.1
#mkdir -p ${STAGE31_DIR}
#Copy Busybox to Stage3.1
#[ ! -e ${STAGE32_DIR/openslx/bin/busybox} ] && echo "Busybox not found under stage3.2/openslx. Please run setup_tools first." && return
#cp ${STAGE32_DIR}/openslx/bin/busybox ${STAGE31_DIR}/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
# copy stage3.1 base from data directory
[ ! -d ${ROOT_DIR}/../data/stage3.1 ] && echo "No stage3.1 directory found." && exit 1
cp -a ${ROOT_DIR}/../data/stage3.1 ${ROOT_DIR}
# create the base directory structure for stage3.2
mkdir -p ${STAGE32_DIR}/{bin,dev,proc,run,lib,etc,mnt,sys}
cp -a /dev/{console,kmsg,mem,null,tty,tty0,tty1,tty9,urandom,zero} \
${STAGE32_DIR}/dev
# finalize the initramfs target
which mksquashfs 2>&1>/dev/null || echo "Please install SquashFS utilities"
[ ! -d ${STAGE32_DIR} ] && echo "No stage3.2 directory found. Please run setup_tools first." && exit 1
[ -e ${STAGE31_DIR}/mnt/openslx.sqfs ] && rm ${STAGE31_DIR}/mnt/openslx.sqfs
mksquashfs ${STAGE32_DIR} ${STAGE31_DIR}/mnt/openslx.sqfs -comp xz -b 1M -no-progress -no-recovery 2>/dev/null
cd ${STAGE31_DIR}
find . | cpio --format="newc" --create | gzip -9 > ${ROOT_DIR}/initramfs
|