# Copyright (C) 2005 Mandriva # Olivier Blin # Copyright (C) 2017-2018 Mageia # Martin Whitaker # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA. # SYNOPSIS # -------- # This package defines a set of alternative methods for mounting the loopback # filesystems when booting a Live system. 'volatile_squash_union' is the only # method that has been tested with drakiso. The other methods were inherited # from the original draklive and may no longer be needed. package MGA::DrakISO::Mounts; use strict; use MDK::Common; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(simple_union, squash_rw_union, squash_union, volatile_squash_union); our $dir_distrib_sqfs = { mountpoint => '/distrib', type => 'squashfs', path => '/distrib', # perl -MMDK::Common -e 'print map_index { (32767 - $::i) . " $_" } grep { !m,^/(?:dev|proc|sys|live/distrib), } uniq(<>)' < bootlog.list > config/distrib.sort sort => "config/distrib.sort", build_from => '/', }; my $dir_memory = { mountpoint => '/memory', type => 'tmpfs', mount_opts => 'mode=755', }; my $dir_modules = { mountpoint => '/modules', type => 'modules', path => '/modules', list => 'modules.lst', }; #- use distro default our $default = { dirs => [], }; our $simple_union = { root => '/union', overlay => 'overlay', dirs => [ { mountpoint => '/media', type => 'plain', }, $dir_memory, ], }; our $squash_rw_union = { root => '/union', overlay => 'overlay', dirs => [ $dir_distrib_sqfs, { mountpoint => '/media/system', type => 'plain', }, ], }; sub volatile_squash_union { my ($o_modules) = @_; { root => '/union', overlay => 'overlay', dirs => [ $dir_distrib_sqfs, if_($o_modules, $dir_modules), $dir_memory, ], }; } sub squash_union { my ($default_size, $o_min_size, $o_modules) = @_; { root => '/union', overlay => 'overlay', dirs => [ $dir_distrib_sqfs, if_($o_modules, $dir_modules), { mountpoint => '/system', type => 'loopfs', pre_allocate => $default_size, if_(defined $o_min_size, min_size => $o_min_size), fs => 'ext2', path => '/system' }, { mountpoint => '/system', type => 'tmpfs', fallback => 1, }, ], }; } 1;