diff options
author | Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> | 2018-05-11 16:32:31 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-05-22 13:09:01 +0100 |
commit | 450335ba5e73a375eb9932b4c4cf37979640dbfc (patch) | |
tree | b99ab6388c281fd6ca53b407d381628d444dd4e0 /scripts | |
parent | f23332dc6a0c5b49246b4d17ec4e6fcad0cb7d47 (diff) | |
download | openembedded-core-contrib-450335ba5e73a375eb9932b4c4cf37979640dbfc.tar.gz |
wic: Fix partition files UIDs on multi rootfs images
When a wks makes reference to multiple rootfs, libspeudo data is not
properly chossen. This results in filesystems with invalid UIDs for all
the files.
This can be tested with this .wks file:
part / --source rootfs --fstype=ext4 --rootfs-dir=core-image-base
part /mnt/data1/ --fstype=ext4 --source rootfs --rootfs-dir=core-image-minimal
part /mnt/data2/ --fstype=ext4 --source rootfs --rootfs-dir=core-image-minimal
And this script
$bitbake core-image-minimal core-image-base syslinux
$losetup --partscan --find --read-only --show test*direct
$sudo mount /dev/loop0p1 /mnt
$ls -lan /mnt
otal 40
drwxr-xr-x 18 0 0 1024 May 11 16:11 .
drwxr-xr-x 25 0 0 4096 May 6 06:31 ..
drwxr-xr-x 2 1000 1000 3072 May 11 15:51 bin
drwxr-xr-x 2 1000 1000 1024 May 11 13:59 boot
drwxr-xr-x 2 1000 1000 1024 May 11 13:59 dev
drwxr-xr-x 25 1000 1000 3072 May 11 15:51 etc
drwxr-xr-x 3 1000 1000 1024 May 11 13:59 home
drwxr-xr-x 6 1000 1000 3072 May 11 15:51 lib
drwx------ 2 0 0 12288 May 11 16:11 lost+found
drwxr-xr-x 2 1000 1000 1024 May 11 13:59 media
drwxr-xr-x 3 1000 1000 1024 May 11 15:50 mnt
drwxr-xr-x 2 1000 1000 1024 May 11 13:59 proc
drwxr-xr-x 2 1000 1000 1024 May 11 15:51 run
drwxr-xr-x 2 1000 1000 3072 May 11 15:51 sbin
drwxr-xr-x 2 1000 1000 1024 May 11 13:59 sys
drwxr-xr-t 2 1000 1000 1024 May 11 13:59 tmp
drwxr-xr-x 10 1000 1000 1024 May 11 14:54 usr
drwxr-xr-x 8 1000 1000 1024 May 11 14:55 var
$sudo losetup -d /dev/loop0
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/wic/partition.py | 2 | ||||
-rw-r--r-- | scripts/lib/wic/plugins/imager/direct.py | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index 3fe5c4e26c4..c73af9d4275 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -211,7 +211,7 @@ class Partition(): """ p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot) p_localstatedir = os.environ.get("PSEUDO_LOCALSTATEDIR", - "%s/../pseudo" % get_bitbake_var("IMAGE_ROOTFS")) + "%s/../pseudo" % rootfs_dir) p_passwd = os.environ.get("PSEUDO_PASSWD", rootfs_dir) p_nosymlinkexp = os.environ.get("PSEUDO_NOSYMLINKEXP", "1") pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py index 1fa6b917e66..81583e97b9f 100644 --- a/scripts/lib/wic/plugins/imager/direct.py +++ b/scripts/lib/wic/plugins/imager/direct.py @@ -122,6 +122,10 @@ class DirectPlugin(ImagerPlugin): if self._update_fstab(fstab_lines, self.parts): # copy rootfs dir to workdir to update fstab # as rootfs can be used by other tasks and can't be modified + new_pseudo = os.path.realpath(os.path.join(self.workdir, "pseudo")) + from_dir = os.path.join(os.path.join(image_rootfs, ".."), "pseudo") + from_dir = os.path.realpath(from_dir) + copyhardlinktree(from_dir, new_pseudo) new_rootfs = os.path.realpath(os.path.join(self.workdir, "rootfs_copy")) copyhardlinktree(image_rootfs, new_rootfs) fstab_path = os.path.join(new_rootfs, 'etc/fstab') |