Use metapackages for kernel
[grml-live.git] / grml-live
index fca4613..28c3e84 100755 (executable)
--- a/grml-live
+++ b/grml-live
@@ -81,13 +81,13 @@ More details: man grml-live + /usr/share/doc/grml-live/grml-live.html
 
 Please send your bug reports and feedback to the grml-team: http://grml.org/bugs/
 "
+   [ "$(id -u 2>/dev/null)" != 0 ] && echo "Please notice that this script requires root permissions."
 }
 
 # make sure it's possible to get usage information without being
 # root or actually executing the script
 if [ "$1" = '-h' -o "$1" = '--help' ] ; then
    usage
-   [ "$(id -u 2>/dev/null)" != 0 ] && echo "Please notice that this script requires root permissions."
    exit 0
 fi
 # }}}
@@ -152,6 +152,7 @@ umount_all() {
    # make sure we don't leave any mounts - FAI doesn't remove them always
    umount $CHROOT_OUTPUT/proc/sys/fs/binfmt_misc 2>/dev/null || /bin/true
    umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true
+   umount $CHROOT_OUTPUT/run  2>/dev/null || /bin/true
    umount $CHROOT_OUTPUT/sys  2>/dev/null || /bin/true
    umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true
    umount $CHROOT_OUTPUT/dev 2>/dev/null || /bin/true
@@ -291,7 +292,7 @@ copy_addon_file() {
 # }}}
 
 # command line parsing {{{
-while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFnNqQuVz" opt; do
+while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFhnNqQuVz" opt; do
   case "$opt" in
     a) ARCH="$OPTARG" ;;
     A) CLEAN_ARTIFACTS=1 ;;
@@ -303,6 +304,7 @@ while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFnNqQuVz" opt; do
     D) GRML_FAI_CONFIG="$(readlink -f $OPTARG)" ;;
     e) EXTRACT_ISO_NAME="$(readlink -f $OPTARG)" ;;
     g) GRML_NAME="$OPTARG" ;;
+    h) usage ; bailout 0 ;;
     i) ISO_NAME="$OPTARG" ;;
     I) CHROOT_INSTALL="$OPTARG" ;;
     n) SKIP_MKISOFS=1 ;;
@@ -366,7 +368,7 @@ fi
 [ -n "$NFSROOT_CONF" ]            || NFSROOT_CONF="${GRML_FAI_CONFIG}/make-fai-nfsroot.conf"
 [ -n "$RELEASENAME" ]             || RELEASENAME='grml-live rocks'
 [ -n "$SQUASHFS_EXCLUDES_FILE" ]  || SQUASHFS_EXCLUDES_FILE="${GRML_FAI_CONFIG}/config/grml/squashfs-excludes"
-[ -n "$SUITE" ]                   || SUITE='squeeze'
+[ -n "$SUITE" ]                   || SUITE='testing'
 [ -n "$TEMPLATE_DIRECTORY" ]      || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates'
 [ -n "$USERNAME" ]                || USERNAME='grml'
 [ -n "$VERSION" ]                 || VERSION='0.0.1'
@@ -824,6 +826,17 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then
           bailout 11
        fi
 
+       # EFI boot files
+       if [ -r "${CHROOT_OUTPUT}/boot/efi.img" -a -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then
+          einfo "Moving EFI boot files into ISO path."
+          log "Moving EFI boot files into ISO path."
+          RC=$0
+          mv "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/" || RC=$?
+          mkdir -p "${BUILD_OUTPUT}/efi/boot/" || RC=$?
+          mv "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi" || RC=$?
+          eend $?
+       fi
+
        [ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates'
        if ! [ -d "${TEMPLATE_DIRECTORY}"/boot ] ; then
           log    "Error: ${TEMPLATE_DIRECTORY}/boot does not exist. Exiting."
@@ -891,6 +904,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then
        cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.lst "${BUILD_OUTPUT}"/boot/grub/
        cp -a "${CHROOT_OUTPUT}"/usr/share/grub/ascii.pf2 "${BUILD_OUTPUT}"/boot/grub/
        cp -a "${CHROOT_OUTPUT}"/boot/grub/core.img "${BUILD_OUTPUT}"/boot/grub/
+       cp -a "${CHROOT_OUTPUT}"/boot/grub/grub.img "${BUILD_OUTPUT}"/boot/grub/
 
        if ! [ -d "${TEMPLATE_DIRECTORY}"/GRML ] ; then
           log    "Error: ${TEMPLATE_DIRECTORY}/GRML does not exist. Exiting."
@@ -1204,47 +1218,28 @@ else
       bailout
    fi
 
-   case "$ARCH" in
-     amd64)
-       # using -eltorito-alt-boot is limited to xorriso for now
-       case "$MKISOFS" in
-         xorriso*)
-           einfo "Using xorriso for ISO generation." ;  eend 0
-           eindent
-
-           if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then
-             log   "Disabling (U)EFI boot support because xorriso version is too old."
-             ewarn "Disabling (U)EFI boot support because xorriso version is too old." ; eend 0
-           else
-             if [ -r "${CHROOT_OUTPUT}/boot/efi.img" ] ; then
-               einfo "Found /boot/efi.img - using for ISO."
-               log   "Found /boot/efi.img - using for ISO."
-               cp "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/efi.img"
-               eend $?
-             fi
-
-             if [ -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then
-               einfo "Found /boot/bootx64.efi - using as /efi/boot/bootx64.efi for ISO."
-               log   "Found /boot/bootx64.efi - using as /efi/boot/bootx64.efi for ISO."
-               mkdir -p "${BUILD_OUTPUT}/efi/boot/"
-               cp "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi"
-               eend $?
-             fi
-
-             if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then
-               einfo "/boot/efi.img found and amd64 architecture present, extending boot arguments."
-               log   "/boot/efi.img found and amd64 architecture present, extending boot arguments."
-               BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot"
-               eend $?
-             else
-               log   "Disabling (U)EFI boot support because /boot/efi.img is missing."
-               ewarn "Disabling (U)EFI boot support because /boot/efi.img is missing." ; eend 0
-             fi
-           fi
+   einfo "Using ${MKISOFS} to build ISO." ;  eend 0
+   case "${ARCH}-${MKISOFS}" in
+     # using -eltorito-alt-boot is limited to xorriso for now
+     amd64-xorriso*)
+       eindent
+
+       if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then
+         log   "Disabling (U)EFI boot support because xorriso version is too old."
+         ewarn "Disabling (U)EFI boot support because xorriso version is too old." ; eend 0
+       else
+         if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then
+           einfo "Enabling (U)EFI boot."
+           log   "Enabling (U)EFI boot."
+           BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot"
+           eend $?
+         else
+           log   "Disabling (U)EFI boot support because /boot/efi.img is missing."
+           ewarn "Disabling (U)EFI boot support because /boot/efi.img is missing." ; eend 0
+         fi
+       fi
 
-           eoutdent
-           ;;
-       esac
+       eoutdent
        ;;
    esac
 
@@ -1395,7 +1390,10 @@ create_netbootpackage() {
   fi
 
   if tar -C "$OUTPUTDIR" -jcf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_NAME}_${VERSION}" ; then
-    sha1sum "${OUTPUT_FILE}" > "${OUTPUT_FILE}.sha1"
+    (
+      cd $(dirname "${OUTPUT_FILE}")
+      sha1sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha1"
+    )
     einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0
     rm -rf "${OUTPUTDIR}"
   else