=== modified file 'ChangeLog' --- ChangeLog 2013-02-06 16:37:29 +0000 +++ ChangeLog 2013-02-06 22:08:33 +0000 @@ -1,3 +1,7 @@ +2013-02-06 Paulo Flabiano Smorigo + + * util/grub-install.in: New option --memdisk. + 2013-02-06 Vladimir Serbinenko * grub-core/commands/lsacpi.c: Fix types on 64-bit platform. === modified file 'util/grub-install.in' --- util/grub-install.in 2013-01-27 15:17:21 +0000 +++ util/grub-install.in 2013-02-06 22:08:48 +0000 @@ -50,6 +50,8 @@ bootdir= grubdir="`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`" modules= +memdisk=no +memdisk_img= install_device= force_lba= @@ -110,6 +112,7 @@ print_option_help "--removable" "$(gettext "the installation device is removable. This option is only available on EFI.")" print_option_help "--bootloader-id=$(gettext "ID")" "$(gettext "the ID of bootloader. This option is only available on EFI.")" print_option_help "--efi-directory=$(gettext "DIR")" "$(gettext "use DIR as the EFI System Partition root.")" + print_option_help "--memdisk" "$(gettext "include all modules in memdisk.")" echo gettext "INSTALL_DEVICE must be system device filename.";echo echo @@ -240,6 +243,9 @@ --no-nvram) update_nvram=no ;; + --memdisk) + memdisk=yes ;; + # This is an undocumented feature... --debug) debug=yes ;; @@ -558,6 +564,22 @@ exit 1 fi +if test $memdisk = yes; then + memdisk_dir="`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1 + + mkdir -p "${memdisk_dir}"/"${grub_modinfo_target_cpu}-${grub_modinfo_platform}" + + for file in "${source_dir}"/*.mod "${source_dir}"/*.lst; do + cp -f "$file" "${memdisk_dir}"/"${grub_modinfo_target_cpu}-${grub_modinfo_platform}" || exit 1 + done + + memdisk_img=`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"` || exit 1 + (cd "${memdisk_dir}"; tar -cf - *) > "${memdisk_img}" + rm -rf "${memdisk_dir}" + + modules="$modules memdisk tar" +fi + # Write device to a variable so we don't have to traverse /dev every time. grub_device="`"$grub_probe" --device-map="${device_map}" --target=device "${grubdir}"`" || exit 1 @@ -710,11 +732,15 @@ *) imgext=img ;; esac -if [ x"$config_opt_file" = x ]; then - "$grub_mkimage" -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" --prefix="${prefix_drive}${relative_grubdir}" $modules || exit 1 -else - "$grub_mkimage" -c "${config_opt_file}" -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" --prefix="${prefix_drive}${relative_grubdir}" $modules || exit 1 -fi +additional_options= +if [ x"$config_opt_file" != x ]; then + additional_options="-c \"${config_opt_file}\"" +fi +if [ x"$memdisk_img" != x ]; then + additional_options="${additional_options} -m ${memdisk_img}" +fi + +"$grub_mkimage" ${additional_options} -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" --prefix="${prefix_drive}${relative_grubdir}" $modules || exit 1 # Backward-compatibility kludges if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "mipsel-loongson" ]; then @@ -723,13 +749,12 @@ cp "${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" "${grubdir}/grub" elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-efi" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "x86_64-efi" ]; then - if [ x"$config_opt_file" = x ]; then - "$grub_mkimage" -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/grub.efi" --prefix="" $modules || exit 1 - else - "$grub_mkimage" -c "${config_opt_file}" -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/grub.efi" --prefix="" $modules || exit 1 - fi + "$grub_mkimage" ${additional_options} -d "${source_dir}" -O "${mkimage_target}" --output="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/grub.efi" --prefix="" $modules || exit 1 fi +if [ x"$memdisk_img" != x ]; then + rm -f "${memdisk_img}" +fi # Perform the grub_modinfo_platform-dependent install if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "sparc64-ieee1275" ] ; then