mbox

[bug#41560,0/8] image: Add MBR based boot support.

Message ID 20200527072219.25576-1-othacehe@gnu.org
Headers show

Message

Mathieu Othacehe May 27, 2020, 7:22 a.m. UTC
Hello,

Until now, only Grub EFI bootloader was supported in (gnu system
image). Installing Grub EFI is as simple as copying a binary (created with
grub-mkstandalone) in a dedicated partition.

Now, for MBR based booting, one needs to run grub-install that does require
root permissions. To overcome this issue, I used a hack inspired from OpenWrt
and Buildroot.

As grub-install is in fact a wrapper around grub-mkimage and grub-bios-setup,
it is possible, with some plumbing and using those two tools, to install Grub
on a raw disk-image, without root permissions.

Thanks,

Mathieu

Mathieu Othacehe (8):
  bootloader: Add 'disk-image-installer'.
  bootloader: grub: Do not run grub-install when creating a disk-image.
  bootloader: grub: Use inheritance to define grub-minimal-bootloader.
  image: Add bootloader installation support.
  system: image: Correct genimage configuration file indentation.
  image: Use grub-efi to install the EFI bootloader.
  system: image: Fix image-with-os.
  image: Do not use VM to create disk-images.

 gnu/bootloader.scm      |   5 +-
 gnu/bootloader/grub.scm |  80 ++++++++++++++++++++++------
 gnu/build/image.scm     |   9 +++-
 gnu/ci.scm              |  20 +++----
 gnu/system/image.scm    | 113 ++++++++++++++++++----------------------
 gnu/tests/install.scm   |   8 +--
 guix/scripts/system.scm |  16 +++---
 guix/utils.scm          |   5 ++
 8 files changed, 155 insertions(+), 101 deletions(-)

Comments

Janneke Nieuwenhuizen May 27, 2020, 8:09 a.m. UTC | #1
Mathieu Othacehe writes:

Hello Mathieu,

> Until now, only Grub EFI bootloader was supported in (gnu system
> image). Installing Grub EFI is as simple as copying a binary (created with
> grub-mkstandalone) in a dedicated partition.
>
> Now, for MBR based booting, one needs to run grub-install that does require
> root permissions. To overcome this issue, I used a hack inspired from OpenWrt
> and Buildroot.
>
> As grub-install is in fact a wrapper around grub-mkimage and grub-bios-setup,
> it is possible, with some plumbing and using those two tools, to install Grub
> on a raw disk-image, without root permissions.

Thanks for your amazing piece of work on disk-image; for me this means
adding GNU/Hurd support much sooner than I could hope for!

What can I say, not only LGTM, but also WFM (on a soon-to-be-reset
wip-hurd-vm).

Greetings,
Janneke
Ludovic Courtès May 28, 2020, 9:32 p.m. UTC | #2
Hi,

Mathieu Othacehe <m.othacehe@gmail.com> skribis:

> Until now, only Grub EFI bootloader was supported in (gnu system
> image). Installing Grub EFI is as simple as copying a binary (created with
> grub-mkstandalone) in a dedicated partition.
>
> Now, for MBR based booting, one needs to run grub-install that does require
> root permissions. To overcome this issue, I used a hack inspired from OpenWrt
> and Buildroot.
>
> As grub-install is in fact a wrapper around grub-mkimage and grub-bios-setup,
> it is possible, with some plumbing and using those two tools, to install Grub
> on a raw disk-image, without root permissions.

Amazing!  This is really cool, thank you!

Looking in more detail at the rest now…

Ludo’.