我正在创建一个基于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
在通用x86.wks中。这会在最终的 wic 映像中创建实际的/home
分区,但它自然不会保存任何数据,因为它没有相应的rootfs
。这会导致启动后出现以下非常预期的消息:No directory, logging in with HOME=/
。
令人惊讶的是,互联网上关于这方面的信息很少。有这样的解释:
创建或修改构建要简单得多 为每个分区准备一个 rootfs 目录的配方。
我只是希望文档或示例中有任何关于如何实现这一目标的参考。
我可以看到分区是由像rootfs.py
这样的 python 脚本(插件)填充的,并且像IMAGE_ROOTFS_SIZE
这样的图像参数是在提到的图像配方文件中指定的,如genericx86.wks
,但这还不足以让我将这些部分连接在一起。
我已经阅读了使用wic创建分区映像和链接的openembedded kickstart手册,那里没有任何线索。
感谢某人的善意帮助。
使用 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
后缀,这一点很重要。
我遇到了同样的问题,Nayfe提出的解决方案确实对我有用(一点):它创建了分区并用/home
的内容填充了它。但是分区没有挂载,/home
中的文件权限被破坏了。
为了挂载分区,我在/etc/fstab
中添加了一个条目(帮助:Yocto 配方以更新/etc/fstab)
为了解决所有权/权限问题,我使用了--change-directory=home
而不是--rootfs-dir=${IMAGE_ROOTFS}/home
。(它还修复了do_image_wic
期间发出的警告,这有助于搜索问题的根源:.../pseudo folder does not exist. Usernames and permissions will be invalid
)