import copy
import logging
import platform
-import xen.lowlevel.xc
import curses, _curses, curses.textpad, curses.ascii
import getopt
return grubcfg
-def supports64bitPVguest():
- xc = xen.lowlevel.xc.xc()
- caps = xc.xeninfo()['xen_caps'].split(" ")
- for cap in caps:
- if cap == "xen-3.0-x86_64":
- return True
- return False
-
-# If nothing has been specified, look for a Solaris domU. If found, perform the
-# necessary tweaks.
-def sniff_solaris(fs, cfg):
- if not fs.file_exists("/platform/i86xpv/kernel/unix") and \
- not fs.file_exists("/platform/i86xpv/kernel/amd64/unix"):
- return cfg
-
- if not cfg["kernel"]:
- if supports64bitPVguest() and \
- fs.file_exists("/platform/i86xpv/kernel/amd64/unix"):
- cfg["kernel"] = "/platform/i86xpv/kernel/amd64/unix"
- cfg["ramdisk"] = "/platform/i86pc/amd64/boot_archive"
- elif fs.file_exists("/platform/i86xpv/kernel/unix"):
- cfg["kernel"] = "/platform/i86xpv/kernel/unix"
- cfg["ramdisk"] = "/platform/i86pc/boot_archive"
- else:
- return cfg
-
- # Unpleasant. Typically we'll have 'root=foo -k' or 'root=foo /kernel -k',
- # and we need to maintain Xen properties (root= and ip=) and the kernel
- # before any user args.
-
- xenargs = ""
- userargs = ""
-
- if not cfg["args"]:
- cfg["args"] = cfg["kernel"]
- else:
- for arg in cfg["args"].split():
- if re.match("^root=", arg) or re.match("^ip=", arg):
- xenargs += arg + " "
- elif arg != cfg["kernel"]:
- userargs += arg + " "
- cfg["args"] = xenargs + " " + cfg["kernel"] + " " + userargs
-
- return cfg
-
def sniff_netware(fs, cfg):
if not fs.file_exists("/nwserver/xnloader.sys"):
return cfg
try:
fs = xenfsimage.open(file, offset, bootfsoptions)
- chosencfg = sniff_solaris(fs, incfg)
-
- if not chosencfg["kernel"]:
- chosencfg = sniff_netware(fs, incfg)
+ chosencfg = sniff_netware(fs, incfg)
if not chosencfg["kernel"]:
chosencfg = run_grub(file, entry, fs, incfg["args"])