diff options
author | Olivier Blin <oblin@mandriva.com> | 2008-09-25 09:47:16 +0000 |
---|---|---|
committer | Olivier Blin <oblin@mandriva.com> | 2008-09-25 09:47:16 +0000 |
commit | 189716d24f6d544bf91c7df4220e786abf256067 (patch) | |
tree | 228197afe2ea4556abda0fd7fafe78fd27f4c7a4 /draklive | |
parent | 37e60c5a311a4ce954727c6dc0f4b48e70672c71 (diff) | |
download | drakiso-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-x | draklive | 29 |
1 files changed, 16 insertions, 13 deletions
@@ -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); } |