【问题标题】:Multiple partitions in buildroot?buildroot中有多个分区?
【发布时间】:2020-02-11 08:48:10
【问题描述】:

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

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

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】:

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

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

    mountpoint 关键字告诉分区将被挂载到哪里。请参阅 The genimage docs 了解它的作用。

    如果你想从你的 rootfs 挂载你的分区,那么你可以将它添加到 /etc/fstab,也许在 rootfs 覆盖 (BR2_ROOTFS_OVERLAY) 中。 genimage 无法控制实际挂载的内容。

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 2017-08-07
      • 2017-05-16
      相关资源
      最近更新 更多