From: Andrey Borzenkov <arvidjaar@gmail.com>
To: grub-devel@gnu.org
Subject: Re: booting btrfs
Date: Fri, 10 Jan 2014 22:23:38 +0400 [thread overview]
Message-ID: <20140110222338.02c17964@opensuse.site> (raw)
In-Reply-To: <52B90B83.3090104@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3856 bytes --]
В Tue, 24 Dec 2013 05:20:19 +0100
Vladimir 'φ-coder/phcoder' Serbinenko <phcoder@gmail.com> пишет:
> On 24.12.2013 04:43, Chris Murphy wrote:
> > d point. Your snapshot tool could first create a read only snapshot, then for no space
> > cost also create a rw snapshot of the read only one, then add the rw snapshot to the grub.cfg.
> > The tool could give the user the option to always "revert" the changes caused by booting a snapshot
> > - this would cause the rw snapshot being deleted and a new rw snapshot created from the read only one.
> I don't like the idea of constantly modifying grub.cfg.
> Points to consider:
> - core of GRUB be it in embedding area or efi executable isn't snapshottable
> - core and modules version have to match.
> - translations should match originating strings.
> Three together imply that snapshotting $prefix/$cpu-$platform is useless
> if not outright harmful. modules should reside either in .efi
> (mkstandalone way) or in a separate volume, never to be snapshotted.
> The path to this volume would be baked in core, so default volume
> changes won't create core/module mismatch.
>
This is true if we mandate that embedded core image is *the*
bootloader. But it can simply chainload core.img from $prefix which will
guarantee that core.img always matches its modules. This would allow
snapshot $prefix on grub update (or any grub change for that matter) to
have fallback case if anything goes wrong.
So this is similar to stage1.5, which also in principle could be
installed once and never changed.
> The configuration of master GRUB could have a list of all
> snapshots/distros/w/e
That exactly means "constantly modifying grub.cfg" on every
snapshot creation, unless I'm mistaken? :)
> (alternatively they could be listed at runtime)
> and source a grub.cfg from this snapshot (either directly or after user
> has chosen the submenu) setting some variable to indicate the path to
> snapshot. This slave grub.cfg would contain only entries.
>
This is a bit cumbersome today. Snapshot is done from master; and as
far as I understand from this discussion, most people like to avoid
special steps to prepare snapshot for booting. Which means that
snapshot contains exactly the same entries as master. We need to either
somehow filter entries, or change how grub configuration is generated.
Something like
grub-mkconfig --split
which creates separate configuration file for each script
in /etc/grub.d allowing master to selectively source (extract entries
from) only parts of it. Or always generate two different configs -
"master" and "slave".
BTW 30_os-prober will happily fetch boot entries from every existing
snapshot, presenting them all with identical names and "merging" all
boot entries from all snapshots because it generates the same menu id
(it includes only fs UUID, but no subvolume information).
> Configuration like themes and timeouts would be set on master level.
> In case of submenu it's possible to change resolution/theme/font and so
> on but it seems like only waste of time.
>
Another possibility would be to a) snapshot /boot/grub together with the
rest of / and b) chainload grub from snapshot. Then nothing needs
changing at all (except some small magic to set BTRFS subvolume at
runtime). The only problem here is to pass $prefix on chainloaded grub.
For EFI we get this almost for free, but for other platforms I'm not
sure. Could we pass this information as parameter when multiboot'ing
core.img?
> Init scripts will take care of creating rw clone of snapshot if necessarry.
>
> In this scenario you don't care what the default volume is, and that's
> the way it should be as single btrfs may contain several distributions
> but only one can own the default.
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2014-01-10 18:24 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-13 18:04 booting btrfs Chris Murphy
2013-10-13 19:47 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-13 20:59 ` Chris Murphy
2013-10-13 23:31 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-13 23:58 ` Chris Murphy
2013-10-14 5:28 ` Andrey Borzenkov
2013-10-14 18:39 ` Chris Murphy
2013-10-14 19:29 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-14 20:20 ` Chris Murphy
2013-10-16 2:50 ` Andrey Borzenkov
2013-10-16 3:37 ` Chris Murphy
2013-10-28 0:44 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-19 16:13 ` Andrey Borzenkov
2013-12-19 18:14 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-20 3:24 ` Chris Murphy
2013-12-20 9:46 ` Michael Chang
2013-12-20 12:21 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-20 14:54 ` Michael Chang
2013-12-20 15:10 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-24 2:26 ` Michael Chang
2013-12-21 4:38 ` Chris Murphy
2013-12-21 7:18 ` Andrey Borzenkov
2013-12-23 4:45 ` Chris Murphy
2013-12-23 4:52 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-23 5:32 ` Chris Murphy
2013-12-24 3:16 ` Chris Murphy
2013-12-24 2:29 ` Michael Chang
2013-12-24 2:26 ` Michael Chang
2013-12-24 3:43 ` Chris Murphy
2013-12-24 3:46 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-24 3:57 ` Chris Murphy
2013-12-24 4:20 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-24 6:12 ` Chris Murphy
2013-12-24 6:25 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-24 7:28 ` Michael Chang
2013-12-24 7:46 ` Andrey Borzenkov
2013-12-31 4:10 ` Michael Chang
2014-01-10 18:23 ` Andrey Borzenkov [this message]
2014-01-13 5:05 ` Michael Chang
2014-01-13 5:34 ` Andrey Borzenkov
2014-01-13 9:12 ` Michael Chang
2014-01-13 13:08 ` Andrey Borzenkov
2014-01-14 4:16 ` Michael Chang
2014-01-21 8:09 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-01-21 9:08 ` Michael Chang
2013-12-30 10:18 ` Michael Chang
2013-12-30 11:28 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-12-30 11:52 ` Andrey Borzenkov
2013-12-31 7:50 ` Michael Chang
2013-12-31 21:20 ` Chris Murphy
2014-01-02 5:17 ` Michael Chang
2014-01-07 17:55 ` Chris Murphy
2014-01-08 20:57 ` Chris Murphy
2014-01-09 10:03 ` Michael Chang
2014-01-09 19:29 ` Chris Murphy
2014-01-13 5:13 ` Michael Chang
2014-01-13 5:53 ` Chris Murphy
2013-12-31 4:02 ` Michael Chang
2013-10-14 20:45 ` Chris Murphy
2013-10-14 20:50 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-15 2:33 ` Andrey Borzenkov
2013-10-15 3:12 ` Chris Murphy
2013-10-15 16:58 ` Andrey Borzenkov
2013-10-15 19:47 ` Chris Murphy
2013-10-15 20:02 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-15 20:27 ` Chris Murphy
2013-10-16 2:45 ` Andrey Borzenkov
2013-10-16 3:30 ` Chris Murphy
2013-10-15 21:55 ` Chris Murphy
2013-10-14 21:01 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-14 23:09 ` Chris Murphy
2013-10-14 23:44 ` Chris Murphy
2013-10-15 2:44 ` Andrey Borzenkov
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140110222338.02c17964@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=grub-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.
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 NNTP newsgroup(s).