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.scheiner@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 - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Attachment:
pEpkey.asc
Description: application/pgp-keys