home *** CD-ROM | disk | FTP | other *** search
/ Caldera Network Desktop 1.0 / caldera-network-desktop-1.0.bin / images / ramdisk2.img / usr / lib / perl / fdisk < prev    next >
Text File  |  1995-10-25  |  3KB  |  144 lines

  1. # Handles partitioning disks
  2.  
  3. sub partition_disks {
  4.     local ( $ret );
  5.  
  6.     if (! &rhs_yesno ( "Disk Partitions",
  7. <<EOM
  8. You must have one or more free partitions for your
  9. Linux filesystem.  In addition, you may want to create
  10. a swap partition.  If you have already created partitions
  11. for your new Linux system you can skip this step.
  12. >
  13. Do you need to partition your disks?
  14. >
  15. EOM
  16.               , 70)) {
  17.     return 1;
  18.     }
  19.  
  20.     if (! &rhs_yesno ( "Disk Partitions",
  21. <<EOM
  22. >
  23. If you will be using OS/2 on your system in addition
  24. to Linux, you must use the OS/2 partitioning
  25. software.  OS/2 will not recognize partitions created
  26. by the Linux partitioning software.
  27. >
  28. If you have not done this, choose the Reboot option,
  29. partition your drives with the OS/2 software, and
  30. restart the Red Hat installation.
  31. >
  32. Continue?
  33. >
  34. EOM
  35.               , 70)) {
  36.     return 0;
  37.     }
  38.  
  39.     &rhs_msgbox ( "Disk Partitions",
  40. <<EOM
  41. >
  42. Each partition used for the Linux filesystem must be set as
  43. type 83. Each partition used for a Linux swap partition
  44. must be set as type 82.
  45. >
  46. EOM
  47.          , 70);
  48.  
  49.     &_partition_disks;
  50. }
  51.  
  52. sub _partition_disks {
  53.     local ( $ret, $snarf, $disklist, $diskinfolist, $msg, $ent );
  54.  
  55.     $ret = &rhs_infobox ( "Disk Partitioning",
  56. <<EOM
  57. >
  58. Discovering what hard drives are attached to the system...
  59. >
  60. EOM
  61.                         , 70);
  62.  
  63.     @disklist = ();
  64.     @diskinfolist = ();
  65.     open(SAVEERR, ">&STDERR");
  66.     open(STDERR, ">/dev/null");
  67.     open(PROC, "fdisk -l |") || &newdie("Can't call fdisk!");
  68.     while (<PROC>) {
  69.         if (/^Disk (.*):(.*)$/) {
  70.             $disklist[@disklist] = $1;
  71.             $diskinfolist[@diskinfolist] = "$1:$2";
  72.         }
  73.     }
  74.     close PROC;
  75.     open(STDERR, ">&SAVEERR");
  76.  
  77.     $msg =
  78. <<EOM
  79. The following disks were found:
  80. >
  81. EOM
  82.     ;
  83.     foreach $ent (@diskinfolist) {
  84.         $msg .= ">" . $ent . "\n";
  85.     }
  86.  
  87.     while (1) {
  88.         if (! &rhs_menu("Disk Partitioning", $msg,
  89.             70, 3,
  90.             "fdisk", "Partition a disk with fdisk (command line)",
  91.             "cfdisk", "Partition a disk with cfdisk (full screen)",
  92.             "done", "Done with partitioning")) {
  93.         last;
  94.     }
  95.     last if ($dialog_result eq "done");
  96.         &partition_disk ("fdisk", @disklist) if ($dialog_result eq "fdisk");
  97.         &partition_disk ("cfdisk", @disklist) if ($dialog_result eq "cfdisk");
  98.     }
  99.  
  100.     &rhs_menu("Disk Partitioning",
  101. <<EOM
  102. >
  103. If fdisk (or cfdisk) complained about not being able
  104. to reload the partition tables, you should reboot now.
  105. >
  106. After rebooting skip the partitioning step and continue
  107. with the rest of the installation.
  108. >
  109. EOM
  110.           , 70, 2,
  111.           "Reboot", "Reboot now",
  112.           "Continue", "Continue the install process");
  113.  
  114.     exit(0) if ($dialog_result eq "Reboot");
  115.  
  116.     return 1;
  117. }
  118.  
  119. sub partition_disk {
  120.     local ( $fdisk, @disklist ) = @_;
  121.     local ( $ret );
  122.  
  123.     if (! &rhs_menul ( "Disk Partitioning",
  124. <<EOM
  125. >
  126. Which disk do you want to partition?
  127. >
  128. EOM
  129.               , 50, scalar(@disklist), @disklist)) {
  130.     return 1;
  131.     }
  132.  
  133.     if ($fdisk eq "fdisk") {
  134.         &invoke("fdisk $dialog_result");
  135.     } else {
  136.         &invoke("cfdisk $dialog_result");
  137.     }
  138.     print "\nHit enter to continue";
  139.     <STDIN>;
  140. }
  141.  
  142. ############
  143. 1;
  144.