Merge lp://qastaging/~jibel/livecd-rootfs/add_multi_layered_squashfses_support into lp://qastaging/livecd-rootfs
Proposed by
Jean-Baptiste Lallement
Status: | Merged |
---|---|
Merge reported by: | Steve Langasek |
Merged at revision: | not available |
Proposed branch: | lp://qastaging/~jibel/livecd-rootfs/add_multi_layered_squashfses_support |
Merge into: | lp://qastaging/livecd-rootfs |
Diff against target: |
1242 lines (+808/-255) 7 files modified
debian/tests/default-bootstraps (+1/-0) live-build/auto/build (+137/-185) live-build/auto/clean (+2/-0) live-build/auto/config (+92/-64) live-build/functions (+198/-6) live-build/lb_binary_layered (+132/-0) live-build/lb_chroot_layered (+246/-0) |
To merge this branch: | bzr merge lp://qastaging/~jibel/livecd-rootfs/add_multi_layered_squashfses_support |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Steve Langasek | Needs Fixing | ||
Review via email:
|
Description of the change
Adds support for multi layer filesystem by generating one squashfs per layer and adding a new 'live-layered' image format.
squashfs are numbered so the order is preserved and mounted in order by casper.
Seeding of snap packages and seeds corresponding to the layers are not
available yet and will be proposed in the subsequent merge proposal.
To post a comment you must log in.
In passes, how does one specify multiple branches of stacks? Or is only a linear stack allowed by this code?
Cause the current subiquity images do not have `live` as the top of the stack.... They do this:
+--> Base +-----> Live
|
+-----> Rack +---> Region
Because I am expecting to have the ability to somehow specify what each pass depends on. But it looks like the base for a subsequent pass, is always the previous one?!
It would be nice to extend PASS syntax to optionally accept an arbitrary `base`, e.g.
PASSES="base rack region base:live" to encode the above graph, and such that `base:live` pass uses base as the lowerdir, instead of region (i.e. the previous pass result).
Or something...
not sure if : is acceptable pair delimiter here, or not.
Also not sure if we want to always enforce specifying `base` such that we can construct multiple root nodes in one go. E.g. `base base:rack rack:region base:live` or `:base rack region base:live` for the above graph.
Or like maybe always list all layers?! but that violates donot-repeat- yourself principle... E.g. `base base:rack base:rack:region base:live`
===
When calling includes/hooks are they aware which pass they are for? what is the source dir for each pass, for e.g. binary.includes? I'm guessing that PASS variable is set, but not sure.
===
filesystem.squashfs is somewhat is a special name, so it would be nice to keep that as the base one. And also possibly adjust logic in casper as to what it mounts by default.... cause e.g. i think i hide maas squashfes in a subdir, to prevent casper from mounting those, which is kind of a hack. I wonder if we do need to write out the valid stacks (passes?!), which casper can then use to boot to whichever stack is valid. With subiquity image this could then result in "Live Server, Live MAAS Rack, Live MAAS Region, Live Server with Installer" boot options. As example, for better or worse.
====
No idea if SUBPROJECT and IMAGE_FORMAT are the right things to extend for this..... and if they are easily extendable like this in launchpad livefs builders & ubuntu-cdimage codes.
Cause I can see the potential for using layers in SUBPROJECT= minimized, if for example, cpc builds are converted to layers they would have full and minimized layered builds.... and SUBPROJECT= minimized- layered sounds ugly =)
====
manifest diffs for layers is nice; cause in cpc we have struggled to consitently represent manifests / changelogs of "it's just like that image, but has this stuff on it"
====
packaging layers as actual static filesystems might be interesting, but i guess hooks will be able to do that anyway.
====
Overall, this looks ok, and shouldn't break any existing stuff - as long as we can clear the top level new extensions of
SUBPROJECT= layered live-layered
IMAGEFORMAT=
and that needs like an architect review.