unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jookia <166291@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] DISCUSSION: Jookia's Libreboot+LUKS+LVM FDE patch.
Date: Sat, 12 Mar 2016 03:42:36 +1100	[thread overview]
Message-ID: <20160311164236.GB28593@novena-choice-citizen.lan> (raw)
In-Reply-To: <871t7h140d.fsf@gnu.org>

On Fri, Mar 11, 2016 at 03:30:10PM +0100, Ludovic Courtès wrote:
> Jookia <166291@gmail.com> skribis:
> 
> > I'd really like to discuss how much I needed to break to get the mapped-devices,
> > file-systems and swap-devices to just 'work'. I even had to make a function to
> > return a mapped-device type, and have swap-devices not do dependency tests since
> > I technically don't use a device I've defined.
> >
> > It'd be much much better if I could do something like this in my services:
> >
> >   (devices (list (file-system
> >                    (uses '("/dev/matrix/root"))
> >                    (creates '("/"))
> >                    (device "/dev/matrix/root")
> >                    (mount-point "/")
> >                    (type "ext4"))
> >                  (swap-device
> >                    (uses '("/dev/mapper/matrix-swap"))
> >                    (creates '()))
> >                    (device "/dev/mapper/matrix-swap")
> >                  (lvm-device
> >                    (uses '("/dev/mapper/hdd" "/dev/sdb"))
> >                    (creates '("/dev/matrix/"
> >                               "/dev/mapper/matrix-swap"))
> >                    (devices '("/dev/mapper/hdd" "/dev/sdb")))
> >                  (luks-device
> >                    (uses '("UUID=4dab5feb-d176-45de-b287-9b0a6e4c01cb"))
> >                    (creates '("/dev/mapper/hdd"))
> >                    (device "UUID=4dab5feb-d176-45de-b287-9b0a6e4c01cb")
> >                    (name "hdd")
> >                    (key-file "..."))))
> >
> > The issue is that it has a lot of duplicate information as I'm not sure
> > uses/creates could always map to device/mount-point, like LUKS names. But this
> > should satisfy most dependency issues automatically, I hope.
> 
> There are several issues being addressed here, IIUC:
> 
>   1. How to refer to block devices (in the Unix sense) using UUIDs,
>      labels, or /dev file names in general, and not just for
>      ‘file-system’.

Yes, this is one of the major problems.

>   2. How to determine dependencies among all these things.

Shouldn't be too hard if we have inputs and outputs for each.

>   3. How to handle mapped devices that lead to several /dev nodes, as is
>      the case with LVM.

Well, it's a bit more complex than that. We end up with filesystems that use
multiple devices too, like Btrfs.

I was also showing another point: It'd be nicer to have file-system,
swap-device, lvm-device, luks-device as functions rather than data structures.
I was a bit tired when writing and realized later on that the functions could
automatically create the uses/creates stuff as output. I'll show another
hypothetical, though I see interest in keeping the existing way.

> For #1, I would like to have a general ‘device’ type, so one could
> write:
> 
>   (operating-system
>     ;; …
>     (file-systems (list (file-system
>                           (source (device (title 'label)
>                                           (name "my-root")))
>                           (mount-point "/"))))
>     (swap (list (device
>                   (title 'uuid)
>                   (name (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))))
> 
> For that to work, we ideally need code to recognize swap signatures,
> similar to what we do for ext2 in (gnu build file-systems).

This would work, but not all file-systems use devices. Bind/union mounts, for
one, which is why having them as paths would be perhaps easier to resolve. I'm
skeptical we could have a single file-system data structure that could account
for all this, which is why I'd much rather like functions that output stuff:

  (devices (list (file-system
                   #:device "/dev/matrix/root"
                   #:mount-point "/"
                   #:type "ext4")
                 (swap-device
                   #:device "/dev/mapper/matrix-swap")
                 (lvm-device
                   #:targets '("/dev/matrix/"
                              "/dev/mapper/matrix-swap")
                   #:devices (list "/dev/mapper/hdd" "/dev/sdb"))
                 (luks-device
                   #:device "UUID=4dab5feb-d176-45de-b287-9b0a6e4c01cb"
                   #:name "hdd"
                   #:key-file "...")))

which could output this tree:

  (devices (list (device
                   (uses '("/dev/matrix/root"))
                   (creates '("/"))
                   (init-function ...)
                   (destroy-function ...))
                 (swap-device
                   (uses '("/dev/mapper/matrix-swap"))
                   (creates '()))
                   (init-function ...)
                   (destroy-function ...))
                 (lvm-device
                   (uses '("/dev/mapper/hdd" "/dev/sdb"))
                   (creates '("/dev/matrix/"
                              "/dev/mapper/matrix-swap"))
                   (init-function ...)
                   (destroy-function ...))
                 (luks-device
                   (uses '("UUID=4dab5feb-d176-45de-b287-9b0a6e4c01cb"))
                   (creates '("/dev/mapper/hdd"))
                   (init-function ...)
                   (destroy-function ...)))

Though this is a bit of a dream in my case.

> For #2, I’m not sure we need to change anything, but let’s discuss it
> later.  :-)

Hmm, okay.

There also a small issue where mapped devices need more data in special cases,
like LUKS keyfiles which returns a function to create the type.

> Ludo’.

Jookia.

  reply	other threads:[~2016-03-11 16:45 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-10  0:36 [PATCH] DISCUSSION: Jookia's Libreboot+LUKS+LVM FDE patch Jookia
2016-03-10  7:48 ` Taylan Ulrich Bayırlı/Kammer
2016-03-10 12:36   ` Jookia
2016-03-10 16:10 ` Ludovic Courtès
2016-03-10 21:11   ` Jookia
2016-03-11 14:30     ` Ludovic Courtès
2016-03-11 16:42       ` Jookia [this message]
2016-03-15 14:40         ` Ludovic Courtès
2016-03-16  1:23           ` Jookia
2016-03-14 21:40       ` Jean Louis
  -- strict thread matches above, loose matches on Subject: below --
2016-03-10  0:36 Jookia

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=20160311164236.GB28593@novena-choice-citizen.lan \
    --to=166291@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@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).