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 / ModulesConf.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  130 lines

  1. /**
  2.  * File:
  3.  *    ModulesConf.ycp
  4.  *
  5.  * Module:
  6.  *    ModulesConf
  7.  *
  8.  * Authors:
  9.  *    Klaus Kaempf (kkaempf@suse.de)
  10.  *
  11.  * Summary:
  12.  *    All modules.conf related functions are here
  13.  *
  14.  * $Id: ModulesConf.ycp 20655 2005-01-05 15:53:09Z jsrain $
  15.  */
  16. {
  17.     module "ModulesConf";
  18.  
  19.     import "Arch";
  20.     import "Misc";
  21.     import "Mode";
  22.  
  23.     textdomain "base";
  24.  
  25.     map<string, map> modules = $[];
  26.  
  27.     /**
  28.      * ModuleArgs
  29.      * save arguments for a kernel module
  30.      * @param name    string, name of kernel module
  31.      * @param arg    string, arguments ("opt1=val1 opt2=val2 ...")
  32.      */
  33.     global define void ModuleArgs (string name, string arg)
  34.     ``{
  35.     if (name == "")
  36.         return;
  37.  
  38.     map moduledata = modules[name]:$[];
  39.     if (arg != "")
  40.     {
  41.         moduledata["options"] = arg;
  42.     }
  43.     modules[name] = moduledata;
  44.  
  45.     return;
  46.     }
  47.  
  48.  
  49.     /**
  50.      * RunDepmod
  51.      * runs /sbin/depmod
  52.      * !! call only when SCR runs on target !!
  53.      * @param force    boolean, force depmod run (option "-a" instead of "-A")
  54.      */
  55.     global define void RunDepmod (boolean force)
  56.     ``{
  57.     if (Arch::s390 ())
  58.         return;
  59.  
  60.     import "Kernel";
  61.  
  62.     string kernel_version = (string) SCR::Read (.boot.vmlinuz_version, ["/boot/" + Kernel::GetBinary ()]);
  63.  
  64.     y2milestone ("running /sbin/depmod");
  65.  
  66.     if (size (kernel_version) > 0)
  67.     {
  68.         SCR::Execute (.target.bash, "unset MODPATH; /sbin/depmod " + (force ? "-a" : "-A") +
  69.               " -F /boot/System.map-" + kernel_version + " " + kernel_version);
  70.     }
  71.     else
  72.     {
  73.         SCR::Execute (.target.bash, "unset MODPATH; /sbin/depmod " + (force ? "-a" : "-A") +
  74.               " -F /boot/System.map-`uname -r` `uname -r`");
  75.     }
  76.     }
  77.  
  78.  
  79.     /**
  80.      * Save
  81.      * save module names and arguments to /etc/modules.conf
  82.      * @param force    boolean, force depmod run even if /etc/modules.conf is unchanged
  83.      * !! call only when SCR runs on target !!
  84.      */
  85.     global define void Save (boolean force)
  86.     ``{
  87.     // make module names to one long string
  88.     // start with modules from linuxrc
  89.  
  90.     // write module options to modules.conf, mk_initrd handles the rest
  91.  
  92.     boolean modules_conf_changed = false;
  93.  
  94.     foreach (string mname, map mdata, modules,
  95.     ``{
  96.         string options = mdata["options"]:"";
  97.  
  98.         if (options != "")
  99.         {
  100.         // we have options, pass them to modules.conf
  101.  
  102.         map current_options = (map) SCR::Read (add (.modules.options, mname));
  103.  
  104.         map new_options = Misc::SplitOptions (options, current_options);
  105.  
  106.         SCR::Write (add (.modules.options, mname), new_options);
  107.         modules_conf_changed = true;
  108.         }
  109.     });
  110.  
  111.     // Network module handling removed (#39135)
  112.     // #24836, Alias needs special treatment because of multiple cards
  113.  
  114.     // if needed, re-write /etc/modules.conf and run /sbin/depmod
  115.  
  116.     if (modules_conf_changed)
  117.     {
  118.         SCR::Write (.modules, nil);
  119.     }
  120.  
  121.     if (modules_conf_changed || force)
  122.     {
  123.         if (!Mode::test ())
  124.         {
  125.         RunDepmod (true);
  126.         }
  127.     }
  128.     }
  129. }
  130.