【问题标题】:Yocto - Create and populate a separate /home partitionYocto - 创建并填充一个单独的 /home 分区
【发布时间】:2019-05-17 13:15:10
【问题描述】:

我正在创建一个非常简单的基于 x86 的 Yocto 图像。

我希望/文件系统是只读的,所以我设置了

IMAGE_FEATURES_append = " read-only-rootfs "

在原始core-image-minimal.bb 的自定义副本中。不过,我确实希望 /home 可写并位于单独的分区上。

所以,我要添加一行

part /home --ondisk sda --fstype=ext4 --label home --align 1024 --size 600

在 genericx86.wks 中。这会在最终的 wic 映像中创建实际的 /home 分区,但它自然不保存任何数据,因为它没有对应的 rootfs。这会导致启动后出现以下完全预期的消息:No directory, logging in with HOME=/

互联网上关于此的信息非常少。有this解释:

创建或修改构建更简单 为每个分区准备一个 rootfs 目录的方法。

我只是希望文档或示例中有任何关于如何实现这一点的参考。

我可以看到分区是由诸如rootfs.py 之类的python 脚本(插件)填充的,并且IMAGE_ROOTFS_SIZE 之类的图像参数是在genericx86.wks 等提到的图像配方文件中指定的,但这不是足以让我将这些部分连接在一起。

我已经阅读了creating-partitioned-images-using-wic 和链接的openembedded kickstart 手册,那里没有任何线索。

感谢某人的善意帮助。

【问题讨论】:

    标签: yocto openembedded yocto-wic


    【解决方案1】:

    使用 WIC,您可以执行以下操作:

    custom.wks.in

    ...
    
    part / --source rootfs --ondisk sda --fstype=ext4 --label system --exclude-path=home/    
    part /home --source rootfs --rootfs-dir=${IMAGE_ROOTFS}/home --ondisk sda --fstype=ext4 --label home
    
    ...
    

    请注意,如果您想在 WKS 文件中使用 ${IMAGE_ROOTFS} 以使用 .in 后缀命名它,这一点很重要。

    【讨论】:

    • 非常感谢您快速正确的回复。我刚刚对其进行了测试,效果很好,也很有意义。我已将原始wks 文件复制到我的 wic 文件夹下的层:wic/myfile.wks.in,在我层的layer.conf 中添加了WKS_FILE="myfile.wks.in",并在文件内部根据您的建议更改了分区。另外添加--size设置/home的大小也没有问题。
    • 第一次花了这么多时间来理解如何做,很高兴它有所帮助:)
    • 这里有一个问题,当我们添加任何额外的分区时,图像(.wic)的大小是否会增加?我刚刚创建了一个 1GB 的分区,我的图像大小增加了 1GB。
    • Wic 在启用包管理功能时增加 1Gb。要修复分区大小,您必须设置IMAGE_ROOTFS_EXTRA_SPACE = "0"IMAGE_OVERHEAD_FACTOR = "1.0"IMAGE_ROOTFS_SIZE = "<size>"IMAGE_ROOTFS_MAXSIZE = "<size>"
    • @alebo611 你可以从recipe或ROOTFS_POSTPROCESS_COMMAND创建一个“foo”文件夹,它应该可以工作
    猜你喜欢
    • 2015-01-23
    • 2020-06-16
    • 2020-03-14
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多