diff options
Diffstat (limited to 'lib/MDV/Draklive/Overlay.pm')
-rw-r--r-- | lib/MDV/Draklive/Overlay.pm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/MDV/Draklive/Overlay.pm b/lib/MDV/Draklive/Overlay.pm new file mode 100644 index 0000000..50b9cdd --- /dev/null +++ b/lib/MDV/Draklive/Overlay.pm @@ -0,0 +1,22 @@ +package MDV::Draklive::Overlay; + +use MDV::Draklive::Loopback; + +our %overlay = ( + unionfs => { + modules => [ qw(unionfs) ], + mount => sub { + my ($live) = @_; + #- build dirs list: "dir1=ro:dir2:ro:dir3=rw" + my $dirs = join(':', + map { + $_->{list} ? "\$(cat $live->{prefix}{live}{mnt}/$_->{list})" : + "$live->{prefix}{live}{mnt}$_->{mountpoint}=" . + (!$loop_types{$_->{type}}{read_only} && !$_->{read_only} ? 'rw' : 'ro'); + } reverse grep { !$_->{fallback} } @{$live->{mount}{dirs} || []}); + "sh -c 'mount -o dirs=$dirs -t unionfs unionfs $live->{prefix}{live}{mnt}$live->{mount}{root}'"; + }, + }, +); + +1; |