X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=44fcea6c78fc0deefddc8cdb5bf60c12c34713d6;hp=61412844c3d6f7729604bb62a5f71c1b195b69e2;hb=3e2cebaf9decc2c097fbcc4e5e17350913a60fcf;hpb=b8c8c53e77da46efb3a4ca0894d74e9604584d85 diff --git a/grml-live b/grml-live index 6141284..44fcea6 100755 --- a/grml-live +++ b/grml-live @@ -24,7 +24,7 @@ fi # set -e # global variables -GRML_LIVE_VERSION='0.14.1' +GRML_LIVE_VERSION='0.15.1' PN="$(basename $0)" CMDLINE="$0 $@" ADDONS_LIST_FILE='/boot/isolinux/addons_list.cfg' @@ -273,9 +273,8 @@ shift $(($OPTIND - 1)) # set ARGV to the first not parsed commandline parameter [ -n "$HYBRID_METHOD" ] || HYBRID_METHOD='manifold' [ -n "$NFSROOT_CONF" ] || NFSROOT_CONF="${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" [ -n "$RELEASENAME" ] || RELEASENAME='grml-live rocks' -[ -n "$SOURCES_LIST_INPUT" ] || SOURCES_LIST_INPUT="${GRML_FAI_CONFIG}/apt/sources.list" -[ -n "$SOURCES_LIST_OUTPUT" ] || SOURCES_LIST_OUTPUT="${GRML_FAI_CONFIG}/config/files/etc/apt/sources.list/GRMLBASE" -[ -n "$SQUASHFS_EXCLUDES_FILE " ] || SQUASHFS_EXCLUDES_FILE="${GRML_FAI_CONFIG}/config/grml/squashfs-excludes" +[ -n "$SOURCES_LIST_OUTPUT" ] || SOURCES_LIST_OUTPUT="${GRML_FAI_CONFIG}/config/files/etc/apt/sources.list/GRML_LIVE_SOURCES_LIST" +[ -n "$SQUASHFS_EXCLUDES_FILE" ] || SQUASHFS_EXCLUDES_FILE="${GRML_FAI_CONFIG}/config/grml/squashfs-excludes" [ -n "$SUITE" ] || SUITE='squeeze' [ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates' [ -n "$USERNAME" ] || USERNAME='grml' @@ -410,9 +409,8 @@ mkdir -p "$(dirname $SOURCES_LIST_OUTPUT)" # might not be present in -D config s cat > "$SOURCES_LIST_OUTPUT" << EOF # NOTE: This file is *NOT* meant for manual customisation! This file is -# modified by grml-live and any changes will be overridden. -# You might consider using GRML_LIVE_SOURCES in /etc/grml/grml-live.conf* -# or FAI's fcopy command with ${GRML_FAI_CONFIG}/config/files instead! +# installed temporarily only by grml-live and will be overriden in the +# installation and configuration process then. EOF if [ -n "$MIRROR_DIRECTORY" ] ; then @@ -424,10 +422,6 @@ if [ -n "$MIRROR_DIRECTORY" ] ; then echo "$MIRROR_SOURCES" >> "$SOURCES_LIST_OUTPUT" fi -if [ -n "$GRML_LIVE_SOURCES" ] ; then - echo "$GRML_LIVE_SOURCES" >> "$SOURCES_LIST_OUTPUT" -fi - if [ -n "$FAI_DEBOOTSTRAP" ] ; then sed "s#^FAI_DEBOOTSTRAP=.*#FAI_DEBOOTSTRAP=\"$FAI_DEBOOTSTRAP\"#" "$NFSROOT_CONF" | sponge "$NFSROOT_CONF" fi @@ -447,24 +441,31 @@ case $SUITE in sid) ;; *) echo "Sorry, $SUITE is not a valid Debian suite, exiting.">&2; bailout 1 ;; esac +export SUITE # make sure it's available in FAI scripts + +if [ -n "${GRML_LIVE_SOURCES:-}" ] ; then + DIST=" etch\| stable\| lenny\| squeeze\| wheezy\| testing\| sid\| unstable" + echo "# generated based on \$GRML_LIVE_SOURCES by grml-live +$GRML_LIVE_SOURCES" | \ + sed -e "s/\(^deb .\+\)\([ \t]*\)\($DIST\)\([ \t]*\)\(main \)/\1 \2$SUITE\4\5/; + s/\(^deb-src .\+\)\([ \t]*\)\($DIST\)\([ \t]*\)\(main \)/\1 \2$SUITE\4\5/" >> "$SOURCES_LIST_OUTPUT" +else + cat >> "$SOURCES_LIST_OUTPUT" << EOF +# generated by grml-live +deb http://deb.grml.org/ grml-stable main +deb http://deb.grml.org/ grml-testing main +deb http://cdn.debian.net/debian $SUITE main contrib non-free +EOF +fi -DIST=" etch\| stable\| lenny\| squeeze\| wheezy\| testing\| sid\| unstable" -sed "s/\(^deb .\+\)\([ \t]*\)\($DIST\)\([ \t]*\)\(main \)/\1 \2$SUITE\4\5/" "$SOURCES_LIST_INPUT" | sponge "$SOURCES_LIST_OUTPUT" -for file in "$LIVE_CONF" "$CONFIG" "$LOCAL_CONFIG" ; do - if [ -n "$file" ] ; then - sed "s/^SUITE=.*/SUITE=\"$SUITE\"/" $file | sponge $file - sed "s/\(^deb .\+\)\([ \t]*\)\($DIST\)\([ \t]*\)\(main \)/\1 \2$SUITE\4\5/" "$file" | sponge "$file" - fi -done - -# notice: activate grml-live pool only if we are building against unstable: -if grep -qwe unstable -qwe sid "$SOURCES_LIST_INPUT" ; then +# notice: activate grml-live pool when building against unstable or testing: +if grep -qwe unstable -qwe sid -qwe testing -qwe wheezy "$SOURCES_LIST_OUTPUT" ; then grep -q 'grml-live.*main' "$SOURCES_LIST_OUTPUT" || \ grep grml-stable "$SOURCES_LIST_OUTPUT" | \ sed 's/grml-stable/grml-live/' >> "$SOURCES_LIST_OUTPUT" else - grep -q 'grml-live.*main' "$SOURCES_LIST_INPUT" && \ - sed 's/.*grml-live.*/# removed grml-live repository/' "$SOURCES_LIST_INPUT" | sponge "$SOURCES_LIST_OUTPUT" + grep -q 'grml-live.*main' "$SOURCES_LIST_OUTPUT" && \ + sed -i 's/.*grml-live.*main/# removed grml-live repository/' "$SOURCES_LIST_OUTPUT" fi for file in "$LIVE_CONF" "$CONFIG" "$LOCAL_CONFIG" "$NFSROOT_CONF" ; do @@ -712,6 +713,9 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then log "Boot addons not found, skipping therefore. (Consider installing package grml-live-addons)" ewarn "Boot addons not found, skipping therefore. (Consider installing package grml-live-addons)" ; eend 0 else + # copy addons from Depended packages + cp -a /usr/lib/ipxe/ipxe.lkrn "${TEMPLATE_DIRECTORY}/boot/addons/" + # copy only files so we can handle bsd4grml on its own for file in ${TEMPLATE_DIRECTORY}/boot/addons/* ; do test -f $file && cp $file "$BUILD_OUTPUT"/boot/addons/ @@ -737,7 +741,13 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then ewarn "grub templates do not exist, skipping therefore." ; eend 0 else if ! [ -d "${BUILD_OUTPUT}/boot/grub" ] ; then - cp -a ${TEMPLATE_DIRECTORY}/boot/grub "$BUILD_OUTPUT"/boot/ + mkdir -p "${BUILD_OUTPUT}/boot/grub" + cp -a /usr/lib/grub/*-pc/*.mod "${BUILD_OUTPUT}/boot/grub" + cp -a /usr/lib/grub/*-pc/*.o "${BUILD_OUTPUT}/boot/grub" + cp -a /usr/lib/grub/*-pc/*.lst "${BUILD_OUTPUT}/boot/grub" + cp -a /usr/share/grub/ascii.pf2 "${BUILD_OUTPUT}/boot/grub" + /usr/bin/grub-mkimage -d /usr/lib/grub/*-pc -o \ + "${BUILD_OUTPUT}/boot/grub/core.img" biosdisk iso9660 --format=i386-pc fi # make sure we have recent template files available, otherwise updating @@ -815,7 +825,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then done # generate addon list - rm "${BUILD_OUTPUT}/${ADDONS_LIST_FILE}" + rm -f "${BUILD_OUTPUT}/${ADDONS_LIST_FILE}" for name in "${BUILD_OUTPUT}"/boot/isolinux/addon_*.cfg ; do include_name=$(basename "$name") echo "include $include_name" >> "${BUILD_OUTPUT}/${ADDONS_LIST_FILE}" @@ -860,7 +870,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then log 'Using console based isolinux method as requested via $ISOLINUX_METHOD.' einfo 'Using console based isolinux method as requested via $ISOLINUX_METHOD.' if grep -q '^include console.cfg' "${BUILD_OUTPUT}/boot/isolinux/distri.cfg" ; then - einfo "include for console.cfg already foud, nothing to do." + einfo "include for console.cfg already found, nothing to do." eend 0 else log "including console.cfg in ${BUILD_OUTPUT}/boot/isolinux/isolinux.cfg" @@ -871,45 +881,17 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then else log 'Using graphical boot menu.' if grep -q '^include vesamenu.cfg' "${BUILD_OUTPUT}/boot/isolinux/isolinux.cfg" ; then - log "include for vesamenu.cfg already foud, nothing to do." + log "include for vesamenu.cfg already found, nothing to do." else log "including vesamenu.cfg in ${BUILD_OUTPUT}/boot/isolinux/isolinux.cfg" echo "include vesamenu.cfg" >> "${BUILD_OUTPUT}/boot/isolinux/isolinux.cfg" fi fi - # jump back to grub from bsd4grml (/boot/grub/stage2): - GRUB_LEGACY=stage2 - if [ -e "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 ]; then - if [ -e "$BUILD_OUTPUT"/boot/grub/core.img ]; then - GRUB_VERSION=2 - else - GRUB_VERSION=1 - fi - - for file in "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 \ - "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.cfg \ - "$BUILD_OUTPUT"/boot/isolinux/*.cfg \ - "$BUILD_OUTPUT"/boot/grub/grub.cfg \ - "$BUILD_OUTPUT"/boot/grub/menu.lst ; do - if [ -e "$file" ] ; then - sed -i -e "s!%GRUB_VERSION%!$GRUB_VERSION!g" \ - -e "s!%GRUB_LEGACY%!$GRUB_LEGACY!g" "$file" - fi - done - sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 fi - if [ -e "$BUILD_OUTPUT"/boot/grub/$GRUB_LEGACY ]; then - sed -i "s/%GRUB_LEGACY%/$GRUB_LEGACY/g" "$BUILD_OUTPUT"/boot/grub/menu.lst - sed -i "s/%GRUB_LEGACY%/$GRUB_LEGACY/g" "$BUILD_OUTPUT"/boot/grub/grub.cfg - elif [ -e "$BUILD_OUTPUT"/boot/grub/menu.lst -a -e "$BUILD_OUTPUT"/boot/grub/grub.cfg ] ; then - sed -i "/%GRUB_LEGACY%/d" "$BUILD_OUTPUT"/boot/grub/menu.lst - sed -i "/%GRUB_LEGACY%/d" "$BUILD_OUTPUT"/boot/grub/grub.cfg - fi - DPKG_LIST="/var/log/fai/$HOSTNAME/last/dpkg.list" # the dpkg --list output of the chroot if ! [ -r "$DPKG_LIST" ] ; then ewarn "$DPKG_LIST could not be read, ignoring to store package information on ISO therefore." @@ -989,7 +971,7 @@ else # support exclusion of files via exclude-file: if [ -n "$SQUASHFS_EXCLUDES_FILE" -a "$SQUASHFS_EXCLUDES_FILE" ] ; then - SQUASHFS_OPTIONS="$SQUASHFS_OPTIONS -ef $SQUASHFS_EXCLUDES_FILE" + SQUASHFS_OPTIONS="$SQUASHFS_OPTIONS -ef $SQUASHFS_EXCLUDES_FILE -wildcards" fi # get rid of unnecessary files when building grml-small for final release: @@ -1005,9 +987,9 @@ else [ -n "$SQUASHFS_INFO_MSG" ] && SQUASHFS_INFO_MSG="using options: $SQUASHFS_INFO_MSG" einfo "Squashfs build information: running binary $SQUASHFS_BINARY $SQUASHFS_INFO_MSG" - log "$SQUASHFS_BINARY $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS" + log "$SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS" - if $SQUASHFS_BINARY $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/"${GRML_NAME}".squashfs \ + if $SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/"${GRML_NAME}".squashfs \ -noappend $SQUASHFS_OPTIONS 2>"${SQUASHFS_STDERR}" ; then echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/filesystem.module log "Finished execution of stage 'squashfs' [$(date)]" @@ -1037,8 +1019,6 @@ fi if [ "$BOOT_METHOD" = "isolinux" ] ; then BOOT_ARGS="-no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat" -elif [ "$BOOT_METHOD" = "grub" ] ; then - BOOT_ARGS="-no-emul-boot -boot-load-size 4 -boot-info-table -b boot/grub/stage2" elif [ "$BOOT_METHOD" = "grub2" ] ; then BOOT_ARGS="-no-emul-boot -boot-load-size 4 -b boot/grub/toriboot.bin" fi