diff options
| author | root | 2013-03-19 15:28:56 +0100 |
|---|---|---|
| committer | root | 2013-03-19 15:28:56 +0100 |
| commit | cc112cd5c1b75403fa99357f981a5471784f5ab4 (patch) | |
| tree | c61196354a0112720b0181ae2b0cd9fb1736605e /server | |
| parent | openSUSE non-interactive zypper (diff) | |
| parent | binutil: add libs to blacklist, speeds up by a LOT (thanks michi:)) (diff) | |
| download | tm-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-x | server/build_core | 96 |
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."; } } |
