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 / modules / Linuxrc.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  158 lines

  1. /**
  2.  * Module:      Linuxrc
  3.  * File:    modules/Linuxrc.ycp
  4.  * Purpose:    Interaction with linuxrc
  5.  *
  6.  * Author:    Anas Nashif <nashif@suse.de?
  7.  * $Id: Linuxrc.ycp 33164 2006-09-27 08:42:24Z jsrain $
  8.  */
  9. {
  10.     module "Linuxrc";
  11.     import "Mode";
  12.     import "Stage";
  13.  
  14.     map<string,string> install_inf = nil;
  15.  
  16.     boolean _manual = nil;
  17.  
  18.  
  19. // routines for reading data from /etc/install.inf
  20.  
  21.     void ReadInstallInf () {
  22.     install_inf = $[];
  23.     // don't read anything if the file doesn't exist
  24.     if (SCR::Read (.target.size, "/etc/install.inf") == -1)
  25.     {
  26.         y2error ("Reading install.inf, but file doesn't exist!!!");
  27.         return;
  28.     }
  29.     list<string> entries = (list<string>)SCR::Dir (.etc.install_inf);
  30.     if (entries == nil)
  31.     {
  32.         y2error ("install.inf is empty");
  33.         return;
  34.     }
  35.     foreach (string e, entries, {
  36.         string val = (string)SCR::Read (add (.etc.install_inf, e));
  37.         install_inf[e] = val;
  38.     });
  39.     }
  40.  
  41.     global void ResetInstallInf () {
  42.         install_inf = nil;
  43.         return;
  44.     }
  45.  
  46.     global string InstallInf (string key) {
  47.     if (install_inf == nil)
  48.         ReadInstallInf ();
  49.     return install_inf[key]:nil;
  50.     }
  51.  
  52.     // installation mode wrappers
  53.  
  54.     global boolean manual () {
  55.     if (_manual != nil)
  56.         return _manual;
  57.     _manual = InstallInf ("Manual") == "1";
  58.     if (! _manual)
  59.     {
  60.         string tmp = (string)SCR::Read (.target.string, "/proc/cmdline");
  61.         if (tmp != nil && contains (splitstring (tmp, " \n"), "manual"))
  62.         {
  63.         _manual = true;
  64.         }
  65.     }
  66.     return _manual;
  67.     }
  68.  
  69.     /**
  70.      * running via serial console
  71.      */
  72.     global boolean serial_console () {
  73.      return InstallInf ("Console") != nil;
  74.     }
  75.  
  76.     /**
  77.      * braille mode ?
  78.      */
  79.     global boolean braille () {
  80.     return InstallInf ("Braille") != nil;
  81.     }
  82.  
  83.     /**
  84.      * vnc mode ?
  85.      */
  86.     global boolean vnc () {
  87.     return InstallInf ("VNC") == "1";
  88.     }
  89.     /**
  90.      * remote X mode ?
  91.      */
  92.     global boolean display_ip () {
  93.     return Linuxrc::InstallInf ("Display_IP") != nil;
  94.     }
  95.  
  96.     /**
  97.      * ssh mode ?
  98.      * if booted with 'vnc=1 usessh=1', keep vnc mode, but start sshd
  99.      * if booted with 'display_ip=1.2.3.4 usessh=1', keep remote X mode, but start sshd
  100.      * this has to be checked by the caller, not here
  101.      */
  102.     global boolean usessh () {
  103.     return InstallInf ("UseSSH") == "1";
  104.     }
  105.  
  106.     /**
  107.      * we're running in textmode (-> UI::GetDisplayInfo())
  108.      */
  109.     global boolean text () {
  110.     return InstallInf ("Textmode") == "1";
  111.     }
  112.  
  113. // end of install.inf reading routines
  114.  
  115.     /**
  116.      * Write /etc/yast.inf during installation
  117.      * @param linuxrc    map of key value pairs for /etc/yast.inf
  118.      * @return void
  119.      */
  120.     global define void WriteYaSTInf (map<string,string> linuxrc)
  121.     {
  122.     string yast_inf = "";
  123.     foreach (string ykey, string yvalue, linuxrc,
  124.     ``{
  125.         yast_inf = yast_inf + ykey + ": " + yvalue + "\n";
  126.     });
  127.     y2milestone ("WriteYaSTInf(%1) = %2", linuxrc, yast_inf);
  128.  
  129.         if (!Mode::test ())
  130.         {
  131.         WFM::Write(.local.string, "/etc/yast.inf", yast_inf);
  132.         }
  133.         return;
  134.     }
  135.  
  136.     /*
  137.      * Copy /etc/install.inf into built system so that the
  138.      * second phase of the installation can find it.
  139.      * @param root mount point of system
  140.      * @return boolean true on success
  141.      */
  142.     global boolean SaveInstallInf(string root)
  143.     {
  144.         if (Stage::initial () && !Mode::test () )
  145.         {
  146.             SCR::Execute (.target.bash, "/bin/grep -v Sourcemounted /etc/install.inf >" +
  147.                     root + "/etc/install.inf");
  148.  
  149.             // just for debug so we can see the original install.inf later
  150.             SCR::Execute (.target.bash, "/bin/cp /etc/install.inf " +
  151.                     root + "/var/lib/YaST2/install.inf");
  152.             SCR::Execute (.target.bash, "/bin/chmod 0600 " +
  153.                     root + "/var/lib/YaST2/install.inf");
  154.         }
  155.         return true;
  156.     }
  157. }
  158.