Taken from http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4556 http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4584 http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4624 http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4625 diff -Nur grub-2.00.orig/grub-core/loader/i386/bsd.c grub-2.00/grub-core/loader/i386/bsd.c --- grub-2.00.orig/grub-core/loader/i386/bsd.c 2012-06-07 22:06:00.000000000 +0900 +++ grub-2.00/grub-core/loader/i386/bsd.c 2013-01-04 19:50:55.000000000 +0900 @@ -1309,7 +1309,7 @@ && phdr->p_type != PT_DYNAMIC) return 0; - paddr = phdr->p_paddr & 0xFFFFFF; + paddr = phdr->p_paddr & 0xFFFFFFF; if (paddr < kern_start) kern_start = paddr; @@ -1333,7 +1333,7 @@ } *do_load = 1; - phdr->p_paddr &= 0xFFFFFF; + phdr->p_paddr &= 0xFFFFFFF; paddr = phdr->p_paddr; *addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src); @@ -1351,7 +1351,7 @@ && phdr->p_type != PT_DYNAMIC) return 0; - paddr = phdr->p_paddr & 0xffffff; + paddr = phdr->p_paddr & 0xfffffff; if (paddr < kern_start) kern_start = paddr; @@ -1375,7 +1375,7 @@ } *do_load = 1; - paddr = phdr->p_paddr & 0xffffff; + paddr = phdr->p_paddr & 0xfffffff; *addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src); @@ -1394,7 +1394,7 @@ { grub_relocator_chunk_t ch; - entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF; + entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFFF; err = grub_elf32_phdr_iterate (elf, filename, grub_bsd_elf32_size_hook, NULL); if (err) diff -Nur grub-2.00.orig/util/grub-mkconfig_lib.in grub-2.00/util/grub-mkconfig_lib.in --- grub-2.00.orig/util/grub-mkconfig_lib.in 2012-06-28 00:27:53.000000000 +0900 +++ grub-2.00/util/grub-mkconfig_lib.in 2013-01-04 19:50:55.000000000 +0900 @@ -349,3 +349,10 @@ cat fi } + +grub_tab=" " + +grub_add_tab () { + sed -e "s/^/$grub_tab/" +} + diff -Nur grub-2.00.orig/util/grub.d/10_hurd.in grub-2.00/util/grub.d/10_hurd.in --- grub-2.00.orig/util/grub.d/10_hurd.in 2012-03-05 05:10:04.000000000 +0900 +++ grub-2.00/util/grub.d/10_hurd.in 2013-01-04 19:50:55.000000000 +0900 @@ -108,7 +108,7 @@ EOF fi - prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/"|sed "s/^/$submenu_indentation/" + prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | grub_add_tab|sed "s/^/$submenu_indentation/" message="$(gettext_printf "Loading GNU Mach ...")" if [ x$type = xrecovery ] ; then @@ -122,9 +122,9 @@ EOF if [ x$type != xrecovery ] ; then - save_default_entry | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/" + save_default_entry | grub_add_tab| sed "s/^/$submenu_indentation/" fi - prepare_grub_to_access_device "${GRUB_DEVICE}" | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/" + prepare_grub_to_access_device "${GRUB_DEVICE}" | grub_add_tab| sed "s/^/$submenu_indentation/" message="$(gettext_printf "Loading the Hurd ...")" if [ x$type = xrecovery ] ; then opts= @@ -158,7 +158,7 @@ if [ "x$is_first_entry" = xtrue ]; then hurd_entry "$kernel" simple - submenu_indentation="\t" + submenu_indentation="$grub_tab" # TRANSLATORS: %s is replaced with an OS name echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnuhurd-advanced-$(grub_get_device_id "${GRUB_DEVICE_BOOT}")' {" diff -Nur grub-2.00.orig/util/grub.d/10_illumos.in grub-2.00/util/grub.d/10_illumos.in --- grub-2.00.orig/util/grub.d/10_illumos.in 2012-03-05 04:03:38.000000000 +0900 +++ grub-2.00/util/grub.d/10_illumos.in 2013-01-04 19:50:55.000000000 +0900 @@ -35,8 +35,8 @@ esac echo "menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'illumos-$(grub_get_device_id "${GRUB_DEVICE_BOOT}")' {" -save_default_entry | sed -e "s/^/\t/" -prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/" +save_default_entry | grub_add_tab +prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | grub_add_tab message="$(gettext_printf "Loading kernel of Illumos ...")" cat << EOF insmod gzio diff -Nur grub-2.00.orig/util/grub.d/10_kfreebsd.in grub-2.00/util/grub.d/10_kfreebsd.in --- grub-2.00.orig/util/grub.d/10_kfreebsd.in 2012-03-05 06:02:30.000000000 +0900 +++ grub-2.00/util/grub.d/10_kfreebsd.in 2013-01-04 19:50:55.000000000 +0900 @@ -54,7 +54,7 @@ fi if [ -z "${prepare_module_dir_cache}" ]; then - prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | sed -e "s/^/\t/")" + prepare_module_dir_cache="$(prepare_grub_to_access_device $(${grub_probe} -t device "${module_dir}") | grub_add_tab)" fi printf '%s\n' "${prepare_module_dir_cache}" @@ -91,10 +91,10 @@ echo "menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'kfreebsd-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" fi if [ x$type != xrecovery ] ; then - save_default_entry | sed -e "s/^/\t/" | sed "s/^/$submenu_indentation/" + save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/" fi if [ -z "${prepare_boot_cache}" ]; then - prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" + prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)" fi printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" @@ -112,7 +112,7 @@ load_kfreebsd_module acpi true - for abstraction in dummy $(grub-probe -t abstraction --device ${GRUB_DEVICE}) ; do + for abstraction in dummy $(${grub_probe} -t abstraction --device ${GRUB_DEVICE}) ; do case $abstraction in lvm) load_kfreebsd_module geom_linux_lvm false ;; esac @@ -122,10 +122,10 @@ zfs) load_kfreebsd_module opensolaris false - ls "${dirname}/zfs/zpool.cache" > /dev/null + ls "/boot/zfs/zpool.cache" > /dev/null printf '%s\n' "${prepare_boot_cache}" sed "s/^/$submenu_indentation/" << EOF - kfreebsd_module ${rel_dirname}/zfs/zpool.cache type=/boot/zfs/zpool.cache + kfreebsd_module $(make_system_path_relative_to_its_root /boot)/zfs/zpool.cache type=/boot/zfs/zpool.cache EOF ;; esac @@ -179,7 +179,7 @@ case ${GRUB_FS} in zfs) # zpool name - kfreebsd_device=$(grub-probe -t fs_label --device ${GRUB_DEVICE}) + kfreebsd_device=$(${grub_probe} -t fs_label --device ${GRUB_DEVICE}) # filesystem name (empty string for the main filesystem) kfreebsd_device="${kfreebsd_device}$(${grub_mkrelpath} / | sed -e "s,/*@$,,")" ;; @@ -213,7 +213,7 @@ if [ "x$is_first_entry" = xtrue ]; then kfreebsd_entry "${OS}" "${version}" simple - submenu_indentation="\t" + submenu_indentation="$grub_tab" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" diff -Nur grub-2.00.orig/util/grub.d/10_linux.in grub-2.00/util/grub.d/10_linux.in --- grub-2.00.orig/util/grub.d/10_linux.in 2012-04-19 06:24:38.000000000 +0900 +++ grub-2.00/util/grub.d/10_linux.in 2013-01-04 19:50:55.000000000 +0900 @@ -101,7 +101,7 @@ echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" fi if [ x$type != xrecovery ] ; then - save_default_entry | sed -e "s/^/\t/" + save_default_entry | grub_add_tab fi # Use ELILO's generic "efifb" when it's known to be available. @@ -123,12 +123,12 @@ if [ x$dirname = x/ ]; then if [ -z "${prepare_root_cache}" ]; then - prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/")" + prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)" fi printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/" else if [ -z "${prepare_boot_cache}" ]; then - prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" + prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)" fi printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" fi @@ -230,7 +230,7 @@ linux_entry "${OS}" "${version}" simple \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" - submenu_indentation="\t" + submenu_indentation="$grub_tab" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" diff -Nur grub-2.00.orig/util/grub.d/10_netbsd.in grub-2.00/util/grub.d/10_netbsd.in --- grub-2.00.orig/util/grub.d/10_netbsd.in 2012-03-05 04:47:35.000000000 +0900 +++ grub-2.00/util/grub.d/10_netbsd.in 2013-01-04 19:50:55.000000000 +0900 @@ -77,10 +77,10 @@ prepare_grub_to_access_device $(${grub_probe} -t device "${kmodule}") | sed -e 's,^, ,' case "${loader}" in knetbsd) - printf "\tknetbsd_module_elf %s\n" "${kmodule_rel}" + printf "$grub_tabknetbsd_module_elf %s\n" "${kmodule_rel}" ;; multiboot) - printf "\tmodule %s\n" "${kmodule_rel}" + printf "$grub_tabmodule %s\n" "${kmodule_rel}" ;; esac } @@ -121,11 +121,11 @@ printf "%s\n" "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" case "${loader}" in knetbsd) - printf "\tknetbsd %s -r %s %s\n" \ + printf "$grub_tabknetbsd %s -r %s %s\n" \ "${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/" ;; multiboot) - printf "\tmultiboot %s %s root=%s %s\n" \ + printf "$grub_tabmultiboot %s %s root=%s %s\n" \ "${kernel}" "${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/" ;; esac @@ -159,7 +159,7 @@ if [ "x$is_first_entry" = xtrue ]; then netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}" - submenu_indentation="\t" + submenu_indentation="$grub_tab" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" diff -Nur grub-2.00.orig/util/grub.d/10_windows.in grub-2.00/util/grub.d/10_windows.in --- grub-2.00.orig/util/grub.d/10_windows.in 2012-03-05 06:11:43.000000000 +0900 +++ grub-2.00/util/grub.d/10_windows.in 2013-01-04 19:50:55.000000000 +0900 @@ -45,7 +45,7 @@ sort | uniq | wc -l`" = 1 || return 1 # Search 'default=PARTITION' - get_os_name_from_boot_ini_part=`sed -n 's,^default=,,p' "$1" | sed 's,\\\\,/,g;s,[ \t\r]*$,,;1q'` + get_os_name_from_boot_ini_part=`sed -n 's,^default=,,p' "$1" | sed 's,\\\\,/,g;s,[ $grub_tab\r]*$,,;1q'` test -n "$get_os_name_from_boot_ini_part" || return 1 # Search 'PARTITION="NAME" ...' @@ -87,8 +87,8 @@ menuentry '$(echo "$OS" | grub_quote)' \$menuentry_id_option '$osid-$(grub_get_device_id "${dev}")' { EOF - save_default_entry | sed -e 's,^,\t,' - prepare_grub_to_access_device "$dev" | sed 's,^,\t,' + save_default_entry | sed -e 's,^,$grub_tab,' + prepare_grub_to_access_device "$dev" | sed 's,^,$grub_tab,' test -z "$needmap" || cat <