2 ###APPNAME: diskimg-setup-grub2
4 ###APPDATE: 2008-10-07 04:15:35
6 ###APPDESC: setup grub2 on disk image
7 ###APPUSAGE: (diskImg file) [GrubDeviceMap]
8 ###APPEXAMPLE: diskimg-setup-grub2
11 use File
::Temp qw
/tempfile/;
12 #ENV variable MUST be defined somewhere,
13 #FOR perl to search modules from,
15 use lib
$ENV{XR_PERL_MODULE_DIR
};
17 use MyPlace
::Script
::Usage qw
/help_required help_even_empty/;
18 #exit 0 if(help_required($0,@ARGV));
19 exit 0 if(help_even_empty
($0,@ARGV));
22 die("File not exist:$diskimg\n") unless(-f
$diskimg);
24 #if($dmap && $dmap !~ m/^\s*\(?(:?hd|sd|fd)\d+$/) {
25 # unshift @ARGV,$dmap;
28 $dmap="hd0" unless($dmap);
29 $dmap =~ s/^\((.*)\)$/$1/;
31 my $ddmap = $dmap;$ddmap =~ s/,.*//g;
34 if($rdev =~ /^hd\d+/) {
35 $rdev = "$rdev,1" unless($rdev =~ /^hd\d+\s*,\s*\d+$/);
39 my $grubsetup="/usr/sbin/grub-setup";
40 my ($fh,$mapfile)=tempfile
();
41 print STDERR
"($ddmap) $diskimg\n";
42 print $fh "($ddmap) $diskimg\n";
46 my @args=("-v",@ARGV);
48 # push @args,"-c","./core.img";
50 #elsif(-f "../../../../../myplace/emuos/bootloader/grub2.img") {
51 # push @args,"-c","../../../../../myplace/emuos/bootloader/grub2.img";
53 #push @args,"-b","./boot.img" if(-f "./boot.img");
54 push @args,("-d","/myplace/emuos/bootloader/grub2");
55 push @args,("-m",$mapfile,"-r","($rdev)");
57 push @args,@ARGV,$diskimg;
58 print STDERR
join(" ",$grubsetup,@args),"\n";
59 system($grubsetup,@args);