Added modes "mbr_only", "original" and parameter variables MKRESCUE_SED_*
This commit is contained in:
parent
e3ddedbc2c
commit
2afe09e42a
@ -16,33 +16,105 @@ echo >&2
|
|||||||
# grub-mkrescue -o output.iso minimal \
|
# grub-mkrescue -o output.iso minimal \
|
||||||
# --xorriso=/home/thomas/xorriso-1.4.3./frontend/grub-mkrescue-sed.sh
|
# --xorriso=/home/thomas/xorriso-1.4.3./frontend/grub-mkrescue-sed.sh
|
||||||
#
|
#
|
||||||
# It will manipulate the xorriso arguments before
|
# It will manipulate the xorriso arguments before they get executed by a
|
||||||
# they get executed by the neighboring ../../xorriso/xorriso program.
|
# xorriso program. Default is the neighboring ../../xorriso/xorriso program or,
|
||||||
|
# if that neighbor cannot be found, the system-wide installed xorriso.
|
||||||
#
|
#
|
||||||
# In its current form it implements an experiment which should be
|
# The mode "mjg" implements an experiment which should be accompanied by a
|
||||||
# accompanied by a xorriso from
|
# GNU xorriso built by
|
||||||
# export CPPFLAGS="-DLibisofs_mjg_boot_for_grub2"
|
# export CPPFLAGS="-DLibisofs_mjg_boot_for_grub2"
|
||||||
# ./configure && make clean && make
|
# ./configure && make clean && make
|
||||||
|
#
|
||||||
|
# The mode "mbr_only" implements an alternative fully UEFI compliant layout
|
||||||
|
# which does not produce GTP, HFS+, and APM.
|
||||||
|
# It is supposed to work with any unmodified xorriso >= 1.3.2
|
||||||
|
#
|
||||||
|
|
||||||
# Variation settings:
|
#
|
||||||
|
# Variation settings
|
||||||
|
#
|
||||||
|
# The environment variables MKRESCUE_SED_* override the following
|
||||||
|
# default settings:
|
||||||
|
|
||||||
# First argument of -append_partition
|
# Manipulation mode:
|
||||||
|
# "mjg" = ESP in MBR+GPT+APM, with HFS+
|
||||||
|
# "mbr_only" = ESP in MBR, without HFS+
|
||||||
|
# "original" = pass arguments unchanged
|
||||||
|
mode="mjg"
|
||||||
|
if test -n "$MKRESCUE_SED_MODE"
|
||||||
|
then
|
||||||
|
mode="$MKRESCUE_SED_MODE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# First argument of -append_partition with mode "mjg". Values: 1 or 2.
|
||||||
partno=1
|
partno=1
|
||||||
|
if test -n "$MKRESCUE_SED_PARTNO"
|
||||||
|
then
|
||||||
|
partno="$MKRESCUE_SED_PARTNO"
|
||||||
|
fi
|
||||||
|
|
||||||
# Replacement for option --protective-msdos-label
|
# Replacement for option --protective-msdos-label. Either itself or empty text.
|
||||||
|
# If the environment variable contains the word "no", this means empty.
|
||||||
protective="--protective-msdos-label"
|
protective="--protective-msdos-label"
|
||||||
|
if test -n "$MKRESCUE_SED_PROTECTIVE"
|
||||||
|
then
|
||||||
|
if test x"$MKRESCUE_SED_PROTECTIVE" = xno
|
||||||
|
then
|
||||||
|
protective=""
|
||||||
|
elif test x"$MKRESCUE_SED_PROTECTIVE" = xyes
|
||||||
|
then
|
||||||
|
protective="--protective-msdos-label"
|
||||||
|
else
|
||||||
|
protective="$MKRESCUE_SED_PROTECTIVE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# "yes" make the script very verbous
|
# "yes" shows xorriso arguments, "extra" additionally shows all input files.
|
||||||
debug=no
|
debug=no
|
||||||
|
if test -n "$MKRESCUE_SED_DEBUG"
|
||||||
|
then
|
||||||
|
debug="$MKRESCUE_SED_DEBUG"
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$debug" = yes
|
# The path to the program that will be executed with the converted arguments.
|
||||||
|
if test -n "$MKRESCUE_SED_XORRISO"
|
||||||
|
then
|
||||||
|
xorriso="$MKRESCUE_SED_XORRISO"
|
||||||
|
else
|
||||||
|
# Prefer neighboring xorriso binary over system-wide installed one.
|
||||||
|
self_dir="$(dirname $(dirname "$0") )"
|
||||||
|
if test -x "$self_dir"/xorriso/xorriso
|
||||||
|
then
|
||||||
|
xorriso="$self_dir"/xorriso/xorriso
|
||||||
|
else
|
||||||
|
xorriso="xorriso"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MKRESCUE_SED_XORRISO_ARGS will be used as first arguments of the xorriso run.
|
||||||
|
# (Trailing xorriso arguments may be simply added to the grub-mkrescue
|
||||||
|
# command line.)
|
||||||
|
# Each argument must be a single word. No whitespace. No quotation marks.
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do the work
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "frontend/grub-mkrescue-sed.sh mode: $mode" >&2
|
||||||
|
echo >&2
|
||||||
|
|
||||||
|
if test x"$debug" = xyes -o x"$debug" = xextra
|
||||||
then
|
then
|
||||||
# Show arguments
|
# Show arguments
|
||||||
|
echo "##### Begin of received arguments" >&2
|
||||||
echo "$0" >&2
|
echo "$0" >&2
|
||||||
for i in "$@"
|
for i in "$@"
|
||||||
do
|
do
|
||||||
echo "|""$i""|" >&2
|
echo "$i" >&2
|
||||||
done
|
done
|
||||||
|
echo "##### End of recived arguments" >&2
|
||||||
|
echo >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Look for the name of the /tmp directory with the GRUB2 files.
|
# Look for the name of the /tmp directory with the GRUB2 files.
|
||||||
@ -61,12 +133,14 @@ do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if test "$debug" = yes
|
if test x"$debug" = xextra
|
||||||
then
|
then
|
||||||
# Show files on disk
|
# Show files on disk
|
||||||
find "$dir"
|
find "$dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x"$mode" = xmjg
|
||||||
|
then
|
||||||
# Exchange arguments for the experimental GRUB2 mjg layout
|
# Exchange arguments for the experimental GRUB2 mjg layout
|
||||||
x=$(echo " $*" | sed \
|
x=$(echo " $*" | sed \
|
||||||
-e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition $partno 0xef \/tmp\/$(basename "$dir")\/efi.img/" \
|
-e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition $partno 0xef \/tmp\/$(basename "$dir")\/efi.img/" \
|
||||||
@ -74,13 +148,34 @@ x=$(echo " $*" | sed \
|
|||||||
-e "s/--protective-msdos-label/$protective/" \
|
-e "s/--protective-msdos-label/$protective/" \
|
||||||
)
|
)
|
||||||
|
|
||||||
if test "$debug" = yes
|
elif test x"$mode" = xmbr_only
|
||||||
|
then
|
||||||
|
# Exchange arguments for no-HFS MBR-only layout
|
||||||
|
x=$(echo " $*" | sed \
|
||||||
|
-e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition 2 0xef \/tmp\/$(basename "$dir")\/efi.img/" \
|
||||||
|
-e "s/-hfsplus .*CoreServices\/boot.efi//" \
|
||||||
|
-e "s/--protective-msdos-label/$protective/" \
|
||||||
|
)
|
||||||
|
|
||||||
|
elif test x"$mode" = xoriginal
|
||||||
|
then
|
||||||
|
# Pass arguments unchanged
|
||||||
|
x=" $*"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo >&2
|
||||||
|
echo "$0 : FATAL : Unknown manipulation mode '$mode'." >&2
|
||||||
|
echo >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"$debug" = xyes -o x"$debug" = xextra
|
||||||
then
|
then
|
||||||
echo "+ converted xorriso arguments:" >&2
|
echo "+ converted xorriso arguments:" >&2
|
||||||
echo " $x" >&2
|
echo " $x" >&2
|
||||||
|
echo >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run neighboring xorriso binary with the altered arguments
|
# Run xorriso binary with the converted arguments
|
||||||
self_dir=$(dirname $(dirname "$0") )
|
"$xorriso" $MKRESCUE_SED_XORRISO_ARGS $x
|
||||||
"$self_dir"/xorriso/xorriso $x
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user