Ejemplo n.º 1
0
def install_grub(harddisk, bootdisk, bootdnum):

    strs = "(hd0)   %s\n" % harddisk
    file_name = "/mnt/sysimage/boot/grub/device.map"
    FileOption(file_name).write_file(strs)

    syncDataToDisk("/mnt/sysimage/boot")

    # copy the stage files over into xxx/boot
    cmd = "/sbin/grub-install --just-copy --root-directory=/mnt/sysimage"
    (cmdstat, rparams) = support.cmd_pipe.run_and_read_cmd(cmd, 300)
    if not cmdstat:
        return (False, "Grub-install cmd failed")
    syncDataToDisk("/mnt/sysimage/boot")
    time.sleep(5)

    cmd = "root (hd0,%s)\ninstall /grub/stage1 d (hd0) /grub/stage2 p (hd0,%s)/grub/grub.conf" % (
        bootdnum, bootdnum)
    p = os.pipe()
    os.write(p[1], cmd + '\n')
    os.close(p[1])

    cmd = "/sbin/grub --batch --no-floppy --device-map=/mnt/sysimage/boot/grub/device.map"
    (cmdstat,
     rparams) = support.cmd_pipe.r_and_r_cmd_include_in(cmd, 600, p[0])
    os.close(p[0])
    if not cmdstat:
        return (False, "Grub batch failed")  #@@
    # e.g change harddiskname in devicemapf for grub
    strs = "(hd0)   %s\n" % check_install_tohd.get_first_HD_name(harddisk)
    file_name = "/mnt/sysimage/boot/grub/device.map"
    FileOption(file_name).write_file(strs)
    return (True, "")
Ejemplo n.º 2
0
def doPostInstall(instPath, rootdisk, bootdisk):

    (flag, stat) = _resizedevicefs(rootdisk)
    if not flag:
        return (False, stat)

    # e.g get rootdisk, bootdisk filesystem uuid
    # e.g tune2fs -l /dev/sda1
    (flag, rootuuid) = get_partition_fsuuid(rootdisk)
    if not flag:
        return (False, rootuuid)
    (flag, bootuuid) = get_partition_fsuuid(bootdisk)
    if not flag:
        return (False, bootuuid)

    # remount filesystems
    (flag, stat) = remountfile(instPath, rootdisk, bootdisk)
    if not flag:
        return (False, stat)

    # now write out the "real" fstab and mtab
    file_name = "/mnt/sysimage/etc/fstab"
    strs = _get_fstab(rootuuid, bootuuid)
    FileOption(file_name).write_file(strs)

    file_name = "/mnt/sysimage/etc/mtab"
    strs = _get_mtab(rootdisk, bootdisk)
    FileOption(file_name).write_file(strs)

    diskinfo = {"rootuuid": rootuuid, "bootuuid": bootuuid}
    return (True, diskinfo)
Ejemplo n.º 3
0
def get_rootdevice():

    # e.g /dev/mapper/System-root for vcenter ; /dev/mapper/live-rw for vsrever
    file_name = "/etc/mtab"
    lines = FileOption(file_name).read_file()
    for x in lines:
        xlist = x.strip().split()
        if xlist < 2:
            continue
        if x[1] == "/":
            return x[0]
    return "/dev/mapper/System-root"
Ejemplo n.º 4
0
def _get_fstab(rootuuid, bootuuid):

    strs = '''UUID=%s /                       ext3    defaults        1 1
UUID=%s /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
''' % (rootuuid, bootuuid)
    file_name = "/proc/swaps"
    lines = FileOption(file_name).read_file()
    if len(lines) > 1:
        swp = lines[1].split()[0]
        strs += "%s     swap    swap     defaults         0 0\n" % swp
    return strs
Ejemplo n.º 5
0
def setup_grub(bootdisk, harddisk, rootuuid):

    bootdnum = check_install_tohd.get_numof_device(bootdisk)
    bootdnum = str(int(bootdnum) - 1)

    file_name = "/mnt/sysimage/boot/grub/grub.conf"
    strs = _get_grub_conf(bootdnum, rootuuid)
    FileOption(file_name).write_file(strs)

    os.chdir("/mnt/sysimage/boot/grub/")
    cmd = "/bin/ln -s ./grub.conf ./menu.lst"
    (cmdstat, rparams) = support.cmd_pipe.run_and_read_cmd(cmd, 30)
    os.chdir("/usr/vmd")
    if not cmdstat:
        return (False, "Create ln grub.conf failed")  #@@

    (flag, stat) = install_grub(harddisk, bootdisk, bootdnum)
    if not flag:
        return (False, stat)
    return (True, "Create Cfg successed")
Ejemplo n.º 6
0
def installvcenter(event):

    instPath = "/mnt/sysimage"
    harddisk = event.param["harddisk"]

    (flag, params) = check_create_parttion(event)
    if not flag:
        return (False, params)

    bootdisk = params["bootdisk"]
    rootdisk = params["rootdisk"]
    bootsize = params["bootsize"]
    rootsize = params["rootsize"]

    clear_tmp_dir()

    (flag, stat) = create_bootdisk_fs(bootdisk)
    if not flag:
        return (False, stat)

    (flag, stat) = makedir(instPath)
    if not flag:
        return (False, stat)

    ppc = 80 - 20
    stt = 20
    (flag, stat) = doInstall(stt, ppc, rootdisk, event)
    if not flag:
        return (False, stat)

    # e.g diskinfo = {"rootuuid":rootuuid, "bootuuid":bootuuid}
    (flag, diskinfo) = doPostInstall(instPath, rootdisk, bootdisk)
    if not flag:
        return (False, diskinfo)
    rootuuid = diskinfo["rootuuid"]
    bootuuid = diskinfo["bootuuid"]

    updateinfo = {"uuid": event.uuid, "progress": 85}
    optevent_db_op.update_optevent(updateinfo)

    updateinfo = {"uuid": event.uuid, "progress": 90}
    optevent_db_op.update_optevent(updateinfo)

    os.system("/bin/sync")
    time.sleep(20)
    # e.g install for vcenter kernel install
    os.system("/usr/bin/python /usr/vmd/installvckernel.pyc")
    os.system("/bin/sync")
    time.sleep(20)

    (flag, stat) = setup_grub(bootdisk, harddisk, rootuuid)
    if not flag:
        return (False, stat)

    file_name = "/mnt/sysimage/etc/installtype.txt"
    FileOption(file_name).write_file("HardDisk")

    updateinfo = {"uuid": event.uuid, "progress": 95}
    optevent_db_op.update_optevent(updateinfo)

    umount_tmp_mount()

    return (True, "Successed")