def gpt_easyhandler(dev, disk, start, end, number):
    fs = "ext4"
    bios_grub = False
    for p in disk.partitions:
        if p.number != number and p.getFlag(parted.PARTITION_BIOS_GRUB):
            bios_grub = True
            break
    if bios_grub and number > 0:
        return [disk, number]

    if bios_grub == False:
        if number > 0:
            disk = rfparted.rmpart(disk, number)
        size = parted.sizeToSectors(1, "MB", 512)
        disk = rfparted.mkpart(dev, disk, "primary", start, size, end, "bios_grub")
        start = start + size + 1

    partnumber = [part.number for part in disk.partitions]
    disk = rfparted.mkpart(dev, disk, "primary", start, 0, end, fs)
    number = 0
    for p in disk.partitions:
        if p.number in partnumber:
            continue
        number = p.number
        break

    return [disk, number]
def msdos_easyhandler(dev, disk, parttype, start, end):
    # in this function, parttype must be free
    fs = "ext4"
    if disk.primaryPartitionCount == 4:
        raise Exception, "Too many primary partitions."
    elif disk.primaryPartitionCount == 3 and disk.getExtendedPartition() is None:
        disk = rfparted.mkpart(dev, disk, "extended", start, 0, end, fs)
        parttype = "logical"
    elif disk.primaryPartitionCount < 4:
        parttype = "primary"
    ###elif parttype == "logical"
    ### nothing changed
    partnumber = [part.number for part in disk.partitions]
    disk = rfparted.mkpart(dev, disk, parttype, start, 0, end, fs)
    number = 0
    for p in disk.partitions:
        if p.number in partnumber:
            continue
        number = p.number
        break
    return [disk, number]
Ejemplo n.º 3
0
def premkpart(args, dev, disk):
    """Given args, device and disk needed to make parted. The format 
    of args: args = [part.type, start, end, filesystem.type]. Raise
    Exception given wrong args."""

    parttype = primary
    fstype = None
    if disk.type == 'msdos':
        parttype = args[0]
        del args[0]

    start = parted.sizeToSectors(int(args[0]), "MiB", 512)
    end = parted.sizeToSectors(int(args[1]), "MiB", 512)

    if not (parttype == "extended"):
        fstype = args[2]

    disk = rfparted.mkpart(dev, disk, parttype, start, end, fstype)
    return disk
def fdhandler(dev, mem, disks, sysflag):
    DevEndSector = dev.getLength()  ##the last sector of the device
    Dsize = dev.getLength("GB")
    parttype = "primary"
    fs = "ext4"
    number = 0  ##record the number of the part created
    boot_number = 0  ##record the number of boot part

    disk = disks[dev.path]
    disk.deleteAllPartitions()
    disks[dev.path] = disk

    start = parted.sizeToSectors(0, "GB", 512)
    end = 0
    if disk.type == "gpt":
        number = number + 1
        size = parted.sizeToSectors(1, "MB", 512)
        disk = rfparted.mkpart(dev, disk, parttype, start, size, end, "bios_grub")
        start = start + size + 1

    if sysflag == "sony":
        number = number + 1
        fs = "ext3"
        size = parted.sizeToSectors(10, "GB", 512)
        disk = rfparted.mkpart(dev, disk, parttype, start, size, end, fs)
        start = start + size + 1

    if Dsize > 54:
        number = number + 1
        boot_number = number
        size = parted.sizeToSectors(50, "GB", 512)
        disk = rfparted.mkpart(dev, disk, parttype, start, size, end, fs)
        rfparted.setFlag(disk, number, "boot", True)
        start = start + size + 1
        number = number + 1
        size = parted.sizeToSectors(4, "GB", 512)
        disk = rfparted.mkpart(dev, disk, parttype, start, size, end, "linux-swap(v1)")
    elif Dsize > 10:
        if find_swap(disks) is False:
            number = number + 1
            size = parted.sizeToSectors(mem, "B", 512)
            disk = rfparted.mkpart(dev, disk, parttype, start, size, end, "linux-swap(v1)")
            start = start + size + 1
        if Dsize > 30:
            number = number + 1
            boot_number = number
            end = parted.sizeToSectors(30, "GB", 512)  ##rootsize = 30 - swap
            disk = rfparted.mkpart(dev, disk, parttype, start, 0, end, fs)
            start = end + 1
        number = number + 1
        if boot_number == 0:
            boot_number = number
        end = DevEndSector
        disk = rfparted.mkpart(dev, disk, parttype, start, 0, end, fs)
    elif Dsize >= 6:
        number = number + 1
        boot_number = number
        end = DevEndSector
        disk = rfparted.mkpart(dev, disk, parttype, start, 0, end, fs)
    else:
        raise Exception, "Error, select a disk of at least 6 GB ."
    return [disk, boot_number]