--- 10_linux 2011-10-01 14:40:35.000000000 +0200 +++ 09_linux_dsdt 2012-02-08 19:42:17.800478439 +0100 @@ -23,6 +23,14 @@ libdir=${exec_prefix}/lib . ${libdir}/grub/grub-mkconfig_lib +GRUB_CUSTOM_ACPI="/boot/dsdt.aml" +if [ x${GRUB_CUSTOM_ACPI} != x ] && [ -f ${GRUB_CUSTOM_ACPI} ] \ + && is_path_readable_by_grub ${GRUB_CUSTOM_ACPI}; then + echo "Found custom ACPI table: ${GRUB_CUSTOM_ACPI}" >&2 +else + exit 0 +fi + export TEXTDOMAIN=grub export TEXTDOMAINDIR=${prefix}/share/locale @@ -87,7 +95,7 @@ else title="$(gettext_quoted "%s, with Linux %s")" fi - printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}" + printf "menuentry '${title}, fixed DSDT' ${CLASS} {\n" "${os}" "${version}" cat << EOF recordfail EOF @@ -121,6 +129,9 @@ EOF fi cat << EOF + acpi (\$root)`make_system_path_relative_to_its_root ${GRUB_CUSTOM_ACPI}` +EOF + cat << EOF linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} EOF if test -n "${initrd}" ; then @@ -186,7 +197,7 @@ in_submenu=false while [ "x$list" != "x" ] ; do linux=`version_find_latest $list` - echo "Found linux image: $linux" >&2 + echo "Found linux image: $linux (with fixed DSDT)" >&2 basename=`basename $linux` dirname=`dirname $linux` rel_dirname=`make_system_path_relative_to_its_root $dirname` @@ -244,7 +255,7 @@ list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` if [ "$list" ] && ! $in_submenu; then - echo "submenu \"Previous Linux versions\" {" + echo "submenu \"Previous Linux versions, with fixed DSDT\" {" in_submenu=: fi done