Skip to content

Clone from Rocky Linux to Debian fails on grub-boot-success.timer #8232

Open

Description

@stephdl

Steps to reproduce

  • Use a cluster with a Rocky Linux 9 node and a Debian 13 node
  • Install any rootless app on the Rocky node, for example Roundcube
  • Clone or move it to the Debian node

Expected behavior

The clone completes.

Actual behavior

The clone fails at the last step, even though the app on the Debian node is up and running:

action "clone-module" status is "aborted" (123) at step 90finalize
Failed to enable unit: Unit grub-boot-success.timer does not exist

On Rocky, the grub2-tools package enables grub-boot-success.timer for every user, so each app's timers.target lists it. Roundcube has no timer of its own, yet:

$ runagent -m roundcubemail3 systemctl --user show timers.target -p Wants --value
grub-boot-success.timer systemd-tmpfiles-clean.timer

transfer-state/10sendpayload saves this list as is. On the target, clone-module/90finalize runs xargs systemctl --user enable on it under set -e. Debian has no such timer, so the step stops with exit code 123. It never shipped one: the grub2 package of Debian 11, 12 and 13 has no grub-boot-success unit, so any Debian target is affected.

A possible fix: only save the timers the app enabled itself, or skip units that do not exist on the target.

Debian to Rocky works, and restore is not affected.

Components

NethServer core 3.22.0, Roundcube 2.1.10

Activity

  1. added theissue type on Oct 14, 2026
  2. added this to the NethServer 8.11 milestone on Oct 14, 2026
  3. self-assigned this
    on Oct 14, 2026
  4. moved this from ToDo to In Progress in NethServeron Oct 15, 2026
  5. stephdl commented on Oct 26, 2026

    @stephdl
    Author

    QA

    On Rocky, grub2-tools enables grub-boot-success.timer for every user, so every app sees it. The clone copied this timer to the target, and Debian has no such unit, so 90finalize failed. With the fix, the clone only copies the units the app enabled itself.

    Setup: one Rocky 9 node and one Debian 13 node, with core 3.24.1-dev.3 on both.

    1. Show the source of the bug. Install and configure Roundcube on Rocky, then run:
      runagent -m roundcubemail1 systemctl --user show timers.target -p Wants --value
      The output contains grub-boot-success.timer, even though Roundcube has no timer of its own.

    2. Clone to Debian. Clone Roundcube to the Debian node. Before the fix, this failed at 90finalize with Unit grub-boot-success.timer does not exist. Now the task completes and the app runs on Debian.

    3. Check that app units are still cloned. The fix changes how the list of enabled units is built, so the app's own units must still reach the clone. On the source and on the clone, run:
      runagent -m <roundcube> sh -c 'ls $AGENT_INSTALL_DIR/systemd/user/default.target.wants'
      Both list agent.service and roundcubemail.service.

    4. Move back to Rocky. Move the Debian instance to Rocky. Move uses the same code. The task completes and the units match.

    5. Clone Rocky to Rocky. Clone Roundcube on the same Rocky node. The task completes, the units match and both instances run.

  6. moved this from In Progress to Testing in NethServeron Oct 26, 2026
  7. added
    testingPackages are available from testing repositories
    on Oct 26, 2026
  8. removed their assignment
    on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    testingPackages are available from testing repositories

    Type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions