summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorroot2013-03-19 15:28:56 +0100
committerroot2013-03-19 15:28:56 +0100
commitcc112cd5c1b75403fa99357f981a5471784f5ab4 (patch)
treec61196354a0112720b0181ae2b0cd9fb1736605e /server
parentopenSUSE non-interactive zypper (diff)
parentbinutil: add libs to blacklist, speeds up by a LOT (thanks michi:)) (diff)
downloadtm-scripts-cc112cd5c1b75403fa99357f981a5471784f5ab4.tar.gz
tm-scripts-cc112cd5c1b75403fa99357f981a5471784f5ab4.tar.xz
tm-scripts-cc112cd5c1b75403fa99357f981a5471784f5ab4.zip
Merge branch 'master' of ssh://openslx/openslx-ng/tm-scripts
Diffstat (limited to 'server')
-rwxr-xr-xserver/build_core96
1 files changed, 21 insertions, 75 deletions
diff --git a/server/build_core b/server/build_core
index 03ff6eca..cf748428 100755
--- a/server/build_core
+++ b/server/build_core
@@ -20,106 +20,52 @@
MODULE_DIR=${ROOT_DIR}/server
-STAGE31_STATIC_DIR=${ROOT_DIR}/data/stage3.1
-STAGE31_DIR=${MODULE_DIR}/stage3.1
+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 "${STAGE32_DIR}" ] || perror "No stage3.2 directory found. Please run './mltk --tools -b' first."
+ [ -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."
- [ -e "${STAGE32_DIR}/openslx/bin/busybox" ] || perror "Busybox not found, run './mltk --tools -b busybox' first."
-
- # shouldn't squashfs-tools be automatically installed as we need them nevertheless!?
- # what if it is already on the machine? faster to check with which than the apt-get check?
[ -z $(which mksquashfs) ] && perror "mksquashfs not found, please install squashfs-tools first."
-
- #check for kernel modules, if not present copy from system
- if [ ! -d "${STAGE32_DIR}/lib/modules" ];
- then
- pinfo "Couldn't find kernel modules in stage3.2."
- pinfo "Copying modules for kernel $(uname -r)..."
- mkdir -p "${STAGE32_DIR}/lib/modules" || perror "Cannot create '${STAGE32_DIR}/lib/modules'"
- cp -r "/lib/modules/$(uname -r)" "${STAGE32_DIR}/lib/modules/" || perror "Cannot copy kernel modules from '/lib/modules/$(uname -r)' '${STAGE32_DIR}/lib/modules/'"
- else
- pinfo "Not copying kernel modules from system, as '${STAGE32_DIR}/lib/modules/' already exists."
- fi
-
- # TODO: check for aufs and squaskfs modules
-}
-
-generate_rootfs() {
- local TOOL_STR="$TOOL_STR generate_rootfs:"
-
- # produce stage3.1
- mkdir -p "${STAGE31_DIR}" || perror "Cannot create stage3.1 dir '${STAGE31_DIR}'"
-
- # create basic directory structure
- mkdir -p "${STAGE31_DIR}"/{bin,dev,proc,run,etc,mnt,sys} || perror "Cannot create basic directory structure in '${STAGE31_DIR}'"
-
- # copy device files from running system
- cp -a /dev/{console,kmsg,mem,null,tty,tty0,tty1,tty9,urandom,zero} \
- "${STAGE31_DIR}"/dev || perror "Cannot copy devices from running system"
-
- # copy busybox, its libs and static data to stage3.1
- cp -r "${STAGE32_DIR}"/openslx/* "${STAGE31_STATIC_DIR}"/* "${STAGE31_DIR}" || perror "Copying busybox, its libs and static data failed."
-
- # fix for aufs & squashfs modules needed for stage 3.1
- mkdir -p "${STAGE31_DIR}/lib/modules.0/" || perror "Creating modules.0 dir for aufs & squashfs in stage 3.1 failed."
- cp "/lib/modules/$(uname -r)/kernel/fs/squashfs/squashfs.ko" "${STAGE31_DIR}/lib/modules.0/" || perror "Copying squashfs.ko failed."
- cp "/lib/modules/$(uname -r)/kernel/ubuntu/aufs/aufs.ko" "${STAGE31_DIR}/lib/modules.0/" || perror "Copying aufs.ko failed."
-
- # fetch the libraries needed for busybox
- BASICLIBS=""
- for i in $(ldd "${STAGE31_DIR}/bin/busybox");
- do
- if [ $(echo $i | grep '^/' | grep -c ld) -eq 1 \
- -o $(echo $i | grep '^/' | grep -c libc.so) -eq 1 ];
- then
- BASICLIBS="$BASICLIBS $i $(readlink -f "$i")"
- fi
- done
- tarcopy "$BASICLIBS" "${STAGE31_DIR}"
}
generate_squashfs() {
+ [[ $CORE_NO_SQUASHFS == 1 ]] && return
local TOOL_STR="$TOOL_STR generate_squashfs:"
- # finalize the initramfs target
- [ -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-recovery >&6 || perror "mksquashfs failed ($?)."
-
-}
-
-generate_initramfs() {
- local TOOL_STR="$TOOL_STR generate_initramfs:"
- cd "${STAGE31_DIR}" || perror "Cannot cd to '${STAGE31_DIR}'"
- find . | cpio --format="newc" --create | gzip -9 > "${MODULE_DIR}/initramfs"
- local PS=(${PIPESTATUS[*]})
- [ "x${PS[0]}" != "x0" ] && perror "'find .' in '$(pwd)' failed."
- [ "x${PS[1]}" != "x0" ] && perror "cpio create failed."
- [ "x${PS[2]}" != "x0" ] && perror "gzip to '${MODULE_DIR}/initramfs' failed."
- cd -
- pinfo "initramfs created at ${MODULE_DIR}/initramfs"
+ [ -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
- generate_initramfs
- # TODO better kernel copy
- cp "/boot/vmlinuz-$(uname -r)" "${MODULE_DIR}/kernel" || perror "Cannot copy kernel from '/boot/vmlinuz-$(uname -r)' to '${MODULE_DIR}/kernel'"
- pinfo "kernel $(uname -r) copied to ${MODULE_DIR}/kernel"
+ 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."; }
}