Author: juhliarik
Date: Fri Jul 25 16:27:00 2008
New Revision: 49421
URL: http://svn.opensuse.org/viewcvs/yast?rev=49421&view=rev
Log:
- added functions for handling device.map - it is allow only 8 devices in
device.map fate: #303548
- added function for remapping windows chainloader if windows is not on
the first (boot) disk fate: #301994
- deleted unused code
M bootloader/src/grub/misc.ycp
* added function for checking windows:
isWidnowsOnBootDisk()
checkWidnowsSection()
M bootloader/src/modules/BootGRUB.ycp
* deleted unused code
M bootloader/src/routines/misc.ycp
* added function BootDeviceToUdevID()
M bootloader/src/routines/lilolike.ycp
* added function for handling device.map:
ReduceDeviceMapTo8()
Modified:
trunk/bootloader/src/grub/misc.ycp
trunk/bootloader/src/modules/BootGRUB.ycp
trunk/bootloader/src/routines/lilolike.ycp
trunk/bootloader/src/routines/misc.ycp
Modified: trunk/bootloader/src/grub/misc.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/bootloader/src/grub/misc.ycp?rev=49421&r1=49420&r2=49421&view=diff
==============================================================================
--- trunk/bootloader/src/grub/misc.ycp (original)
+++ trunk/bootloader/src/grub/misc.ycp Fri Jul 25 16:27:00 2008
@@ -1038,8 +1038,83 @@
string ret = devpth[0]:"" + devpth[1]:"";
return ret;
}
+
+
+/** FATE #301994 - Correct device mapping in case windows is installed on the second HD
+ * Check if chainloader section with windows is on the first disk
+ *
+ * @param map section from BootCommon::sections
+ * @return boolean true if it is necessary remap section
+ */
+define boolean isWidnowsOnBootDisk(map section)
+{
+ // check if it is windows chainloader
+ if ((search(tolower(section["name"]:""), "windows") != nil)
+ || (search(tolower(section["original_name"]:""), "windows") != nil))
+ {
+ map p_dev = Storage::GetDiskPartition (section["chainloader"]:"");
+
+ string disk_dev = p_dev["disk"]:"";
+ if (disk_dev == "")
+ {
+ y2error("trying find disk for windows chainloader failed");
+ return false;
+ }
+ // find grub id in device map for chainloader device
+ string grub_id = BootCommon::device_mapping[disk_dev]:"";
+ y2milestone("Disk from windows chainloader: %1 grub id from device map: %2", disk_dev, grub_id);
+
+ // check if disk is the first in order...
+ if (grub_id != "hd0")
+ return true;
+
+ }
+ return false;
}
+/** FATE #301994 - Correct device mapping in case windows is installed on the second HD
+ * Remap and make active windows chainloader section
+ * if it is not on the boot (the first) disk
+ * @param list of sections
+ * @return list of sections
+ */
+
+define list