Fix leaked file descriptors

When running prepare_grub_to_access_device inside of the here document a file
descriptor to a temporary file is leaked. When prepare_grub_to_access_device
calls various lvm related commands these will complain about this.

Minimum example:
<< EOF
"$(lvs)"
EOF

Avoid this by calling prepare_grub_to_access_device before assembling the
output.