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 / vm_finish.ycp < prev    next >
Text File  |  2006-11-29  |  2KB  |  101 lines

  1. /**
  2.  * File:
  3.  *  vm_finish.ycp
  4.  *
  5.  * Module:
  6.  *  Step of base installation finish
  7.  *
  8.  * Authors:
  9.  *  Ladislav Slezak <lslezak@suse.cz>
  10.  *
  11.  * $Id: vm_finish.ycp 31478 2006-06-13 22:25:13Z mgfritch $
  12.  *
  13.  */
  14.  
  15. {
  16.  
  17. textdomain "vm";
  18.  
  19. import "Arch";
  20. import "Report";
  21.  
  22. any ret = nil;
  23. string func = "";
  24. map param = $[];
  25.  
  26. /* Check arguments */
  27. if(size(WFM::Args()) > 0 && is(WFM::Args(0), string)) {
  28.     func = (string)WFM::Args(0);
  29.     if(size(WFM::Args()) > 1 && is(WFM::Args(1), map))
  30.     param = (map)WFM::Args(1);
  31. }
  32.  
  33. y2milestone ("starting vm_finish");
  34. y2debug("func=%1", func);
  35. y2debug("param=%1", param);
  36.  
  37. if (func == "Info")
  38. {
  39.     // return nil when the system is not Xen domainU,
  40.     // no change is allowed
  41.     if (Arch::is_xenU())
  42.     {
  43.     y2milestone("Detected Xen DomainU");
  44.     ret = $[
  45.         "steps" : 1,
  46.         // progress step title
  47.         "title" : _("Configuring the virtual machine..."),
  48.         "when" : [ `installation, `update, `autoinst ],
  49.     ];
  50.     }
  51.     else
  52.     {
  53.     y2milestone("Xen DomainU not detected, skipping domain configuration");
  54.     ret = nil;
  55.     }
  56. }
  57. else if (func == "Write")
  58. {
  59.     // be sure that we are in Xen domU
  60.     if (Arch::is_xenU())
  61.     {
  62.     // disable HW services - they are useless and usually failing in a virtual machine
  63.     list<string> disable_services = ["acpid", "kbd", "earlykbd"];
  64.  
  65.     y2milestone("disabling services: %1", disable_services);
  66.     foreach(string s, disable_services, {
  67.         integer disabled = (integer) SCR::Execute(.target.bash, sformat("/sbin/insserv -r %1", s));
  68.         y2milestone("insserv: service %1 disabled: %2", s, (disabled == 0) ? true : false);
  69.         }
  70.     );
  71.  
  72.     // these services need force option to disable them
  73.     list<string> disable_services_force = ["boot.clock"];
  74.     y2milestone("disabling services (forced): %1", disable_services_force);
  75.     foreach(string s, disable_services_force, {
  76.         integer disabled = (integer) SCR::Execute(.target.bash, sformat("/sbin/insserv -r -f %1", s));
  77.         y2milestone("insserv-force: service %1 disabled: %2", s, (disabled == 0) ? true : false);
  78.         }
  79.     );
  80.  
  81.     // domU has only one console
  82.     SCR::Execute(.target.bash, "/bin/sed -i 's/.*mingetty tty[2-9]$//' /etc/inittab");
  83.     // Although console appears to be a tty, do not do character translations
  84.     SCR::Execute(.target.bash, "/bin/sed -i 's/^CONSOLE_MAGIC=.*$/CONSOLE_MAGIC=\"\"/' /etc/sysconfig/console");
  85.     }
  86. }
  87. else
  88. {
  89.     y2error ("unknown function: %1", func);
  90.     ret = nil;
  91. }
  92.  
  93. y2debug("ret=%1", ret);
  94. y2milestone("vm_finish finished");
  95. return ret;
  96.  
  97.  
  98. } /* EOF */
  99.  
  100.  
  101.