Пользовательский раздел EFI никогда не распознается как загрузочный - PullRequest
0 голосов
/ 15 февраля 2019

Я использую pyparted для создания пользовательского раздела как части скрипта yocto.Конечный результат никогда не обнаруживается какой-либо системой EFI.Я получаю изображение, которое могу добавить на устройство.Используя fdisk, это тот раздел, который он создает ..

Command (m for help): i
Partition number (1,2, default 2): 1

         Device: /dev/sdb1
          Start: 2048
            End: 8191
        Sectors: 6144
           Size: 3M
           Type: EFI System
      Type-UUID: C12A7328-F81F-11D2-BA4B-00A0C93EC93B
           UUID: 2E6F47B3-EB72-435D-A519-15EA4D75A760

Содержимое разделов представляет собой файл startup.nsh в корне с "fs0: \ EFI \ BOOT \ bootx64.efi" ... иуказанный файлТакже есть grub.cfg ..

Я использовал VBoxManage для создания vmdk образа и попытался загрузить как vmware, так и virtualbox в режиме efi ... Если я использовал живой диск, я могу проверитьсодержимое новых виртуальных дисков.Я также использую nuc, чтобы попытаться загрузить живой USB.

Для справки приведен фрагмент кода, который создает изображение.

    partBoot = PartInfo(bootSize, "fat32", "./EFI.img")
    partBoot.flags.append(18) # set the esp flag, for some reason this is not defined
    partBoot.flags.append(parted.PARTITION_BOOT)

    partFlash = PartInfo(flashSize, "ext4", "./OS.img")

    # make a list of partitions
    partInfos = [
        partBoot,
        partFlash
    ]
    dev = parted.getDevice(sImageName)
    dev.clobber()
    disk = parted.freshDisk(dev, 'gpt')

    # Create the disk image
    for partInfo in partInfos:
        # setup geometry
        sectors = bytesToSectors(dev, partInfo.iBytes)
        offset = bytesToSectors(dev, partInfo.iOffset)
        geometry = getGeometry(disk, offset, sectors)

        part = parted.Partition(disk=disk, type=parted.PARTITION_NORMAL, geometry=geometry)
        part.system = parted.fileSystemType[partInfo.sFileSystem]

        disk.addPartition(part, parted.Constraint(device=dev))
        partInfo.part = part

        for flag in partInfo.flags:
            part.setFlag(flag)

    disk.commit()

    for partInfo in partInfos:
        seek = partInfo.part.geometry.start
        system("dd if="+partInfo.sImagePath+" of="+OUTIMAGE+" bs=512 seek=" + str(seek))

Я затрудняюсь понять, что делать дальше, почему этот раздел не распознаетсялюбой прошивкой EFI.

...