[systemd-devel] stacked extension not working

Umut Tezduyar Lindskog umut at tezduyar.com
Mon Oct 18 10:56:44 UTC 2021


Hi again. I tried renaming (
https://www.freedesktop.org/software/systemd/man/os-release.html) it but
that didn't work. I am not getting any errors during the attachment phase
so I am not sure if the failure is due to extension file in any way.

A wish list is to be more verbose regarding what is going on during
extension file check/comparison and during overlaying /usr and /opt. I
think portablectl is quite verbose when it comes to preparing files, symb
links and what I wish fits well.

Could you please try it yourself? I put them in
https://drive.google.com/file/d/1LoN_swR7jgvo5yxajWjYK5ck_e8kJs1W/view?usp=sharing
there should be a download button on the top right. Appreciate your help.

Thanks,
Umut


On Fri, Oct 15, 2021 at 3:46 PM Luca Boccassi <bluca at debian.org> wrote:

> On Fri, 2021-10-15 at 14:59 +0200, Umut Tezduyar Lindskog wrote:
> > Thanks and I would have never figured it out without your help.
> > However, moving the binary to /opt didn't work either (I made sure
> > there is empty /opt in the base too). Anything else I am missing?
> >
> > root at osboxes:/home/osboxes/Development# tree stackupper/
> > stackupper/
> > ├── bin
> > │   └── umut
> > ├── dev
> > ├── etc
> > │   ├── machine-id
> > │   ├── resolv.conf
> > │   └── runtime
> > ├── lib -> usr/lib
> > ├── opt
> > │   └── tree
> > ├── proc
> > ├── root
> > ├── run
> > ├── sys
> > ├── tmp
> > ├── usr
> > │   ├── bin
> > │   └── lib
> > │       ├── extension-release.d
> > │       │   └── extension-release.base
> > │       └── systemd
> > │           └── system
> > │               └── stackupper.service
> > └── var
> >     └── tmp
> >
> > 18 directories, 7 files
> > root at osboxes:/home/osboxes/Development# cat
> > stackupper/usr/lib/systemd/system/stackupper.service
> > [Service]
> > Type=oneshot
> > ExecStart=/opt/tree /
>
> The extension-release file in the extension must be named exactly after
> the extension (eg: foo.raw must contain /usr/lib/extension-
> release.d/extension-release.foo), but in your case it's called ".base"
> which doesn't seem right, so double check that. This too is documented
> in the man page.
>
> > On Fri, Oct 15, 2021 at 2:23 PM Luca Boccassi <bluca at debian.org>
> > wrote:
> > > On Fri, 2021-10-15 at 12:18 +0000, Umut Tezduyar Lindskog wrote:
> > > > Hi, following works for us (for reference, configuration is
> > > printed
> > > > at the end)
> > > >
> > > > portablectl --now attach --extension=./stackupper ./base
> > > stackupper
> > > >
> > > > However, if we move the cat from base/usr/bin/cat to
> > > > stackupper/bin/cat it is not working. Seems like we cannot
> > > include
> > > > any library/executable in the extension.
> > > >
> > > > Are we missing something?
> > > >
> > > >
> > > > root at osboxes:/home/osboxes/Development# tree base/
> > > > base/
> > > > ├──bin
> > > > ├──dev
> > > > ├──etc
> > > > │   ├── machine-id
> > > > │   ├── os-release
> > > > │   └── resolv.conf
> > > > ├──lib
> > > > │   └── x86_64-linux-gnu
> > > > │       └── libc.so.6
> > > > ├──lib64
> > > > │   ├──ld-2.32.so
> > > > │   └── ld-linux-x86-64.so.2
> > > > ├──proc
> > > > ├──root
> > > > ├──run
> > > > ├──sys
> > > > ├──tmp
> > > > ├──usr
> > > > │   ├──bin
> > > > │   │   ├──cat
> > > > │   │   ├──echo
> > > > │   │   └── tree
> > > > │   └── lib
> > > > │       └── systemd
> > > > │           └── system
> > > > └── var
> > > >     └── tmp
> > > >
> > > > 18 directories, 9 files
> > > >
> > > > root at osboxes:/home/osboxes/Development# tree stackupper/
> > > > stackupper/
> > > > ├──bin
> > > > │   └── umut
> > > > ├──dev
> > > > ├──etc
> > > > │   ├── machine-id
> > > > │   ├── resolv.conf
> > > > │   └── runtime
> > > > ├──lib -> usr/lib
> > > > ├──proc
> > > > ├──root
> > > > ├──run
> > > > ├──sys
> > > > ├──tmp
> > > > ├──usr
> > > > │   ├──bin
> > > > │   └── lib
> > > > │       ├──extension-release.d
> > > > │       │   └── extension-release.base
> > > > │       └── systemd
> > > > │           └── system
> > > > │               └── stackupper.service
> > > > └── var
> > > >     └── tmp
> > > >
> > > > 17 directories, 6 files
> > > >
> > > > root at osboxes:/home/osboxes/Development# cat
> > > > stackupper/usr/lib/systemd/system/stackupper.service
> > > > [Service]
> > > > Type=oneshot
> > > > ExecStart=/usr/bin/cat /etc/os-release
> > > > root at osboxes:/home/osboxes/Development#systemctl --version
> > > > systemd 249 (249.4-1)
> > > > +PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT
> > > +GNUTLS -
> > > > OPENSSL +ACL +BLKID +CURL +ELFUTILS -FIDO2 +IDN2 -IDN +IPTC +KMOD
> > > > +LIBCRYPTSETUP -LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE
> > > +BZIP2
> > > > +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-
> > > > hierarchy=unified
> > >
> > > Hi,
> > >
> > > You need to build your extension with the binaries under either the
> > > /usr or /opt hierarchies. Legacy locations like /bin and /lib are
> > > ignored. This is explained in the systemd-sysext.8 manpage.
> > >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20211018/af8325f5/attachment.htm>


More information about the systemd-devel mailing list