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 / bootloader_finish.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  170 lines

  1. /**
  2.  * File:
  3.  *  bootloader_finish.ycp
  4.  *
  5.  * Module:
  6.  *  Step of base installation finish
  7.  *
  8.  * Authors:
  9.  *  Jiri Srain <jsrain@suse.cz>
  10.  *
  11.  * $Id: bootloader_finish.ycp 34486 2006-11-20 14:29:37Z odabrunz $
  12.  *
  13.  */
  14.  
  15. {
  16.  
  17. textdomain "bootloader";
  18.  
  19. import "Arch";
  20. import "Bootloader";
  21. import "Installation";
  22. import "Linuxrc";
  23. import "Misc";
  24. import "Mode";
  25. import "Update";
  26.  
  27. any ret = nil;
  28. string func = "";
  29. map param = $[];
  30.  
  31. /* Check arguments */
  32. if(size(WFM::Args()) > 0 && is(WFM::Args(0), string)) {
  33.     func = (string)WFM::Args(0);
  34.     if(size(WFM::Args()) > 1 && is(WFM::Args(1), map))
  35.     param = (map)WFM::Args(1);
  36. }
  37.  
  38. y2milestone ("starting bootloader_finish");
  39. y2debug("func=%1", func);
  40. y2debug("param=%1", param);
  41.  
  42. if (func == "Info")
  43. {
  44.     return (any)$[
  45.     "steps" : 3,
  46.     // progress step title
  47.     "title" : _("Saving bootloader configuration..."),
  48.     "when" : [ `installation, `update, `autoinst ],
  49.     ];
  50. }
  51. else if (func == "Write")
  52. {
  53.     // provide the /dev content from the inst-sys also inside the chroot of just the upgraded system
  54.     // umount of this bind mount will happen in umount_finish
  55.     if (Mode::update ())
  56.     {
  57.     string cmd = "targetdir=" + Installation::destdir + "
  58. if test ${targetdir} = / ; then echo targetdir is / ; exit 1 ; fi
  59. grep -E \"^[^ ]+ ${targetdir}/dev \" < /proc/mounts
  60. if test $? = 0
  61. then
  62.     echo targetdir ${targetdir} already mounted.
  63.     exit 1
  64. else
  65.     mkdir -vp ${targetdir}/dev
  66.     cp --preserve=all --recursive --remove-destination /lib/udev/devices/* ${targetdir}/dev
  67.     mount -v --bind /dev ${targetdir}/dev
  68. fi
  69. ";
  70.     y2milestone ("mount --bind cmd: %1", cmd);
  71.     map out = (map)WFM::Execute (.local.bash_output, cmd);
  72.     if (out["exit"]:0 != 0)
  73.     {
  74.     y2error ("unable to bind mount /dev in chroot");
  75.     }
  76.     y2milestone ("mount --bind /dev /mnt/dev output: %1", out);
  77.     }
  78.     SCR::Execute (.target.bash, "/sbin/SuSEconfig --module bootsplash");
  79.     // --------------------------------------------------------------
  80.     // message after first round of packet installation
  81.     // now the installed system is run and more packages installed
  82.     // just warn the user that the screen is going back to text mode
  83.     // and yast2 will come up again.
  84.     // dont mention this "going back to text mode" here, maybe this
  85.     // wont be necessary in the final version
  86.  
  87.     // we should tell the user to remove the cd on an SMP or Laptop system
  88.     // where we do a hard reboot. However, the cdrom is still mounted here
  89.     // and cant be removed.
  90.  
  91.     if (Arch::s390 ())
  92.     {
  93.     if (Linuxrc::usessh ())
  94.         // for s390:
  95.         // Message that will be displayed along with information
  96.         // how the boot loader was installed
  97.         Misc::boot_msg = _("
  98. Your system will now shut down.
  99. After shutdown, reload the system
  100. with the load address of your root DASD or
  101. the load adress of your zFCP device.
  102. Then reconnect and run the following:
  103. /usr/lib/YaST2/startup/YaST2.ssh
  104. For details, read the related chapter
  105. in the documentation.
  106. ");
  107.     else
  108.         // for s390:
  109.         // Message that will be displayed along with information
  110.         // how the boot loader was installed
  111.         Misc::boot_msg = _("
  112. Your system will shut down now.
  113. After shutdown, reload the system
  114. with the load address of your root DASD or
  115. the load address of your zFCP device.
  116. For details, read the relevant chapter
  117. in the documentation.
  118. ");
  119.     }
  120.     else
  121.     {
  122.     if (Linuxrc::usessh () && !Linuxrc::vnc())
  123.         // Final message after all packages from CD1 are installed
  124.         // and we're ready to start (boot into) the installed system
  125.         // Message that will be displayed along with information
  126.         // how the boot loader was installed
  127.         Misc::boot_msg = _("The system will reboot now.
  128. After reboot, reconnect and run the following:
  129. /usr/lib/YaST2/startup/YaST2.ssh");
  130.     else
  131.         // Final message after all packages from CD1 are installed
  132.         // and we're ready to start (boot into) the installed system
  133.         // Message that will be displayed along with information
  134.         // how the boot loader was installed
  135.         Misc::boot_msg = _("The system will reboot now...");
  136.     }
  137.  
  138.     //--------------------------------------------------------------
  139.     // Install bootloader (always, see #23018)
  140.     // should also set Misc::boot_msg appropriate
  141.  
  142.     // FIXME: this is the plan B solution, try to solve plan A in
  143.     //        BootCommon.ycp:CreateLinuxSection() (line 435)
  144.     // resolve symlinks in kernel and initrd paths
  145.     Bootloader::ResolveSymlinksInSections();
  146.  
  147.     if (!Mode::update ())
  148.     {
  149.     return Bootloader::Write ();
  150.     }
  151.     else
  152.     {
  153.     return Bootloader::Update (
  154.         Update::installedVersion,
  155.         Update::updateVersion);
  156.     }
  157. }
  158. else
  159. {
  160.     y2error ("unknown function: %1", func);
  161.     ret = nil;
  162. }
  163.  
  164. y2debug("ret=%1", ret);
  165. y2milestone("bootloader_finish finished");
  166. return ret;
  167.  
  168.  
  169. } /* EOF */
  170.