From 85ff78d269cbd31ad2a6eeb952f3cce8a17fb330 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 29 Oct 2008 00:10:13 +0000 Subject: move overlay data in MDV::Draklive::Overlay --- draklive | 17 ----------------- lib/MDV/Draklive/Initrd.pm | 5 +++-- lib/MDV/Draklive/Overlay.pm | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 lib/MDV/Draklive/Overlay.pm diff --git a/draklive b/draklive index 2dd304f..3631b00 100755 --- a/draklive +++ b/draklive @@ -178,23 +178,6 @@ my %storage = ( }, ); -my %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}'"; - }, - }, -); - sub get_syslinux_path { my ($media, $opts) = @_; '/' . $media->{storage} . '/syslinux' . ($opts->{boot} && '-boot-' . $opts->{boot}) . '.cfg'; diff --git a/lib/MDV/Draklive/Initrd.pm b/lib/MDV/Draklive/Initrd.pm index 95755b6..9d4bb0b 100644 --- a/lib/MDV/Draklive/Initrd.pm +++ b/lib/MDV/Draklive/Initrd.pm @@ -6,6 +6,7 @@ use list_modules; use MDV::Draklive::Utils; use MDV::Draklive::StorageFS; use MDV::Draklive::Loopback; +use MDV::Draklive::Overlay; sub nls_modules { my ($live) = @_; @@ -122,7 +123,7 @@ sub create_initrd_for_media { $media->get_media_fs_module, @{$media->get_media_setting('extra_modules') || []}, (map { @{$loop_types{$_}{modules} || []} } uniq(map { $_->{type} } @{$live->{mount}{dirs} || []})), - ($live->{mount}{overlay} ? @{$overlay{$live->{mount}{overlay}}{modules} || []} : ()); + ($live->{mount}{overlay} ? @{$MDV::Draklive::Overlay::overlay{$live->{mount}{overlay}}{modules} || []} : ()); my @additional_modules = map { if_(m!([^/]+)\.ko(?:\.gz)?!, list_modules::filename2modname($1)) } @{$live->{system}{additional_modules}}; @$extra_modules = difference2($extra_modules, \@additional_modules); @@ -200,7 +201,7 @@ sub create_initrd_scriptlet { "showlabels --removable", MDV::Draklive::StorageFS::get_mount($fs)->($live, $media), (map { $loop_types{$_->{type}}{mount}->($live, $_) } @$mount_first, @$mount_last), - ($live->{mount}{overlay} ? $overlay{$live->{mount}{overlay}}{mount}->($live) : ()), + ($live->{mount}{overlay} ? $MDV::Draklive::Overlay::overlay{$live->{mount}{overlay}}{mount}->($live) : ()), if_($live->{system}{initrd_pre_pivot}, deref_array($live->{system}{initrd_pre_pivot})), qq(splashy_update "chroot $target"), "echo 0x0100 > /proc/sys/kernel/real-root-dev", 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; -- cgit v1.2.1