Reviewed and applied after some minor cosmetic changes.

Thanks,
Adrian

On 03/05/2018 10:09 PM, Frank Scheiner wrote:
> The following patch adds support for GPT partitioned disks on sparc(64)
> to d-i/grub-installer. The installation method is chosen based on the
> detected subarch currently. It auto-selects the partition for /boot
> as target for grub-install on systems without GPT support and the
> actual disk device on systems with GPT support. The grub-install
> arguments are configured respectively.
> 
> The current implementation is very simple and based on the assumption
> that we will always have a partition containing "/boot" and that we
> either need to use this partition or the disk containing this partition
> as target for `grub-install` (depending on used partitioning). For
> partitioning it either expects GPT or assumes a Sun disklabel.
> 
> No user-interaction is provided during the GRUB installation step, so it
> might fail in complex situations. I.e. it worked for me when using empty
> disks without already installed other OSes. But although the
> installation on a disk with Sun disklabel and Solaris 10 installed and
> enough free space at the end of the disk worked as far as I can tell,
> booting from the disk did not start GRUB but the Solaris 10 boot loader.
> And booting from the actual "/boot" partition of the installed Debian
> didn't work as expected:
> 
> ```
> {0} ok boot disk0:d
> Boot device: /pci@0/pci@0/pci@2/scsi@0/disk@0:d  File and args: 
> GRUB ERROR: Last Trap: Fast Instruction Access MMU Miss
> ```
> 
> In the absence of a T4 or other GPT capable system I cannot test booting
> from a GPT partioned disk. But I can provide the modified parts of the
> Debian installer as tarball for easy application during a Debian
> installation if someone volunteers for testing.
> 
> Cheers,
> Frank
> 
> ---
>  debian/changelog |  7 +++++++
>  grub-installer   | 31 +++++++++++++++++++++++++++++--
>  2 files changed, 36 insertions(+), 2 deletions(-)
> 
> diff --git a/debian/changelog b/debian/changelog
> index b5856a3..2c44fdf 100644
> --- a/debian/changelog
> +++ b/debian/changelog
> @@ -1,3 +1,10 @@
> +grub-installer (1.154) UNRELEASED; urgency=medium
> +
> +  [ Frank Scheiner ]
> +  * Add support for GPT partitioned disks on sparc/sparc64.
> +
> + -- Frank Scheiner <frank.schei...@web.de>  Mon, 05 Mar 2018 19:03:48 +0100
> +
>  grub-installer (1.153) unstable; urgency=medium
>  
>    [ Updated translations ]
> diff --git a/grub-installer b/grub-installer
> index f9f0761..c06639f 100755
> --- a/grub-installer
> +++ b/grub-installer
> @@ -39,6 +39,7 @@ debug () {
>  
>  ARCH="$(archdetect)"
>  info "architecture: $ARCH"
> +SUBARCH=${ARCH#*/}
>  
>  # Ensure proc is mounted in all the $chroot calls;
>  # needed for RAID+LVM for example
> @@ -626,7 +627,7 @@ if db_get cdrom-detect/hybrid; then
>       hybrid="$RET"
>  fi
>  case $ARCH:$grub_package in
> -    *:grub|*:grub-pc|sparc/*:grub-ieee1275|sparc64/*:grub-ieee1275)
> +    *:grub|*:grub-pc)
>       if [ "$(device_to_disk "$cdsrc")" = "$default_bootdev" ] || \
>          ([ -n "$hdsrc" ] && [ "$(device_to_disk "$hdsrc")" = 
> "$default_bootdev" ]) || \
>          ([ "$default_bootdev" = '(hd0)' ] && \
> @@ -645,6 +646,23 @@ case $ARCH:$grub_package in
>               fi
>       fi
>       ;;
> +    sparc/*:grub-ieee1275|sparc64/*:grub-ieee1275)
> +     bootfs=$(findfs /boot)
> +     [ "$bootfs" ] || bootfs="$(findfs /)"
> +     # see: https://github.com/esnowberg/grub2-sparc/wiki
> +     case $SUBARCH in
> +         *_gpt)
> +             # For GPT partitioning grub-install should use the device as 
> target
> +             disk=$(device_to_disk "$bootfs")
> +             db_set grub-installer/bootdev "$disk"
> +             ;;
> +         *)
> +             # For Sun disklabel grub-install should use the boot partition 
> as target
> +             db_set grub-installer/bootdev "$bootfs"
> +             ;;
> +     esac
> +     state=3
> +     ;;
>      
> powerpc/chrp*:grub-ieee1275|ppc64/chrp*:grub-ieee1275|ppc64el/*:grub-ieee1275)
>       # Hack to pick the right boot device.  This should really be done in
>       # grub-install instead, and will need to be done there in order to
> @@ -852,7 +870,16 @@ EOF
>                       ;;
>                   sparc/*|sparc64/*)
>                       # see: https://github.com/esnowberg/grub2-sparc/wiki
> -                     grub_install_params="$grub_install_params 
> --skip-fs-probe"
> +                     case $SUBARCH in
> +                         *_gpt)
> +                             # no additional parameters for installations on 
> GPT partitioned
> +                             # disks
> +                             :
> +                             ;;
> +                         *)
> +                             grub_install_params="$grub_install_params 
> --skip-fs-probe"
> +                             ;;
> +                     esac
>                       ;;
>               esac
>  
> 

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaub...@debian.org
`. `'   Freie Universitaet Berlin - glaub...@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

Attachment: pEpkey.asc
Description: application/pgp-keys

Reply via email to