wic/plugins: Fix boot plugin

Message ID 20201126080328.26721-1-Vijaikumar_Kanagarajan@mentor.com
State Superseded, archived
Headers show
Series wic/plugins: Fix boot plugin | expand

Commit Message

Vijai Kumar K Nov. 25, 2020, 10:03 p.m. UTC
When we use --use-uuid along with bootimg plugin, it is observed
that the uuid updated in /etc/fstab is not same as the one the
disk created by bootimg has.

The latest wic[1] creates a UUID for use for these plugins, our ISAR
version of these plugins were not consuming the uuid generated by
wic while generating the partition. Instead a default volume id is
generated which is different from what is written by wic in fstab;
resulting in boot failure.

Fix the ISAR bootimg plugins to use the uuid from wic.
Also, enable --use-uuid with bootimg-pcbios-isar plugin in
common-isar.wks.inc for a testcase.

[1] https://github.com/openembedded/openembedded-core/commit/9256b8799495634ee8aee5d16ff71bd6e6e25ed4

Reported-by: Henning Schild <henning.schild@siemens.com>
Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
 meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc   | 2 +-
 meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py    | 3 ++-
 meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py | 3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

Comments

Henning Schild Nov. 25, 2020, 10:39 p.m. UTC | #1
Am Thu, 26 Nov 2020 13:33:28 +0530
schrieb Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>:

> When we use --use-uuid along with bootimg plugin, it is observed
> that the uuid updated in /etc/fstab is not same as the one the
> disk created by bootimg has.
> 
> The latest wic[1] creates a UUID for use for these plugins, our ISAR
> version of these plugins were not consuming the uuid generated by
> wic while generating the partition. Instead a default volume id is
> generated which is different from what is written by wic in fstab;
> resulting in boot failure.
> 
> Fix the ISAR bootimg plugins to use the uuid from wic.
> Also, enable --use-uuid with bootimg-pcbios-isar plugin in
> common-isar.wks.inc for a testcase.
> 
> [1]
> https://github.com/openembedded/openembedded-core/commit/9256b8799495634ee8aee5d16ff71bd6e6e25ed4
> 
> Reported-by: Henning Schild <henning.schild@siemens.com>
> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
>  meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc   | 2 +-
>  meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py    | 3 ++-
>  meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py | 3 ++-
>  3 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc
> b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc index
> cc38a01..4290edb 100644 ---
> a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc +++
> b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc @@ -1,3
> +1,3 @@ # This file is included into 3 canned wks files from this
> directory -part /boot --source bootimg-pcbios-isar --ondisk sda
> --label boot --active --align 1024 +part /boot --use-uuid --source
> bootimg-pcbios-isar --ondisk sda --label boot --active --align 1024
> part / --source rootfs --ondisk sda --fstype=ext4 --label platform
> --align 1024 --exclude-path=boot diff --git

This is a deviation that you needed for testing, but it is not what
upstream wic does. I would suggest to drop that.

> a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
> b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py index
> 2285d2e..6b2fbc2 100644 ---
> a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py +++
> b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py @@ -276,7
> +276,8 @@ class BootimgEFIPlugin(SourcePlugin): # dosfs image,
> created by mkdosfs bootimg = "%s/boot.img" % cr_workdir 
> -        dosfs_cmd = "mkdosfs -n efi -C %s %d" % (bootimg, blocks)
> +        dosfs_cmd = "mkdosfs -n efi -i %s -C %s %d" % \
> +                    (part.fsuuid, bootimg, blocks)
>          exec_cmd(dosfs_cmd)

This seems like stuff that was forgotten about when bumping wic, right?

Maybe worth diffing our fork plugins with their originals, in old and
new wic to see if anything else was forgotten.

Henning
 
>          mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)
> diff --git
> a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py
> b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py index
> 493615b..b3d71c5 100644 ---
> a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py +++
> b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py @@
> -209,7 +209,8 @@ class BootimgPcbiosIsarPlugin(SourcePlugin): # dosfs
> image, created by mkdosfs bootimg = "%s/boot.img" % cr_workdir 
> -        dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (bootimg,
> blocks)
> +        dosfs_cmd = "mkdosfs -n boot -i %s -S 512 -C %s %d" % \
> +                    (part.fsuuid, bootimg, blocks)
>          exec_native_cmd(dosfs_cmd, native_sysroot)
>  
>          mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)
vijai kumar Nov. 25, 2020, 11:14 p.m. UTC | #2
On Thursday, November 26, 2020 at 2:09:56 PM UTC+5:30 Henning Schild wrote:

