summaryrefslogtreecommitdiffstats
path: root/server/build_core
blob: e761eb2e1ae0620dbe8c6a462b1aab93b0cfde5b (plain) (blame)
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
#!/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)