bcf622a6cb287f934b57ac012b990fc25eb152a0
[grml-live.git] / scripts / generate_netboot_package.sh
1 #!/bin/bash
2 ################################################################################
3 # Purpose: hackish script to generate netboot package without booting the system
4 ################################################################################
5
6 if [ $# -lt 2 ] ; then
7   echo "Usage: $0 <chroot> <output_file>" >&2
8   exit 1
9 fi
10
11 set -u
12 set -e
13
14 CHROOT="${1}"
15 OUTPUT_FILE="${2}"
16
17 if ! [ -f "${CHROOT}/etc/grml_version" ] ; then
18   echo "Error: could not read ${CHROOT}/etc/grml_version" >&2
19   exit 1
20 fi
21
22 GRML_VERSION="$(awk '{print $1"_"$2}' ${CHROOT}/etc/grml_version)"
23
24 if ! [ -r "${CHROOT}/usr/lib/syslinux/pxelinux.0" ] ; then
25   echo "Error: /usr/lib/syslinux/pxelinux.0 not found. Please install syslinux[-common]." >&2
26   exit 1
27 fi
28
29 OUTPUTDIR="$(mktemp -d)" || exit 1
30 WORKING_DIR="${OUTPUTDIR}/grml_netboot_package_${GRML_VERSION}/tftpboot/"
31 mkdir -p "$WORKING_DIR" || exit 2
32
33 cp "$CHROOT"/boot/vmlinuz-*    "$WORKING_DIR"/vmlinuz
34 cp "$CHROOT"/boot/initrd.img-* "$WORKING_DIR"/initrd.img
35 cp "$CHROOT"/usr/lib/syslinux/pxelinux.0 "${WORKING_DIR}/pxelinux.0"
36
37 if [ -r "$CHROOT"/usr/lib/syslinux/modules/bios/ldlinux.c32 ] ; then
38   cp "$CHROOT"/usr/lib/syslinux/modules/bios/ldlinux.c32 "${WORKING_DIR}"/
39 fi
40
41 mkdir -p "${WORKING_DIR}/pxelinux.cfg"
42 cat > "${WORKING_DIR}/pxelinux.cfg/default" << EOF
43 default grml
44 label grml
45   kernel vmlinuz
46   append initrd=initrd.img root=/dev/nfs rw nfsroot=192.168.0.1:/live/image boot=live apm=power-off quiet nomce noprompt noeject vga=791 
47 EOF
48
49 if tar -C "$OUTPUTDIR" -acf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_VERSION}" ; then
50   rm -rf "${OUTPUTDIR}"
51   echo "Generated ${OUTPUT_FILE}"
52 fi
53
54 ## END OF FILE #################################################################