unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Mathieu Othacehe <m.othacehe@gmail.com>
To: guix-devel <guix-devel@gnu.org>
Subject: Use genimage for disk-image creation.
Date: Wed, 25 Mar 2020 14:18:01 +0100	[thread overview]
Message-ID: <87eetgo9o6.fsf@gmail.com> (raw)


Hello,

I recently spent some time generating a lot of Guix System disk-images
(embedded system images, installation tests). The mechanism Guix and Nix
are using: spawning a VM to create the disk-image does not scale at all
when the disk-image size increase.

So, I looked at what the competition does. Buildroot is using
genimage[1] to generate disk-images. Yocto is using wic[2], that's based
on mic[3]. Both are able to create disk-images as unprivileged users,
without resorting to VM.

While, Yocto solution is tied to the rest of their framework, genimage
is standalone. In fact, Danny has already packaged it and made some
research about it.

I think we could use genimage to replace our current mechanism to
generate disk-images. Here's a small proof of concept.

Let say I want to create a disk-image with one ext4 partition starting
at offset 10M. I can write the following genimage config file:

--8<---------------cut here---------------start------------->8---
image system {
	hdimage {}

	partition rootfs {
		partition-type = 0x83
		image = "rootfs.ext4"
		size = 8G
		offset = 10M
	}
}

image rootfs.ext4 {
        name = "rootfs"
        ext4 {
                label = "rootfs"
		use-mke2fs = true
        }
        size = 8G
        mountpoint = "/"
}
--8<---------------cut here---------------end--------------->8---

and run the command:

--8<---------------cut here---------------start------------->8---
fakeroot genimage --config ~/tmp/genimage.cfg --rootpath=/home/mathieu/image-root/
--8<---------------cut here---------------end--------------->8---

where image-root is a directory containing the result of a `guix system
init`. The directory size is about 6GiB.

It takes 8 minutes to generate this disk-image, versus 2h30 using `guix
system disk-image`.

I'm aware that this might not be a fair comparison but, I think its
already significant.

Danny, Ludo, WDYT? Could we modify "system-disk-image" to use genimage
as a backend instead of spawning a VM?

Thanks,

Mathieu

[1]: https://github.com/pengutronix/genimage
[2]: https://www.yoctoproject.org/docs/2.4.2/dev-manual/dev-manual.html#creating-partitioned-images-using-wic
[3]: https://source.tizen.org/documentation/reference/mic-image-creator
[4]: https://lists.gnu.org/archive/html/guix-devel/2019-09/msg00009.html

             reply	other threads:[~2020-03-25 13:18 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-25 13:18 Mathieu Othacehe [this message]
2020-03-26  9:55 ` Use genimage for disk-image creation Vincent Legoll
2020-03-26 10:18   ` Efraim Flashner
2020-03-28 20:47   ` Mathieu Othacehe
2020-03-28 21:25     ` Vincent Legoll
2020-03-26 14:19 ` Ludovic Courtès
2020-03-26 15:01   ` Vincent Legoll
2020-03-29 18:13   ` Mathieu Othacehe
2020-03-26 23:24 ` Danny Milosavljevic
2020-03-29 14:44   ` Ludovic Courtès
2020-03-29 15:07     ` Danny Milosavljevic
2020-03-29 19:06       ` Vagrant Cascadian
2020-03-31 15:24         ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87eetgo9o6.fsf@gmail.com \
    --to=m.othacehe@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).