Package: grub-common Version: 1.98~20091210-1
I think skip partition (don't make entry automatically) may be a useful feature for grub2: a) if you have installed a distribution that is not well recognized by grub2 (i.e. Mandriva): you need (1) prevent its autodetection (to be exact, prevent 30_os-prober to make an entry) and (2) booting the system by means of a customized entry in the file /etc/grub.d/40_custom b) if you have a partition you don't want to be accessed or booted by users (i.e. Vista recovery partition): in this case the partition only needs to be ignored. I have checked successfully a very simple easy implementation of these feature on Debian squeeze (package grub-common, version 1.98~20091210-1) STEP 1) Add the variable GRUB_DONT_ AUTODETECT_PART to the file /etc/default/grub This variable must contain the name of the partitions you don't want to be autodetected. It's the list of these space-separated names. The partitions naming is the usual one in linux: hdax, hdbx, sdax, sdbx... Example: GRUB_DONT_AUTODETECT_PART="hda1 hda5" As you can see, in my case I don't want hda1 and hda5 to be “autodetected”. STEP 2) Export this just created variable in the file /usr/sbin/grub-mkconfig: export GRUP_DONT_AUTODETECT_PART STEP 3) And lastly, you must apply a little patch (divided in 2 parts) to the file /etc/grub.d/30_os-prober --- 30_os-prober_198 2009-12-14 15:05:26.000000000 +0100 +++ 30_os-prober_joan 2009-12-18 17:39:22.000000000 +0100 @@ -43,6 +43,13 @@ LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`" BOOT="`echo ${OS} | cut -d ':' -f 4`" +# My patch to prevent making grub entry for some partitions: 1st part +PARTITIONNAME="`echo ${DEVICE} | cut -c 6- 2> /dev/null`" +if [ "`echo ${GRUB_DONT_AUTODETECT_PART} | grep -e ${PARTITIONNAME} 2> /dev/null`" ] ; then + BOOT="banned" +fi +# End of first part of the patch + if [ -z "${LONGNAME}" ] ; then LONGNAME="${LABEL}" fi @@ -163,6 +170,11 @@ } EOF ;; +# My patch to prevent some partitions being autodetected: 2n part + banned) + echo " ${DEVICE} has been prevented to make grub entry." >&2 + ;; +# End of the 2n part of my patch hurd) cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" { The first part is intended to detect and ignore the partition, and the second one to report the user that the partition has been ignored. The result is: When you run grub-update: the partitions included in GRUB_DONT_AUTODETECT_PARTare ignored by 30_os-prober Thanks in advance. PD. Please find attached the patch Joan Information about the package: # dpkg --status grub-common Package: grub-common Status: install ok installed Priority: extra Section: admin Installed-Size: 3792 Maintainer: GRUB Maintainers <pkg-grub-de...@lists.alioth.debian.org> Architecture: amd64 Source: grub2 Version: 1.98~20091210-1 Replaces: grub-coreboot (<< 1.97+20091114-1), grub-efi (<< 1.96 +20080831-1), grub-ieee1275 (<< 1.96+20080831-1), grub-linuxbios (<< 1.96+20080831-1), grub-pc (<< 1.97+20091114-1) Depends: base-files (>= 4.0.1~), dpkg (>= 1.15.4) | install-info | dpkg (<= 1.14.25), libc6 (>= 2.3), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), gettext-base Recommends: os-prober (>= 1.33) Suggests: multiboot-doc, grub-emu Conflicts: grub-doc (<< 0.97-32), grub-legacy-doc (<< 0.97-59), mdadm (<< 2.6.7-2) Conffiles: /etc/grub.d/30_os-prober 64201f929dd5286b6c1ab519a5171305 /etc/grub.d/README be58f42dfe74feb6eeb98c6a843c743f /etc/grub.d/10_linux ad3c3dad94d50d0801d08041cf326a50 /etc/grub.d/40_custom babe7de352fe18de5a238569cf4b8a11 /etc/grub.d/00_header 3f80b0898913310f59192fa4acff7d1e Description: GRand Unified Bootloader, version 2 (common files) This package contains common files shared by the distinct flavours of GRUB. Homepage: http://www.gnu.org/software/grub/grub-2.en.html
--- 30_os-prober_198 2009-12-14 15:05:26.000000000 +0100 +++ 30_os-prober_joan 2009-12-18 17:39:22.000000000 +0100 @@ -43,6 +43,13 @@ LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`" BOOT="`echo ${OS} | cut -d ':' -f 4`" +# My patch to prevent making grub entry for some partitions: 1st part +PARTITIONNAME="`echo ${DEVICE} | cut -c 6- 2> /dev/null`" +if [ "`echo ${GRUB_DONT_AUTODETECT_PART} | grep -e ${PARTITIONNAME} 2> /dev/null`" ] ; then + BOOT="banned" +fi +# End of first part of the patch + if [ -z "${LONGNAME}" ] ; then LONGNAME="${LABEL}" fi @@ -163,6 +170,11 @@ } EOF ;; +# My patch to prevent some partitions being autodetected: 2n part + banned) + echo " ${DEVICE} has been prevented to make grub entry." >&2 + ;; +# End of the 2n part of my patch hurd) cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" {