Ok so in systemd-204, in TRUSTY, you will find the following logic to
create the mount units:

- manager_loop
  - process-event (WATCH_MOUNT)
    - mount_fd_event
      - mount_load_proc_self_mountinfo
        - mount_add_one (if load_extras == true)
          - mount_add_extras
            - mount_add_device_links

The last function will add: device/mount/socket/swap/path/requires/...
dependencies in the mount unit to be created. The first one "device" is
handled by "mount_add_device_links" and, according to logic:

        if (p->passno > 0 &&
            UNIT(m)->manager->running_as == SYSTEMD_SYSTEM) {
                char *name;
                Unit *fsck;
                /* Let's add in the fsck service */

                /* aka SPECIAL_FSCK_SERVICE */
                name = unit_name_from_path_instance("systemd-fsck", p->what, 
".service");
                if (!name)
                        return -ENOMEM;

If filesystem option passno is 0, it won't have the systemd-fsck unit as
a requirement, meaning that no error will be given, allowing the mount
unit, created by snappy, to work.

----

Check it out:

1)

## /etc/fstab

LABEL=LVROOT / ext4 errors=remount-ro 0 1
LABEL=LVVAR /var ext4 defaults 0 1
LABEL=TESTE /teste ext4 defaults 0 1

$ sudo snap install hello-world

error: cannot perform the following tasks:
- Mount snap "core" (2898) ([start snap-core-2898.mount] failed with exit 
status 6: Failed to issue method call: Unit 
systemd-fsck@dev-disk-by\x2dlabel-LVVAR.service failed to load: No such file or 
directory. See system logs and 'systemctl status 
systemd-fsck@dev-disk-by\x2dlabel-LVVAR.service' for details.

2)

## /etc/fstab

LABEL=LVROOT / ext4 errors=remount-ro 0 1
LABEL=LVVAR /var ext4 defaults 0 0
LABEL=TESTE /teste ext4 defaults 0 0

$ sudo snap install hello-world
hello-world 6.3 from 'canonical' installed

----

Now I'm checking why debian/rules in systemd-204 didn't include
fsck@.service files in the final .deb for "systemd" package. Possibly
this wasn't noticed because at the time systemd was running in Trusty,
it wasn't imagined that mount units would be managed by systemd (like
snappy is doing now). I'll check if adding the units for fsck (plus
having systemd-fsck binary, already there) is enough for the mount logic
to work.

For now, use the workaround above ^.

** Changed in: systemd (Ubuntu Trusty)
       Status: Confirmed => In Progress

** Changed in: snapd
       Status: Confirmed => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1718966

Title:
  Cannot install snaps on Ubuntu 14.04 with /var on its own partition

Status in snapd:
  In Progress
Status in systemd package in Ubuntu:
  In Progress
Status in systemd source package in Trusty:
  In Progress

Bug description:
  Installing snaps is not possible on Ubuntu 14.04 when having /var on
  its own partition, whether its LVM or not.

  The issue is with the core snap being unable to mount:

  The error with /var isolated and using LVM:

  root@ubuntu:~# snap install canonical-livepatch
  error: cannot perform the following tasks:
  - Mount snap "core" (2898) ([start snap-core-2898.mount] failed with exit 
status 6: Failed to issue method call: Unit 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service failed to load: No such file or 
directory. See system logs and 'systemctl status 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service' for details.
  )

  The error with /var isolated but without using LVM:

  root@ubuntu:~# snap install canonical-livepatch
  error: cannot perform the following tasks:
  - Mount snap "core" (2898) ([start snap-core-2898.mount] failed with exit 
status 6: Failed to issue method call: Unit 
systemd-fsck@dev-disk-by\x2duuid-7383abd2\x2d019c\x2d46c2\x2d8b36\x2d34633cc8f3ca.service
 failed to load: No such file or directory. See system logs and 'systemctl 
status 
systemd-fsck@dev-disk-by\x2duuid-7383abd2\x2d019c\x2d46c2\x2d8b36\x2d34633cc8f3ca.service'
 for details.
  )

  The same error happens if I try to install the hello-world snap (with
  LVM in this example):

  root@ubuntu:~# snap install hello-world
  error: cannot perform the following tasks:
  - Mount snap "core" (2898) ([start snap-core-2898.mount] failed with exit 
status 6: Failed to issue method call: Unit 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service failed to load: No such file or 
directory. See system logs and 'systemctl status 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service' for details.
  )

  I cannot reproduce the issue in Ubuntu 16.04.

  I couldn't reproduce this issue by using the Ubuntu 14.04 cloud image
  which doesn't isolate /var on its own partition. I tried adding a
  secondary disk to that cloud image VM and create a dummy VG and LV,
  but couldn't reproduce the issue.

  Also could not reproduce using Ubuntu 14.04 (with LVM or not) but with
  only a / partition and swap.

  
  Steps to reproduce:
  ===================

  # Install Ubuntu 14.04 in KVM (I used the 14.04.4 server iso) and
  configure /, /var and swap on their own partitions (with LVM or not,
  the issue happens in both situations).

  root@ubuntu:~# lvs
  LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
  rootvol vg00 -wi-ao--- 3.72g 
  swap vg00 -wi-ao--- 3.72g 
  varvol vg00 -wi-ao--- 3.72g 

  root@ubuntu:~# df -h
  Filesystem               Size  Used Avail Use% Mounted on
  udev                     484M  4.0K  484M   1% /dev
  tmpfs                    100M  988K   99M   1% /run
  /dev/dm-0                3.7G  1.7G  1.8G  49% /
  none                     4.0K     0  4.0K   0% /sys/fs/cgroup
  none                     5.0M     0  5.0M   0% /run/lock
  none                     497M     0  497M   0% /run/shm
  none                     100M     0  100M   0% /run/user
  /dev/mapper/vg00-varvol  3.7G  716M  2.8G  21% /var

  
  # Upgrade system, install snapd and reboot

  root@ubuntu:~# apt update
  root@ubuntu:~# apt upgrade -y
  root@ubuntu:~# apt install -y snapd
  root@ubuntu:~# reboot

  
  # After reboot, check kernel version and try to install the 
canonical-livepatch snap:

  root@ubuntu:~# uname -a
  Linux ubuntu 4.4.0-96-generic #119~14.04.1-Ubuntu SMP Wed Sep 13 08:40:48 UTC 
2017 x86_64 x86_64 x86_64 GNU/Linux

  root@ubuntu:~# snap list
  No snaps are installed yet. Try "snap install hello-world".

  root@ubuntu:~# snap install canonical-livepatch
  error: cannot perform the following tasks:
  - Mount snap "core" (2898) ([start snap-core-2898.mount] failed with exit 
status 6: Failed to issue method call: Unit 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service failed to load: No such file or 
directory. See system logs and 'systemctl status 
systemd-fsck@dev-mapper-vg00\x2dvarvol.service' for details.
  )

To manage notifications about this bug go to:
https://bugs.launchpad.net/snapd/+bug/1718966/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to