Message ID | 20240423095152.1433661-1-Quirin.Gylstorff@siemens.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | classes/rootfs: remove content of /dev in postprocessing | expand |
On Tue, 2024-04-23 at 11:49 +0200, Quirin Gylstorff wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > `/dev` is populated by the kernel/initrd during boot up and non > reproducable. > > Use a seperate function as /dev must not be mount before the content > is removed. > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> + Reported-by: Felix Moessbauer <felix.moessbauer@siemens.com> That helps to keep the original people in the loop in case further bugs show up. > --- > meta/classes/rootfs.bbclass | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/meta/classes/rootfs.bbclass > b/meta/classes/rootfs.bbclass > index 498fbfd6..1d4bea59 100644 > --- a/meta/classes/rootfs.bbclass > +++ b/meta/classes/rootfs.bbclass > @@ -340,6 +340,14 @@ python do_rootfs_postprocess() { > } > addtask rootfs_postprocess before do_rootfs after do_unpack > > +# use a seperate function instead of postprocessing as dev should > +# not be mount on removal > +do_rootfs_clean_dev[network] = "${TASK_USE_SUDO}" > +do_rootfs_clean_dev() { > + sudo rm -rf "${ROOTFSDIR}/dev/"* I just found out that /run also needs to be cleared. In addition, the ".old" kernel parts should also be removed: - initrd.img.old - vmlinuz.old Felix > +} > +addtask rootfs_clean_dev before do_rootfs after > do_rootfs_postprocess > + > python do_rootfs() { > """Virtual task""" > pass
On 23.04.24 12:45, 'MOESSBAUER, Felix' via isar-users wrote: > On Tue, 2024-04-23 at 11:49 +0200, Quirin Gylstorff wrote: >> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >> >> `/dev` is populated by the kernel/initrd during boot up and non >> reproducable. >> >> Use a seperate function as /dev must not be mount before the content >> is removed. >> >> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > + Reported-by: Felix Moessbauer <felix.moessbauer@siemens.com> > > That helps to keep the original people in the loop in case further bugs > show up. > >> --- >> meta/classes/rootfs.bbclass | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/meta/classes/rootfs.bbclass >> b/meta/classes/rootfs.bbclass >> index 498fbfd6..1d4bea59 100644 >> --- a/meta/classes/rootfs.bbclass >> +++ b/meta/classes/rootfs.bbclass >> @@ -340,6 +340,14 @@ python do_rootfs_postprocess() { >> } >> addtask rootfs_postprocess before do_rootfs after do_unpack >> >> +# use a seperate function instead of postprocessing as dev should >> +# not be mount on removal >> +do_rootfs_clean_dev[network] = "${TASK_USE_SUDO}" >> +do_rootfs_clean_dev() { >> + sudo rm -rf "${ROOTFSDIR}/dev/"* > > I just found out that /run also needs to be cleared. > > In addition, the ".old" kernel parts should also be removed: > > - initrd.img.old > - vmlinuz.old > I wonder why none of this so far triggered the repro test of isar-cip-core. Any idea why? Jan
On Tue, 2024-04-23 at 22:39 +0200, Jan Kiszka wrote: > On 23.04.24 12:45, 'MOESSBAUER, Felix' via isar-users wrote: > > On Tue, 2024-04-23 at 11:49 +0200, Quirin Gylstorff wrote: > > > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > > > > > `/dev` is populated by the kernel/initrd during boot up and non > > > reproducable. > > > > > > Use a seperate function as /dev must not be mount before the > > > content > > > is removed. > > > > > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > > > + Reported-by: Felix Moessbauer <felix.moessbauer@siemens.com> > > > > That helps to keep the original people in the loop in case further > > bugs > > show up. > > > > > --- > > > meta/classes/rootfs.bbclass | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/meta/classes/rootfs.bbclass > > > b/meta/classes/rootfs.bbclass > > > index 498fbfd6..1d4bea59 100644 > > > --- a/meta/classes/rootfs.bbclass > > > +++ b/meta/classes/rootfs.bbclass > > > @@ -340,6 +340,14 @@ python do_rootfs_postprocess() { > > > } > > > addtask rootfs_postprocess before do_rootfs after do_unpack > > > > > > +# use a seperate function instead of postprocessing as dev > > > should > > > +# not be mount on removal > > > +do_rootfs_clean_dev[network] = "${TASK_USE_SUDO}" > > > +do_rootfs_clean_dev() { > > > + sudo rm -rf "${ROOTFSDIR}/dev/"* > > > > I just found out that /run also needs to be cleared. > > > > In addition, the ".old" kernel parts should also be removed: > > > > - initrd.img.old > > - vmlinuz.old > > > > I wonder why none of this so far triggered the repro test of > isar-cip-core. Any idea why? The squashfs in isar-cip-core also contains all these files. These are likely "reproducible", as these are just symlinks and dirs. The /dev mount is a devtmpfs though. By that, the content might depend on the kernel of the build system - and this reproducibility issue we can't detect in our test as both builds are performed on the same host. OT: This also applies to all loopback mounts, which we must avoid to be reproducible (didn't check if we currently have any). Anyways, the mentioned dirs should be cleared as they are overmounted by systemd anyways (man file-hierarchy). Felix > > Jan >
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 498fbfd6..1d4bea59 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -340,6 +340,14 @@ python do_rootfs_postprocess() { } addtask rootfs_postprocess before do_rootfs after do_unpack +# use a seperate function instead of postprocessing as dev should +# not be mount on removal +do_rootfs_clean_dev[network] = "${TASK_USE_SUDO}" +do_rootfs_clean_dev() { + sudo rm -rf "${ROOTFSDIR}/dev/"* +} +addtask rootfs_clean_dev before do_rootfs after do_rootfs_postprocess + python do_rootfs() { """Virtual task""" pass