summaryrefslogtreecommitdiffstats
path: root/scripts/lib
diff options
context:
space:
mode:
authorRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>2018-05-11 16:32:31 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-05-22 13:13:32 +0100
commit5f6bfdbff564577f0964fe89191addf4a57aac34 (patch)
tree52a77dcaaf38cc33c05770cf752117665d4e89e7 /scripts/lib
parent99745a4ddba99c43eeaaaebfd37f91b492e90cf1 (diff)
downloadpoky-5f6bfdbff564577f0964fe89191addf4a57aac34.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 (From OE-Core rev: 450335ba5e73a375eb9932b4c4cf37979640dbfc) Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-rw-r--r--scripts/lib/wic/partition.py2
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index 3fe5c4e26c..c73af9d427 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -211,7 +211,7 @@ class Partition():
211 """ 211 """
212 p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot) 212 p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot)
213 p_localstatedir = os.environ.get("PSEUDO_LOCALSTATEDIR", 213 p_localstatedir = os.environ.get("PSEUDO_LOCALSTATEDIR",
214 "%s/../pseudo" % get_bitbake_var("IMAGE_ROOTFS")) 214 "%s/../pseudo" % rootfs_dir)
215 p_passwd = os.environ.get("PSEUDO_PASSWD", rootfs_dir) 215 p_passwd = os.environ.get("PSEUDO_PASSWD", rootfs_dir)
216 p_nosymlinkexp = os.environ.get("PSEUDO_NOSYMLINKEXP", "1") 216 p_nosymlinkexp = os.environ.get("PSEUDO_NOSYMLINKEXP", "1")
217 pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix 217 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 1fa6b917e6..81583e97b9 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -122,6 +122,10 @@ class DirectPlugin(ImagerPlugin):
122 if self._update_fstab(fstab_lines, self.parts): 122 if self._update_fstab(fstab_lines, self.parts):
123 # copy rootfs dir to workdir to update fstab 123 # copy rootfs dir to workdir to update fstab
124 # as rootfs can be used by other tasks and can't be modified 124 # as rootfs can be used by other tasks and can't be modified
125 new_pseudo = os.path.realpath(os.path.join(self.workdir, "pseudo"))
126 from_dir = os.path.join(os.path.join(image_rootfs, ".."), "pseudo")
127 from_dir = os.path.realpath(from_dir)
128 copyhardlinktree(from_dir, new_pseudo)
125 new_rootfs = os.path.realpath(os.path.join(self.workdir, "rootfs_copy")) 129 new_rootfs = os.path.realpath(os.path.join(self.workdir, "rootfs_copy"))
126 copyhardlinktree(image_rootfs, new_rootfs) 130 copyhardlinktree(image_rootfs, new_rootfs)
127 fstab_path = os.path.join(new_rootfs, 'etc/fstab') 131 fstab_path = os.path.join(new_rootfs, 'etc/fstab')