[systemd-devel] stacked extension not working

Luca Boccassi bluca at debian.org
Tue Oct 19 22:01:36 UTC 2021


On Tue, 2021-10-19 at 16:09 +0200, Umut Tezduyar Lindskog wrote:
> Hi Luca, have you had time to help me out or do you think you could
> help me
> out? Thanks in advance.

Works fine for me with systemd 249.5:

$ tar xf ~/Downloads/portable.tar
$ mksquashfs base/ base.raw
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on base.raw, block size 131072.
[=======================================================================================================|] 23/23 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 918.80 Kbytes (0.90 Mbytes)
	39.83% of uncompressed filesystem size (2306.95 Kbytes)
Inode table size 359 bytes (0.35 Kbytes)
	35.69% of uncompressed inode table size (1006 bytes)
Directory table size 319 bytes (0.31 Kbytes)
	62.80% of uncompressed directory table size (508 bytes)
Number of duplicate files found 3
Number of inodes 29
Number of files 9
Number of fragments 2
Number of symbolic links 0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 20
Number of ids (unique uids + gids) 1
Number of uids 1
	luca (1000)
Number of gids 1
	luca (1000)
$ mksquashfs stackupper/ stackupper.raw
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on stackupper.raw, block size 131072.
[=========================================================================================================|] 3/3 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 33.94 Kbytes (0.03 Mbytes)
	41.81% of uncompressed filesystem size (81.18 Kbytes)
Inode table size 269 bytes (0.26 Kbytes)
	34.98% of uncompressed inode table size (769 bytes)
Directory table size 261 bytes (0.25 Kbytes)
	58.78% of uncompressed directory table size (444 bytes)
Number of duplicate files found 2
Number of inodes 24
Number of files 5
Number of fragments 1
Number of symbolic links 1
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 18
Number of ids (unique uids + gids) 1
Number of uids 1
	luca (1000)
Number of gids 1
	luca (1000)
$ sudo portablectl attach --runtime --extension $PWD/stackupper.raw $PWD/base.raw stackupper
(Matching unit files with prefixes 'stackupper'.)
Created directory /run/systemd/system.attached.
Created directory /run/systemd/system.attached/stackupper.service.d.
Written /run/systemd/system.attached/stackupper.service.d/20-portable.conf.
Created symlink /run/systemd/system.attached/stackupper.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
Copied /run/systemd/system.attached/stackupper.service.
Created symlink /run/portables/stackupper.raw → /tmp/portable/stackupper.raw.
Created symlink /run/portables/base.raw → /tmp/portable/base.raw.
$ sudo systemctl start stackupper
$ systemctl status stackupper
○ stackupper.service
     Loaded: loaded (/run/systemd/system.attached/stackupper.service; static)
    Drop-In: /run/systemd/system.attached/stackupper.service.d
             └─10-profile.conf, 20-portable.conf
     Active: inactive (dead)

Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- oom_score
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- oom_score_adj
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- pagemap
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- patch_state
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- personality
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- projid_map
Oct 19 22:57:16 luca-desktop tree[100886]: |   |   |   |   |-- root -> [Error\ reading\ symbolic\ link\ information]
Oct 19 22:57:17 luca-desktop systemd[1]: stackupper.service: Deactivated successfully.
Oct 19 22:57:17 luca-desktop systemd[1]: Finished stackupper.service.
Oct 19 22:57:17 luca-desktop systemd[1]: stackupper.service: Consumed 1.022s CPU time.

> On Mon, Oct 18, 2021 at 12:56 PM Umut Tezduyar Lindskog
> <umut at tezduyar.com>
> wrote:
> 
> > 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.
> > > > > 
> > > 
> > > 

-- 
Kind regards,
Luca Boccassi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20211019/5bae83af/attachment-0001.sig>


More information about the systemd-devel mailing list