summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorMichael Neves2013-02-27 19:12:16 +0100
committerMichael Neves2013-02-27 19:12:16 +0100
commit15bbf3bd4c500415490f2b0e879b6bb14a9e62fa (patch)
treed4052d1cae80009602bc5646cd2146404b8f0554 /server
parentadd squashfstools to build (diff)
downloadtm-scripts-15bbf3bd4c500415490f2b0e879b6bb14a9e62fa.tar.gz
tm-scripts-15bbf3bd4c500415490f2b0e879b6bb14a9e62fa.tar.xz
tm-scripts-15bbf3bd4c500415490f2b0e879b6bb14a9e62fa.zip
copy modules/firmware to stage31, generate separate initramfs for squashfs
Diffstat (limited to 'server')
-rwxr-xr-xserver/build_core90
1 files changed, 51 insertions, 39 deletions
diff --git a/server/build_core b/server/build_core
index 6d975984..a0725bec 100755
--- a/server/build_core
+++ b/server/build_core
@@ -30,28 +30,16 @@ initial_checks() {
[ -e ${STAGE32_DIR}/openslx/bin/busybox ] || perror "Busybox not found, run './mltk tools build 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?
if [ -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() {
# produce stage3.1
mkdir -p "${STAGE31_DIR}" || perror "Cannot create stage3.1 dir '${STAGE31_DIR}'"
+
+ # produce openslx dir
+ mkdir -p "${MODULE_DIR}/openslx/mnt" || perror "Cannot create openslx dir '${MODULE_DIR}/openslx/mnt'"
# create basic directory structure
mkdir -p "${STAGE31_DIR}"/{bin,dev,proc,run,etc,mnt,sys} || perror "Cannot create basic directory structure in '${STAGE31_DIR}'"
@@ -63,11 +51,6 @@ generate_rootfs() {
# 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");
@@ -79,42 +62,71 @@ generate_rootfs() {
fi
done
tarcopy "$BASICLIBS" "${STAGE31_DIR}"
-}
-
-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 || perror "mksquashfs failed ($?)."
+ #check for kernel modules, if not present copy from system
+ if [ ! -d ${STAGE31_DIR}/lib/modules ];
+ then
+ pinfo "Couldn't find kernel modules in stage3.1."
+ pinfo "Copying modules for kernel $(uname -r)..."
+ mkdir -p "${STAGE31_DIR}/lib/modules/$(uname -r)/kernel" || perror "Cannot create '${STAGE31_DIR}/lib/modules/$(uname -r)/kernel'"
+ cd /lib/modules/$(uname -r)/kernel || perror "No Directory /lib/modules/$(uname -r)/kernel found."
+ tarcopy "$(cat stage31.modules)" "${STAGE31_DIR}/lib/modules/$(uname -r)/kernel"
+ cd -
+ else
+ pinfo "Not copying kernel modules from system, as '${STAGE31_DIR}/lib/modules' already exists."
+ fi
+ #check for firmware, if not present copy from system
+ if [ ! -d ${STAGE31_DIR}/lib/firmware ];
+ then
+ pinfo "Couldn't find firmware in stage3.1."
+ pinfo "Copying firmware for kernel $(uname -r)..."
+ mkdir -p "${STAGE31_DIR}/lib/firmware/$(uname -r)" || perror "Cannot create '${STAGE31_DIR}/lib/firmware/$(uname -r)'"
+ cd /lib/firmware || perror "No Directory /lib/firmware found."
+ tarcopy "$(cat stage31.firmware)" "${STAGE31_DIR}/lib/firmware"
+ cd -
+ cd /lib/firmware/$(uname -r) || perror "No Directory /lib/firmware/$(uname -r) found."
+ tarcopy "$(cat stage31.firmware)" "${STAGE31_DIR}/lib/firmware/$(uname -r)"
+ cd -
+ else
+ pinfo "Not copying firmware from system, as '${STAGE31_DIR}/lib/firmware' already exists."
+ fi
+
+ #generate initramfs
+ generate_initramfs "initramfs" "${STAGE31_DIR}"
}
-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 .' 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"
+generate_squashfs() {
+ # finalize the initramfs target
+ [ -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 || 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 "[core] kernel $(uname -r) copied to ${MODULE_DIR}/kernel"
+ if [ ! -e ${MODULE_DIR}/kernel ]; then
+ pinfo "Couldn't find kernel in '${MODULE_DIR}'"
+ 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'"
+ fi
}
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." }
}