home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / inst_startup.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  162 lines

  1. /**
  2.  * Module:        inst_startup.ycp
  3.  *
  4.  * Authors:        Mathias Kettner <kettner@suse.de>
  5.  *            Klaus Kaempf <kkaempf@suse.de> (initial)
  6.  *            Stefan Hundhammer <sh@suse.de> (UI)
  7.  *
  8.  * Purpose:
  9.  * This module does the startup:
  10.  * - Set hostname and domainname
  11.  * - Determine architecture and boot mode
  12.  * - Find controllers and status enabled/disabled
  13.  * - Probe all controllers for disks
  14.  * - Probe all disks for partition data
  15.  *
  16.  * $Id: inst_startup.ycp 33279 2006-10-09 14:16:49Z locilka $
  17.  */
  18.  
  19. {
  20.     textdomain "installation";
  21.  
  22.     import "Arch";
  23.     import "Installation";
  24.  
  25.     import "Hotplug";
  26.     import "StorageControllers";
  27.     import "StorageDevices";
  28.     import "Kernel";        // call constructor, extract cmdline
  29.     import "Report";
  30.  
  31.     y2milestone("inst_startup START");
  32.  
  33.  
  34.  
  35.     boolean popup_open = false;
  36.     /**
  37.      * Show feedback message in a simple dialog.
  38.      * @param msg message to show
  39.      **/
  40.     define void showFeedback( string msg ) ``{
  41.     if ( popup_open )
  42.     {
  43.         UI::CloseDialog();
  44.     }
  45.  
  46.     /**
  47.      * The UI normally changes the X cursor to a busy cursor anyway if the
  48.      * YCP application isn't ready to process user input (i.e. outside
  49.      * UI::UserInput()), but some hardware probings seem to interfere with
  50.      * the X cursor. Thus, let's make sure we really have a busy cursor
  51.      * while the probings are performed. Setting the busy cursor once more
  52.      * doesn't hurt in any case.
  53.      **/
  54.     UI::BusyCursor();
  55.  
  56.     UI::OpenDialog( `VBox( `Label( msg ) ) );
  57.     y2milestone( msg );
  58.     popup_open = true;
  59.     };
  60.  
  61.  
  62.     /**
  63.      * Close feedback dialog if it is open
  64.      **/
  65.     define void clearFeedback() ``{
  66.     if ( popup_open )
  67.         UI::CloseDialog();
  68.     };
  69.  
  70.  
  71.     // --------------------------------------------------------------
  72.     //                      USB
  73.     // --------------------------------------------------------------
  74.  
  75.     if (!(Arch::s390 () || Arch::board_iseries ()))
  76.     {
  77.         // give user feedback what's happening
  78.     showFeedback( _("Probing USB devices") );
  79.     Hotplug::StartUSB ();
  80.     }
  81.  
  82.     // --------------------------------------------------------------
  83.     //                FireWire (ieee1394)
  84.     // --------------------------------------------------------------
  85.  
  86.     if (!(Arch::s390 () || Arch::board_iseries ()))
  87.     {
  88.         // give user feedback what's happening
  89.     showFeedback( _("Probing FireWire devices...") );
  90.     Hotplug::StartFireWire ();
  91.     }
  92.  
  93.     // --------------------------------------------------------------
  94.     //                    Floppy
  95.     // --------------------------------------------------------------
  96.  
  97.     if (!(Arch::s390 () || Arch::board_iseries ()))
  98.     {
  99.         // give user feedback what's happening
  100.     showFeedback( _("Probing floppy disk devices") );
  101.     StorageDevices::FloppyReady ();
  102.     }
  103.  
  104.     // --------------------------------------------------------------
  105.     //                 Hard disk controllers
  106.     // 1. Probe
  107.     // 2. Initialize (module loading)
  108.     // --------------------------------------------------------------
  109.  
  110.     // In live_eval mode, all modules have been loaded by linuxrc. But
  111.     // they are loaded by StorageControllers::Initialize(). Well, there
  112.     // also was another reason for skipping StorageControllers::Probe ()
  113.     // but nobody seems to remembers.
  114.  
  115.     boolean found_controllers = true;
  116.  
  117.     // give user feedback what's happening
  118.     showFeedback( _("Probing hard disk controllers") );
  119.     found_controllers = StorageControllers::Probe () > 0;
  120.  
  121.     // Don't abort or even warn if no storage controllers can be
  122.     // found.  Disks might be detected even without proper knowledge
  123.     // about the controller.  There's a warning below if no disks were
  124.     // found.
  125.  
  126.     // give user feedback what's happening
  127.     showFeedback( _("Loading kernel modules for hard disk controllers") );
  128.     StorageControllers::Initialize ();
  129.  
  130.     // --------------------------------------------------------------
  131.     //                  Hard disks
  132.     // --------------------------------------------------------------
  133.  
  134.     // give user feedback what's happening
  135.     showFeedback( _("Probing hard disks") );
  136.     map targetMap = StorageDevices::Probe (true);
  137.     if (size (targetMap) == 0)
  138.     {
  139.     if (found_controllers)
  140.     {
  141.         // error report
  142.         Report::Error(_("No hard disks were found for the installation.
  143. Please check your hardware!
  144. "));
  145.     }
  146.     else
  147.     {
  148.         // error report
  149.         Report::Error(_("No hard disks and no hard disk controllers were
  150. found for the installation.
  151. Check your hardware.
  152. "));
  153.     }
  154.  
  155.     clearFeedback();
  156.     return `cancel;
  157.     }
  158.  
  159.     clearFeedback();
  160.     return `next;
  161. }
  162.