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_autosetup.ycp < prev    next >
Text File  |  2006-11-29  |  6KB  |  232 lines

  1. /**
  2.  * File:    clients/inst_autosetup.ycp
  3.  * Package: Auto-installation
  4.  * Summary: Setup and prepare system for auto-installation
  5.  * Authors: Anas Nashif <nashif@suse.de>
  6.  *          Uwe Gansert <ug@suse.de>
  7.  *
  8.  * $Id: inst_autosetup.ycp 32595 2006-08-28 12:58:31Z ug $
  9.  */
  10.  
  11. {
  12.     textdomain "autoinst";
  13.  
  14.     import "AutoinstConfig";
  15.     import "AutoInstall";
  16.     import "Installation";
  17.     import "Profile";
  18.     import "Progress";
  19.     import "Report";
  20.     import "AutoinstStorage";
  21.     import "AutoinstScripts";
  22.     import "AutoinstGeneral";
  23.     import "AutoinstSoftware";
  24.     import "Bootloader";
  25.     import "BootCommon";
  26.     import "Popup";
  27.     import "RunlevelEd";
  28.     import "Arch";
  29.     import "AutoinstLVM";
  30.     import "AutoinstRAID";
  31.     import "Storage";
  32.     import "Timezone";
  33.     import "Keyboard";
  34.     import "Call";
  35.     import "ProductControl";
  36.  
  37.     include "bootloader/routines/autoinstall.ycp";
  38.     include "autoinstall/ask.ycp";
  39.  
  40.     string help_text = _("<P>Please wait while the system is prepared for autoinstallation.</P>");
  41.     list<string> progress_stages =
  42.         [
  43.     _("Configure General Settings "),
  44.     _("Execute pre-install user scripts"),
  45.     _("Create partition plans"),
  46.     _("Configure Software selections"),
  47.     _("Configure Bootloader"),
  48.     _("Configure runlevel")
  49.         ];
  50.  
  51.     list<string> progress_descriptions =
  52.         [
  53.     _("Configuring general settings..."),
  54.     _("Executing pre-install user scripts..."),
  55.     _("Creating partition plans..."),
  56.     _("Configuring Software selections..."),
  57.     _("Configuring Bootloader..."),
  58.     _("Configuring runlevel...")
  59.         ];
  60.  
  61.     Progress::New(
  62.             _("Preparing System for Automated Installation"),
  63.             "",     // progress_title
  64.             size( progress_stages ),    // progress bar length
  65.             progress_stages,
  66.             progress_descriptions,
  67.             help_text );
  68.  
  69.  
  70.     if(UI::PollInput() == `abort)
  71.         if (Popup::ConfirmAbort (`painless))
  72.             return `abort;
  73.     Progress::NextStage();
  74.  
  75.  
  76.     // configure general settings
  77.  
  78.  
  79.  
  80.  
  81.  
  82.     if(UI::PollInput() == `abort)
  83.     if (Popup::ConfirmAbort (`painless))
  84.         return `abort;
  85.  
  86.     Progress::NextStage();
  87.  
  88.     // Pre-Scripts
  89.     AutoinstScripts::Import(Profile::current["scripts"]:$[]);
  90.     AutoinstScripts::Write("pre-scripts", false);
  91.  
  92.     // Reread Profile in case it was modified in pre-script
  93.     // User has to create the new profile in a pre-defined
  94.     // location for easy processing in pre-script.
  95.  
  96.     if (SCR::Read(.target.size, AutoinstConfig::modified_profile) > 0 )
  97.     {
  98.     if (! Profile::ReadXML( AutoinstConfig::modified_profile ) || Profile::current == $[] )
  99.     {
  100.         Popup::Error(_("Error while parsing the control file.
  101. Check the log files for more details or fix the
  102. control file and try again.
  103. "));
  104.         return `abort;
  105.     }
  106.     }
  107.  
  108.     //
  109.     // Partitioning and Storage
  110.     ////////////////////////////////////////////////////////////////////////
  111.  
  112.  
  113.     askDialog();
  114.     // reimport scripts, for the case <ask> has changed them
  115.     AutoinstScripts::Import(Profile::current["scripts"]:$[]);
  116.     //
  117.     // Set Mouse and other workflow variables
  118.     //
  119.     AutoinstGeneral::Import(Profile::current["general"]:$[]);
  120.     y2milestone("general: %1", Profile::current["general"]:$[] );
  121.     AutoinstGeneral::Write();
  122.  
  123.     if( haskey( Profile::current, "add-on" ) ) {
  124.         Call::Function("add-on_auto", ["Import", Profile::current["add-on"]:$[]] );
  125.         Call::Function("add-on_auto", ["Write"]);
  126.     }
  127.  
  128.  
  129.     if( haskey( Profile::current, "timezone" ) )
  130.         Timezone::Import(Profile::current["timezone"]:$[]);
  131.     if( haskey( Profile::current, "keyboard" ) )
  132.         Keyboard::Import(Profile::current["keyboard"]:$[]);
  133.  
  134.  
  135.     // one can override the <confirm> option by the commandline parameter y2confirm
  136.     string tmp = (string)SCR::Read (.target.string, "/proc/cmdline");
  137.     if (tmp != nil && contains (splitstring (tmp, " \n"), "y2confirm")) {
  138.         AutoinstConfig::Confirm = true;
  139.         y2milestone("y2confirm found and confirm turned on");
  140.     }
  141.  
  142.  
  143.     if(UI::PollInput() == `abort)
  144.     if (Popup::ConfirmAbort (`painless))
  145.         return `abort;
  146.  
  147.  
  148.     Progress::NextStage();
  149.     // if one modifies the partition table in a pre script, we will
  150.     // recognize this now
  151.     Storage::ReReadTargetMap();
  152.  
  153.     AutoinstStorage::Import(Profile::current["partitioning"]:[]);
  154.     AutoinstStorage::ImportAdvanced(Profile::current["partitioning_advanced"]:$[]);
  155.  
  156.     if (!AutoinstStorage::Write())
  157.     {
  158.     Report::Error(_("Error while configuring partitions.
  159. Try again.
  160. "));
  161.     y2error("Aborting...");
  162.     return `abort;
  163.     }
  164.     if (AutoinstRAID::Init())
  165.     {
  166.         AutoinstRAID::Write();
  167.     }
  168.     if (AutoinstLVM::Init())
  169.     {
  170.         AutoinstLVM::Write();
  171.     }
  172.  
  173.  
  174.  
  175.     // Software
  176.  
  177.     if(UI::PollInput() == `abort)
  178.     if (Popup::ConfirmAbort (`painless))
  179.         return `abort;
  180.  
  181.     Progress::NextStage();
  182.     AutoinstSoftware::Import( Profile::current["software"]:$[] );
  183.  
  184.     if (!AutoinstSoftware::Write())
  185.     {
  186.     Report::Error(_("Error while configuring software selections.
  187. Try again.
  188. "));
  189.     y2error("Aborting...");
  190.     return `abort;
  191.     }
  192.  
  193.     // Bootloader
  194.  
  195.     if(UI::PollInput() == `abort)
  196.     if (Popup::ConfirmAbort (`painless))
  197.         return `abort;
  198.     Progress::NextStage();
  199.  
  200.     BootCommon::getLoaderType(true);
  201.     Bootloader::Import(AI2Export (Profile::current["bootloader"]:$[]));
  202.     BootCommon::DetectDisks ();
  203.     y2debug ("autoyast: Proposing - fix");
  204.     Bootloader::Propose ();
  205.     y2debug ("autoyast: Proposing done");
  206.  
  207.  
  208.     Progress::NextStage();
  209.     string rl = Profile::current["runlevel", "default"]:"";
  210.     y2milestone("autoyast - configured runlevel: %1", rl);
  211.     if (rl!="")
  212.     {
  213.         RunlevelEd::default_runlevel = rl;
  214.     }
  215.     else
  216.     {
  217.         RunlevelEd::default_runlevel = (Installation::x11_setup_needed ()
  218.                 && Arch::x11_setup_needed ()
  219.                 && Pkg::IsSelected ("xorg-x11") )? "5": "3";
  220.     }
  221.     y2milestone("autoyast - setting runlevel to: %1", RunlevelEd::default_runlevel);
  222.  
  223.     AutoInstall::PXELocalBoot();
  224.     AutoInstall::TurnOff();
  225.     Progress::Finish();
  226.  
  227.     symbol ret = ProductControl::RunFrom ( ProductControl::CurrentStep () + 1, true);
  228.     if (ret == `next)
  229.     return `finish;
  230.     return ret;
  231. }
  232.