genimage: nenhum erro de espaço livre para nova partição

2

Estou tentando configurar minha imagem de buildroot com genimage. Este é o arquivo de configuração padrão:

image boot.vfat {
  vfat {
    files = {
      "bcm2710-rpi-3-b.dtb",
      "rpi-firmware/bootcode.bin",
      "rpi-firmware/cmdline.txt",
      "rpi-firmware/config.txt",
      "rpi-firmware/fixup.dat",
      "rpi-firmware/start.elf",
      "kernel-marked/zImage"
    }
  }
  size = 32M
}

image sdcard.img {
  hdimage {
  }

  partition boot {
    partition-type = 0xC
    bootable = "true"
    image = "boot.vfat"
  }

  partition rootfs {
    partition-type = 0x83
    image = "rootfs.ext4"
  }
}

O nconfig > Os campos de imagens do sistema de arquivos são definidos para os valores padrão. Eu não preciso de mais espaço livre no rootfs.

Em vez disso, quero criar outra partição ext4, digamos de 100M. Então, este é o novo arquivo genimage que criei:

image boot.vfat {
  vfat {
    files = {
      "bcm2710-rpi-3-b.dtb",
      "rpi-firmware/bootcode.bin",
      "rpi-firmware/cmdline.txt",
      "rpi-firmware/config.txt",
      "rpi-firmware/fixup.dat",
      "rpi-firmware/start.elf",
      "kernel-marked/zImage"
    }
  }
  size = 32M
}

image opt.ext4 {
  ext4 { }
  size = 100M
}

image sdcard.img {
  hdimage {
  }

  partition boot {
    partition-type = 0xC
    bootable = "true"
    image = "boot.vfat"
  }

  partition rootfs {
    partition-type = 0x83
    image = "rootfs.ext4"
  }

  partition opt {
    partition-type = 0x83
    image = "opt.ext4"
  }
}

Mas isso retorna este erro:

genext2fs: couldn't allocate a block (no free space)
ext4(opt.ext4): failed to generate opt.ext4

Onde está o meu erro? Acho que não preciso reservar mais espaço nas configurações do buildroot porque estou criando uma nova partição, não estou redimensionando o rootfs!

    
por Mark 30.04.2016 / 18:33

1 resposta

0

Estou tendo um problema semelhante, verifique se você possui o GENEXT2FS ativado nas ferramentas do host.

R2_PACKAGE_HOST_GENEXT2FS=y

Parece que o buildroot está colocando todos os seus arquivos rootfs em cada partição que você define. Se você aumentar o tamanho máximo do arquivo e montar a partição, poderá ver todo o sistema de arquivos.

Eu descobri que você não deveria usar o genimage para criar a partição, mas referir-se a um sistema de arquivos já feito. (e remova a definição image application.ext4 no topo)

genimage.cfg:

partition application {
   partition-type = 0x83
   image = "application.ext4"
 }

Você cria o arquivo application.ext4 em sua pasta buildroot / output / images da seguinte forma:

dd if=/dev/zero of=application.ext4 bs=1M count=20
mke2fs application.ext4

Quando terminar, você pode montar a partição e ver que tem uma partição vazia em funcionamento! (No seu dispositivo físico ou no QEMU)

mkdir /mnt/test
mount -t ext4 /dev/vda3 /mnt/test

Eu sei que essa pergunta é antiga, mas perdi muito tempo com isso e parece que o Google não é muito cheio de recursos para esse problema.

    
por 11.04.2018 / 16:38