I'm currently trying to create a multi RootFS WIC image as mentioned in
directdisk-multi-rootfs.wks. For that I have two image recipes. One that is creating only an ext4 image (image-recovery), and the second that is also creating a WIC image (image-main). I used the IMAGE_FSTYPES variable for that. The WKS file for the second image is integrating the recovery image by specifying --rootfs-dir=image-recovery in it's part description.

# primary / recovery image
part / --source rootfs --rootfs-dir=image-main --exclude-path mnt/data/ mnt/data2/ --fstype=ext4 --label primary_rootfs --align 1024 --size 700 --overhead-factor=1.0 part /recovery --source rootfs --rootfs-dir=image-recovery --fstype=ext4 --label recovery_rootfs --align 1024 --size 640 --overhead-factor=1.0

The UIDs of the second rootfs (image-main) are correctly set to 0 within the file system when calling mkfs.ext4 during prepare_rootfs_ext. For the recovery rootfs the UID is always set to my own (host) one which is of course not valid for the image where that UID does not exist. I tried calling the mkfs.ext4 command myself from a terminal and for whatever reason an image created out of the rootfs folder of the second image (image-main) recipe is deployed with the correct UID 0, while the rootfs folder of the first image (image-recovery) recipe always uses the UID of the source folder/files.

I search the code of e2fsprogs for the line that sets the UID and added a printf in set_inode_extra. There I can see clearly that the source UID for the file is 0 for the rootfs of the image-main rootfs folder while it is 10000 (my own UID) for the image-recovery. I wonder how the UID of the image-main rootfs folder can be zero when I don't call any command with root permissions. I searched for a preparation step where the UIDs are managed in the scripts folder of Yocto, but didn't found any hint for the whole behavior. So while it is good that the rootfs partition of the main rootfs has the UID set correctly to zero, I can't understand why it happens. On the other side I can understand why the UID of the recovery rootfs is set to my own one, but it stops me from booting that rootfs because the UIDs of the files and folders are set to a user that does not exist on the target system.

Can someone please explain to me, how that UID handling is meant to be done?
--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to