2

Я пытаюсь настроить свой образ buildroot с помощью genimage. Это файл конфигурации по умолчанию:

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"
  }
}

Поля образов файловой системы nconfig> имеют значения по умолчанию. Мне не нужно больше свободного пространства на rootfs.

Вместо этого я хочу создать еще один раздел ext4, скажем, 100M. Итак, это новый файл genimage, который я создал:

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"
  }
}

Но он возвращает эту ошибку:

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

Где моя ошибка? Я думаю, мне не нужно резервировать больше места в настройках buildroot, потому что я создаю новый раздел, я не изменяю размер раздела rootfs!

1 ответ1

0

У меня похожая проблема, убедитесь, что у вас включен GENEXT2FS в инструментах хоста.

R2_PACKAGE_HOST_GENEXT2FS=y

Кажется, что buildroot помещает все ваши файлы rootfs в каждый раздел, который вы определяете. Если вы увеличите максимальный размер файла и смонтируете раздел, вы увидите всю файловую систему.

Я понял, что вам не следует использовать genimage для создания раздела, а обратиться к уже созданной файловой системе. (и удалите определение image application.ext4 вверху)

genimage.cfg:

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

Вы создаете файл application.ext4 в папке buildroot/output/images следующим образом:

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

Когда вы закончите, вы можете смонтировать раздел и увидеть, что у вас есть рабочий пустой раздел! (На вашем физическом устройстве или в QEMU)

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

Я знаю, что этот вопрос старый, но я потратил много времени на это, и похоже, что Google не слишком полон ресурсов для этой проблемы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .