Bug#767037: Grub EFI fallback - patches for review
Steve McIntyre
steve at einval.com
Wed Dec 3 16:18:28 UTC 2014
On Wed, Dec 03, 2014 at 09:44:08AM +0000, Ian Campbell wrote:
>On Wed, 2014-12-03 at 02:10 +0000, Steve McIntyre wrote:
>> >
>> >> +mountvirtfs () {
>> >> + fstype="$1"
>> >> + path="$2"
>> >> + if grep -q "[[:space:]]$fstype\$" /proc/filesystems && \
>> >> + ! grep -q "^[^ ]\+ \+$path " /proc/mounts; then
>> >> + mkdir -p "$path" || \
>> >> + die grub-installer/mounterr "Error creating $path"
>> >> + mount -t "$fstype" "$fstype" "$path" || \
>> >> + die grub-installer/mounterr "Error mounting $path"
>> >> + trap "umount $path" HUP INT QUIT KILL PIPE TERM EXIT
>> >
>> >trap doesn't stack, does it? You call mountvirtfs twice, so only the
>> >second umount will actually happen on error.
>>
>> True. This (buggy) code is already in use elsewhere in grub-installer,
>> I've just borrowed it. :-/
>
>Hrm, yes.
A more generic fix would be to add to a list of filesystems that need
unmounting, and trap to a new shell function that unmounts that
list. Not too hard, I think - I'll see if I can do that and get it
tested today.
Frankly, I'd also like to move mountvirtfs and that new function over
to a more central d-i scripts location and cut down on the duplicated
code. That's definitely something for post-jessie, as it's going to
potentially cut across a lot of the d-i packages.
>> Right. I've absolutely *no* idea how well any of the existing EFI
>> stuff will work with BSD...!
>
>Me neither.
Again, I'm tempted to leave that alone for now then.
>> >The main invocation would invoke this with a --target="foo-efi". Not
>> >sure if this matters or not.
>>
>> Nope, the code in grub-install already picks up on the right platform
>> by default. I could add this too, but I'm not convinved it's necessary.
>
>Lets leave it then.
Agreed.
>> >In order to avoid having to repeat all the logic twice perhaps you could
>> >arrange to do the debconf-set-selections thing first and then run
>> >dpkg-reconfigure or something in the target to force the main postinst
>> >to rerun and reinstall?
>>
>> Maybe, yeah. I'll take a look.
>>
>> >> + db_input critical grub-installer/grub-install-failed || true
>> >> + db_go || true
>> >> + db_progress STOP
>> >> + exit 1
>> >
>> >You don't umount /target/boot/efi on this path.
>>
>> Correct, and that's definitely wanted.
>
>The unmount is wanted or the leaving of /boot/efi mounted is? (I could
>see an argument either way actually).
I need to make sure that /target/boot/efi is unmounted; otherwise
exiting and re-entering the rescue menu fails.
Updated patch coming soon...
--
Steve McIntyre, Cambridge, UK. steve at einval.com
Support the Campaign for Audiovisual Free Expression: http://www.eff.org/cafe/
More information about the Pkg-grub-devel
mailing list