Changeset 1565 in MondoRescue for branches/2.2.5/mindi/parted2fdisk.pl
- Timestamp:
- Jul 25, 2007, 3:38:42 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.5/mindi/parted2fdisk.pl
r725 r1565 7 7 # 8 8 # Aims to be architecture independant (i386/ia64) 9 # Tested on RHAS 2.1 ia64 - Mandrake 9.0 ia64 - RHAS 3.0 ia64 9 # Tested on RHAS 2.1 ia64 - Mandrake 9.0 ia64 - RHAS 3.0 ia64 - SLES 10 10 10 # 11 11 # (c) Bruno Cornec <Bruno.Cornec@hp.com> … … 36 36 my %end; 37 37 my %type; 38 my %flags;39 38 my $arch; 40 39 my $fake = 0; … … 74 73 "ext2" => "83", 75 74 "ext3" => "83", 75 "reiserfs" => "83", 76 76 "linux-swap" => "82", 77 77 "LVM" => "8e", … … 194 194 if ($cylend =~ /^\+/) { 195 195 $cylend =~ s/^\+//; 196 if ($cylend =~ /K$/) { 197 $cylend =~ s/K$//; 198 $cylend *= 1024; 199 } elsif ($cylend =~ /M$/) { 200 $cylend =~ s/M$//; 201 $cylend *= 1048576; 202 } elsif ($cylend =~ /G$/) { 203 $cylend =~ s/G$//; 204 $cylend *= 1073741824; 205 } 196 # Handles suffixes; return bytes 197 $cylend = decode_Bsuf($cylend,1); 206 198 # This gives the number of cyl 207 199 $cylend /= $un; … … 342 334 "ext2" => "Linux", 343 335 "ext3" => "Linux", 336 "reiserfs" => "Linux", 344 337 "linux-swap" => "Linux swap", 345 338 "LVM" => "Linux LVM", … … 356 349 my $cmt; 357 350 format FLOG1 = 358 @<<<<<<<<<<<< @>>>>>>>> @>>>>>>>> @>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<351 @<<<<<<<<<<<< @>>>>>>>>>> @>>>>>>>>>> @>>>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<< 359 352 $part, $mstart, $mend, $length, $pid, $cmt 360 353 . … … 362 355 @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 363 356 $part, 364 @>>>>>>>> @>>>>>>>> @>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<357 @>>>>>>>>>> @>>>>>>>>>> @>>>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<< 365 358 $mstart, $mend, $length, $pid, $cmt 366 359 . 367 360 format STDOUT1 = 368 @<<<<<<<<<<<< @>>>>>>>> @>>>>>>>> @>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<361 @<<<<<<<<<<<< @>>>>>>>>>> @>>>>>>>>>> @>>>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<< 369 362 $part, $mstart, $mend, $length, $pid, $cmt 370 363 . … … 372 365 @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 373 366 $part, 374 @>>>>>>>> @>>>>>>>> @>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<367 @>>>>>>>>>> @>>>>>>>>>> @>>>>>>>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<< 375 368 $mstart, $mend, $length, $pid, $cmt 376 369 . 377 #/dev/hda1 1 77579 39099374+ ee EFI GPT 370 # Device Boot Start End Blocks Id System 371 #/dev/hda1 1 77579 39099374+ ee EFI GPT 372 378 373 379 374 # … … 386 381 387 382 # This will return MB 388 get_parted ($device,$start,$end,\%type ,\%flags);383 get_parted ($device,$start,$end,\%type); 389 384 390 385 while (($n,$d) = each %type) { … … 395 390 $mstart = sprintf("%d",$$start{$n}*1048576/$un); 396 391 $mstart = 1 if ($mstart < 1); 392 $mstart = $endmax if ($mstart > $endmax); 397 393 $mend = sprintf("%d",$$end{$n}*1048576/$un - 1); 398 394 $mend = $endmax if ($mend > $endmax); 395 $mend = 1 if ($mend < 1); 399 396 # length is in 1K blocks 400 397 $length = sprintf("%d",($mend-$mstart+1)*$un/1024); … … 486 483 # 487 484 # Parted gives info in MB 485 # (depending on versions - 1.6.25.1 provides suffixes) 488 486 # 489 487 sub get_parted { … … 493 491 my $end = shift; 494 492 my $type = shift; 495 my $ flags = shift;493 my $void; 496 494 my $d; 497 495 my $n; 496 my $ret; 497 my $mode; 498 my $size; 499 500 open (PARTED, "$parted -v |") || die "Unable to read from $parted"; 501 $d = <PARTED>; 502 print FLOG "$d"; 503 close(PARTED); 498 504 499 505 open (PARTED, "$parted -s $device print |") || die "Unable to read from $parted"; … … 502 508 $d = <PARTED>; 503 509 $d = <PARTED>; 510 511 # depending on parted version, information given change: 512 if ($d =~ /\bSize\b/) { 513 # SLES 10 parted >= 1.6.25 514 $mode=1; 515 } else { 516 # RHEL 3 parted <= 1.6.3 517 $mode=0; 518 } 519 print FLOG "mode: $mode\n"; 504 520 print FLOG "Got from parted: \n"; 505 print FLOG "Minor Start End Filesystem Flags\n";521 print FLOG "Minor Start End Filesystem\n"; 506 522 # Get info from each partition line 507 523 while (($n,$d) = split(/\s/, <PARTED>,2)) { … … 510 526 $d =~ s/^\s*//; 511 527 $d =~ s/\s+/ /g; 512 ($$start{$n},$$end{$n},$$type{$n},$$flags{$n}) = split(/ /,$d); 528 if ($mode == 0) { 529 ($$start{$n},$$end{$n},$$type{$n},$void) = split(/ /,$d); 530 } elsif ($mode == 1) { 531 ($$start{$n},$$end{$n},$size,$$type{$n},$void) = split(/ /,$d); 532 } else { 533 die "Undefined mode $mode"; 534 } 513 535 $$start{$n} = "" if (not defined $$start{$n}); 514 536 $$end{$n} = "" if (not defined $$end{$n}); 515 537 $$type{$n} = "" if (not defined $$type{$n}); 516 $$flags{$n} = "" if (not defined $$flags{$n}); 517 print FLOG "$n $$start{$n} $$end{$n} $$type{$n} $$flags{$n}\n"; 538 # Handles potential suffixes in latest parted version. Return MB 539 $ret = decode_Bsuf($$start{$n},1048576); 540 $$start{$n} = $ret; 541 $ret = decode_Bsuf($$end{$n},1048576); 542 $$end{$n} = $ret; 543 print FLOG "$n $$start{$n} $$end{$n} $$type{$n}\n"; 518 544 } 519 545 close(PARTED); 520 546 } 547 548 sub decode_Bsuf { 549 550 my $size = shift; 551 my $unit = shift; 552 my $ret = 0; 553 554 #print FLOG "decode_Bsuf input: $size / $unit "; 555 if ($size =~ /KB$/i) { 556 $size =~ s/KB$//i; 557 $size *= 1024; 558 } elsif ($size =~ /MB$/i) { 559 $size =~ s/MB$//i; 560 $size *= 1048576; 561 } elsif ($size =~ /GB$/i) { 562 $size =~ s/GB$//i; 563 $size *= 1073741824; 564 } elsif ($size =~ /TB$/i) { 565 $size =~ s/TB$//i; 566 $size *= 1099511627776; 567 } else { 568 # Nothing to do 569 } 570 $ret = $size / $unit; 571 #print FLOG " - output : $size => $ret\n"; 572 return($ret); 573 } 574 521 575 522 576 # Based on Version 2.4 27-Sep-1996 Charles Bailey bailey@genetics.upenn.edu
Note:
See TracChangeset
for help on using the changeset viewer.