buildroot中有多个分区?

问题描述 投票:0回答:1

让我们讨论一个构建系统映像的非常常见的情况,在这种情况下,我们需要将rootfs作为SquashFs确实是只读的,并需要将另一个ext4分区(比如说home)用于常规读取,写存储。

在buildroot环境中,系统映像布局(genimage.cfg)如下所示:

image sdcard.img {
  hdimage {}

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

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

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

image boot.vfat {
  vfat {
    files = {
      "bcm2711-rpi-4-b.dtb",
      "rpi-firmware/cmdline.txt",
      "rpi-firmware/config.txt",
      "rpi-firmware/fixup4.dat",
      "rpi-firmware/start4.elf",
      "rpi-firmware/overlays",
      "zImage"
    }
  }
  size = 16M
}

image home.ext4 {
  name = "home"
  mountpoint = "/home"
  ext4 {}
  size = 32M
}

但是在创建图像的最后阶段,我们最终得到一个错误:

>>   Executing post-image script ~/rpi4/post-image.sh
INFO: cmd: "mkdir -p "/home/iman/rpi4/genimage.tmp"" (stderr+stdout):
INFO: cmd: "rm -rf "/home/iman/rpi4/genimage.tmp"/*" (stderr+stdout):
DEBUG: hdimage(sdcard.img): adding implicit file rule for 'rootfs.squashfs'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'bcm2711-rpi-4-b.dtb'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/cmdline.txt'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/config.txt'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/fixup4.dat'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/start4.elf'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/overlays'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'zImage'
INFO: cmd: "mkdir -p "/home/iman/rpi4/genimage.tmp"" (stderr+stdout):
INFO: cmd: "cp -a "/tmp/tmp.dMfSigyUwW" "/home/iman/rpi4/genimage.tmp/root"" (stderr+stdout):
INFO: cmd: "mv "/home/iman/rpi4/genimage.tmp/root/home" "/home/iman/rpi4/genimage.tmp/home"" (stderr+stdout):
mv: cannot stat '/home/iman/rpi4/genimage.tmp/root/home': No such file or directory
Makefile:809: recipe for target 'target-post-image' failed
make[1]: *** [target-post-image] Error 1
Makefile:84: recipe for target '_all' failed
make: *** [_all] Error 2

应采取哪些其他步骤?

或更笼统地说,在buildroot中创建+挂载新分区的方法是什么?

embedded-linux partitioning buildroot
1个回答
0
投票

如果您想要一个空的/home目录,那么您应该not使用mountpoint关键字:

image home.ext4 {
  name = "home"
  ext4 {}
  size = 32M
}

mountpoint关键字不会not告诉将在哪里挂载分区。有关其功能的说明,请参见The genimage docs

[如果要从rootfs挂载分区,则可以将其添加到/etc/fstab,也许以rootfs覆盖(BR2_ROOTFS_OVERLAY)。 genimage无法控制实际安装的内容。

© www.soinside.com 2019 - 2024. All rights reserved.