> Am Thu, 26 Nov 2020 13:33:28 +0530 
> schrieb Vijai Kumar K <Vijaikumar_...@mentor.com>: 
>
> > When we use --use-uuid along with bootimg plugin, it is observed 
> > that the uuid updated in /etc/fstab is not same as the one the 
> > disk created by bootimg has. 
> > 
> > The latest wic[1] creates a UUID for use for these plugins, our ISAR 
> > version of these plugins were not consuming the uuid generated by 
> > wic while generating the partition. Instead a default volume id is 
> > generated which is different from what is written by wic in fstab; 
> > resulting in boot failure. 
> > 
> > Fix the ISAR bootimg plugins to use the uuid from wic. 
> > Also, enable --use-uuid with bootimg-pcbios-isar plugin in 
> > common-isar.wks.inc for a testcase. 
> > 
> > [1] 
> > 
> https://github.com/openembedded/openembedded-core/commit/9256b8799495634ee8aee5d16ff71bd6e6e25ed4 
> > 
> > Reported-by: Henning Schild <henning...@siemens.com> 
> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com> 
> > --- 
> > meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc | 2 +- 
> > meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py | 3 ++- 
> > meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py | 3 ++- 
> > 3 files changed, 5 insertions(+), 3 deletions(-) 
> > 
> > diff --git a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc 
> > b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc index 
> > cc38a01..4290edb 100644 --- 
> > a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc +++ 
> > b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc @@ -1,3 
> > +1,3 @@ # This file is included into 3 canned wks files from this 
> > directory -part /boot --source bootimg-pcbios-isar --ondisk sda 
> > --label boot --active --align 1024 +part /boot --use-uuid --source 
> > bootimg-pcbios-isar --ondisk sda --label boot --active --align 1024 
> > part / --source rootfs --ondisk sda --fstype=ext4 --label platform 
> > --align 1024 --exclude-path=boot diff --git 
>
> This is a deviation that you needed for testing, but it is not what 
> upstream wic does. I would suggest to drop that. 
>

Will drop that in v2.
 

>
> > a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py 
> > b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py index 
> > 2285d2e..6b2fbc2 100644 --- 
> > a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py +++ 
> > b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py @@ -276,7 
> > +276,8 @@ class BootimgEFIPlugin(SourcePlugin): # dosfs image, 
> > created by mkdosfs bootimg = "%s/boot.img" % cr_workdir 
> > - dosfs_cmd = "mkdosfs -n efi -C %s %d" % (bootimg, blocks) 
> > + dosfs_cmd = "mkdosfs -n efi -i %s -C %s %d" % \ 
> > + (part.fsuuid, bootimg, blocks) 
> > exec_cmd(dosfs_cmd) 
>
> This seems like stuff that was forgotten about when bumping wic, right? 
>
> Maybe worth diffing our fork plugins with their originals, in old and 
> new wic to see if anything else was forgotten. 
>

Yes. I will try to align our plugins close to their respective parent in 
upstream and will
send out a separate patchset if there are any changes. 

Thanks,
Vijai Kumar K
 

>
> Henning 
>
> > mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir) 
> > diff --git 
> > a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py 
> > b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py index 
> > 493615b..b3d71c5 100644 --- 
> > a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py +++ 
> > b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py @@ 
> > -209,7 +209,8 @@ class BootimgPcbiosIsarPlugin(SourcePlugin): # dosfs 
> > image, created by mkdosfs bootimg = "%s/boot.img" % cr_workdir 
> > - dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (bootimg, 
> > blocks) 
> > + dosfs_cmd = "mkdosfs -n boot -i %s -S 512 -C %s %d" % \ 
> > + (part.fsuuid, bootimg, blocks) 
> > exec_native_cmd(dosfs_cmd, native_sysroot) 
> > 
> > mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir) 
>
>

Patch

diff --git a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc
index cc38a01..4290edb 100644
--- a/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc
+++ b/meta-isar/scripts/lib/wic/canned-wks/common-isar.wks.inc
@@ -1,3 +1,3 @@ 
 # This file is included into 3 canned wks files from this directory
-part /boot --source bootimg-pcbios-isar --ondisk sda --label boot --active --align 1024
+part /boot --use-uuid --source bootimg-pcbios-isar --ondisk sda --label boot --active --align 1024
 part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --exclude-path=boot
diff --git a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
index 2285d2e..6b2fbc2 100644
--- a/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
+++ b/meta/scripts/lib/wic/plugins/source/bootimg-efi-isar.py
@@ -276,7 +276,8 @@  class BootimgEFIPlugin(SourcePlugin):
         # dosfs image, created by mkdosfs
         bootimg = "%s/boot.img" % cr_workdir
 
-        dosfs_cmd = "mkdosfs -n efi -C %s %d" % (bootimg, blocks)
+        dosfs_cmd = "mkdosfs -n efi -i %s -C %s %d" % \
+                    (part.fsuuid, bootimg, blocks)
         exec_cmd(dosfs_cmd)
 
         mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)
diff --git a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py
index 493615b..b3d71c5 100644
--- a/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py
+++ b/meta/scripts/lib/wic/plugins/source/bootimg-pcbios-isar.py
@@ -209,7 +209,8 @@  class BootimgPcbiosIsarPlugin(SourcePlugin):
         # dosfs image, created by mkdosfs
         bootimg = "%s/boot.img" % cr_workdir
 
-        dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (bootimg, blocks)
+        dosfs_cmd = "mkdosfs -n boot -i %s -S 512 -C %s %d" % \
+                    (part.fsuuid, bootimg, blocks)
         exec_native_cmd(dosfs_cmd, native_sysroot)
 
         mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)