summaryrefslogtreecommitdiffstats
path: root/draklive
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2008-09-25 09:47:16 +0000
committerOlivier Blin <oblin@mandriva.com>2008-09-25 09:47:16 +0000
commit189716d24f6d544bf91c7df4220e786abf256067 (patch)
tree228197afe2ea4556abda0fd7fafe78fd27f4c7a4 /draklive
parent37e60c5a311a4ce954727c6dc0f4b48e70672c71 (diff)
downloaddrakiso-189716d24f6d544bf91c7df4220e786abf256067.tar
drakiso-189716d24f6d544bf91c7df4220e786abf256067.tar.gz
drakiso-189716d24f6d544bf91c7df4220e786abf256067.tar.bz2
drakiso-189716d24f6d544bf91c7df4220e786abf256067.tar.xz
drakiso-189716d24f6d544bf91c7df4220e786abf256067.zip
extract allocate_master (to be reused for replicator images)
Diffstat (limited to 'draklive')
-rwxr-xr-xdraklive29
1 files changed, 16 insertions, 13 deletions
diff --git a/draklive b/draklive
index b510bce..d75db14 100755
--- a/draklive
+++ b/draklive
@@ -1295,23 +1295,16 @@ sub get_disk_master_path {
get_builddir($live) . $live->{prefix}{build}{dist} . '/' . get_live_name($live) . '.img';
}
-sub create_disk_master {
- my ($live, $opts) = @_;
- my $dest = get_disk_master_path($live);
+sub allocate_master {
+ my ($dest, $size, $fs) = @_;
mkdir_p(dirname($dest));
- #- dumb guess, a bit too large, and valid for FAT only
- my $part_size = @{$live->{mount}{dirs} || []} ?
- (directory_usage(get_builddir($live) . $live->{prefix}{build}{loopbacks}) +
- directory_usage(get_builddir($live) . $live->{prefix}{build}{boot})) :
- directory_usage(get_system_root($live));
-
my $heads = 16;
my $sectors_per_track = 63;
my $sector_size = 512;
my $track_size = $sector_size * $sectors_per_track;
my $cylinder_size = $track_size * $heads;
- my $disk_size = 500000000 + $part_size + $track_size;
+ my $disk_size = $size + $track_size;
my $cylinders = int($disk_size / $cylinder_size);
device_allocate_file($dest, $disk_size);
@@ -1339,14 +1332,24 @@ EOF
my $loop = devices::find_free_loop();
run_('losetup', '-o', $part_start * $sector_size, '-s', $part_nb_sectors * $sector_size, $loop, $dest)
or die "unable to setup loop device";
+ device_mkfs($loop, $fs) or die "unable to format $dest\n";
+
+ return $loop;
+}
- device_mkfs($loop, get_media_setting($live->{media}, 'fs'))
- or die "unable to format $dest\n";
+sub create_disk_master {
+ my ($live, $opts) = @_;
+ my $dest = get_disk_master_path($live);
+ #- dumb guess, a bit too large, and valid for FAT only
+ my $part_size = @{$live->{mount}{dirs} || []} ?
+ (directory_usage(get_builddir($live) . $live->{prefix}{build}{loopbacks}) +
+ directory_usage(get_builddir($live) . $live->{prefix}{build}{boot})) :
+ directory_usage(get_system_root($live));
+ my $loop = allocate_master($dest, 500000000 + $part_size, get_media_setting($live->{media}, 'fs'));
local $opts->{device} = $loop;
local $opts->{disk_device} = $dest;
record_master($live, $opts);
-
run_('losetup', '-d', $loop);
}