Hi Steve Steve McIntyre <[email protected]> writes:
> Hi, > > Reasonably simple changes here, again heavily inspired by Ubuntu > code. One extra issue I found - it looks like /sys and /proc need to > be mounted in /target when we run the postinst, otherwise we'll fail > to drive efibootmgr. I've added code to do that here, but I'm not sure > it's the right way to do it - better suggestions welcome! >From the debian-installer-utils README file: in-target: Runs the specified command in /target and returns its exit status. The debconf passthrough frontend is used to make debconf questions be asked using cdebconf in the installer. This is especially useful for running things like dpkg-reconfigure, debconf-apt-progress, and tasksel. The log-output utility is used to log any output; if in-target is called with the option --pass-stdout, log-output will respect it. The README does not say so explicitly but in-target takes care of all the necessary setup to have a woking chroot in /target including mounting of /sys and /proc. IMO it's the prefered way to run commands chrooted to /target even if you don't need the full setup. Gaudenz > > Depends on the libdebian-installer patch to add the "efi" subarch. > > -- > Steve McIntyre, Cambridge, UK. [email protected] > "Because heaters aren't purple!" -- Catherine Pitt > mr diff: /home/steve/debian/d-i/d-i/packages/grub-installer > diff --git a/debian/changelog b/debian/changelog > index 979eddd..0d857fb 100644 > --- a/debian/changelog > +++ b/debian/changelog > @@ -1,3 +1,13 @@ > +grub-installer (1.78) unstable; urgency=low > + > + [ Steve McIntyre ] > + * Allow grub for amd64/efi and i386/efi, installing grub-efi instead of > + grub-pc. > + * Make sure that we have /sys and /proc mounted in /target in the > + postinst, so that efibootmgr will work ok. > + > + -- Steve McIntyre <[email protected]> Tue, 21 Aug 2012 22:10:40 +0100 > + > grub-installer (1.77) unstable; urgency=low > > [ Cyril Brulebois ] > diff --git a/debian/isinstallable b/debian/isinstallable > index e66bac1..c404929 100755 > --- a/debian/isinstallable > +++ b/debian/isinstallable > @@ -8,13 +8,6 @@ log() { > ARCH="$(archdetect)" > > case $ARCH in > - i386/mac|amd64/mac) > - # Note: depends on partman-efi to load the efivars module! > - if [ -d /sys/firmware/efi ]; then > - log "GRUB not yet usable on Intel-based Macs booted using EFI" > - exit 1 > - fi > - ;; > powerpc/chrp_pegasos) > ;; > powerpc/*) > diff --git a/debian/postinst b/debian/postinst > index b32a1d0..5e001f1 100755 > --- a/debian/postinst > +++ b/debian/postinst > @@ -1,2 +1,8 @@ > #! /bin/sh -e > + > +# If we're installing grub-efi, it wants /sys mounted in the > +# target. Maybe /proc too? > +mount -t sysfs sys /target/sys || true > +mount -t proc procfs /target/proc || true > + > grub-installer /target > diff --git a/grub-installer b/grub-installer > index a0a4d8c..e9f350e 100755 > --- a/grub-installer > +++ b/grub-installer > @@ -312,11 +312,16 @@ case $ARCH in > if [ -d /sys/firmware/efi ]; then > # This point can't be reached (yet). See debian/isinstallable. > grub_package="grub-efi" > - experimental_arch > else > grub_package="grub-pc" > fi > ;; > + i386/efi|amd64/efi) > + grub_package="grub-efi" > + ;; > + i386/*|amd64/*) > + grub_package="grub-pc" > + ;; > powerpc/*) > grub_package="grub-ieee1275" > experimental_arch > @@ -409,10 +414,13 @@ db_progress INFO grub-installer/progress/step_install > # to grub legacy, or vice-versa > case "$grub_package" in > grub) > - log-output -t grub-installer $chroot $ROOT dpkg -P grub-pc-bin grub-pc > + log-output -t grub-installer $chroot $ROOT dpkg -P grub-pc-bin grub-pc > grub-efi grub-efi-amd64-bin grub-efi-amd64 grub-efi-ia32-bin grub-efi-ia32 > grub-gfxpayload-lists > ;; > grub-pc) > - log-output -t grub-installer $chroot $ROOT dpkg -P grub grub-legacy > + log-output -t grub-installer $chroot $ROOT dpkg -P grub grub-legacy > grub-efi grub-efi-amd64-bin grub-efi-amd64 grub-efi-ia32-bin grub-efi-ia32 > + ;; > + grub-efi) > + log-output -t grub-installer $chroot $ROOT dpkg -P grub grub-legacy > grub-pc-bin grub-pc grub-gfxpayload-lists > ;; > esac > > @@ -662,7 +670,7 @@ if [ -z "$frdisk" ]; then > > CODE=0 > case $ARCH:$grub_package in > - *:grub|*:grub-pc|sparc:grub-ieee1275) > + *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275) > info "Running $chroot $ROOT grub-install > $grub_install_params \"$bootdev\"" > log-output -t grub-installer $chroot $ROOT grub-install > $grub_install_params "$bootdev" || CODE=$? > ;; > @@ -675,7 +683,7 @@ if [ -z "$frdisk" ]; then > info "grub-install ran successfully" > else > case $ARCH:$grub_package in > - *:grub|*:grub-pc|sparc:grub-ieee1275) > + *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275) > error "Running 'grub-install > $grub_install_params \"$bootdev\"' failed." > ;; > *) > @@ -962,7 +970,7 @@ if [ "$serial" ] ; then > ) >$ROOT/boot/grub/$menu_file.new > mv $ROOT/boot/grub/$menu_file.new $ROOT/boot/grub/$menu_file > ;; > - grub-pc) > + grub-pc|grub-efi) > if grep -q "^GRUB_TERMINAL=" $ROOT/etc/default/grub; then > sed -i $ROOT/etc/default/grub -e > "s/^\(GRUB_TERMINAL\)=.*/\1=serial/g" > else > > mr diff: finished (1 ok) -- Ever tried. Ever failed. No matter. Try again. Fail again. Fail better. ~ Samuel Beckett ~ -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

