#/usr/bin/perl use strict; use warnings; my ($filename,$size)=@ARGV; &usage unless $filename; &usage unless $size=~/^\d+$/; &createdisk($filename,$filename."-flat.vmdk",$size); sub usage { print "USAGE: $0 filename(no extention) size(megabytes)\n"; exit; } sub createdisk { my ($filename,$flatfilename,$megabytes)=@_; my $heads=16; my $sectors=63; $flatfilename="$filename-flat.vmdk" unless ($flatfilename); my $cid=sprintf("%04X%04X",rand(0x0FFFF),rand(0x0FFFF)); my $bytes=$megabytes*1024*1024; my $allsectors=int($bytes/512); $bytes=$allsectors*512; my $cylinders=int($allsectors/$heads/$sectors); my $vmdk=<<"__EOL__"; # Disk DescriptorFile version=1 CID=$cid parentCID=ffffffff createType="monolithicFlat" # Extent description RW $allsectors FLAT "$flatfilename" 0 # The Disk Data Base #DDB ddb.virtualHWVersion = "4" ddb.geometry.cylinders = "$cylinders" ddb.geometry.heads = "$heads" ddb.geometry.sectors = "$sectors" ddb.adapterType = "ide" __EOL__ open(my $fh,'>',"$filename.vmdk"); print $fh $vmdk; print "\nplease make blank image file.\n\n"; print "Windows: fsutil file createnew $flatfilename $bytes\n"; print "UNIX: dd if=/dev/zero of=$flatfilename bs=1048576 count=$megabytes\n"; print "\n"; }