signalk-container 1.9.2 → 1.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -463,12 +463,18 @@ containers. The plugin auto-detects this scenario via `/.dockerenv` or
463
463
  For the plugin to work, two things must be true inside the Signal K
464
464
  container:
465
465
 
466
- 1. **The runtime CLI is installed.** Bake `podman` (or `podman-remote`)
467
- into your Signal K image this is the recommended path. As a quick
468
- alternative you can bind-mount the host binary read-only, but that
469
- couples the container to the host's exact runtime version.
470
- 2. **The runtime socket is bind-mounted** from the host (rootless or
471
- rootful, podman or docker — see examples below).
466
+ 1. **A matching runtime CLI is available** the CLI inside the SK
467
+ container must match the daemon on the host (Docker host `docker`;
468
+ Podman host `podman`). End users typically bind-mount the host
469
+ binary; image maintainers can bake it into a custom image.
470
+ 2. **The matching runtime socket is bind-mounted** from the host
471
+ (rootless or rootful podman, or docker).
472
+
473
+ Concrete platform-specific commands — for both end-user and
474
+ image-maintainer setups — are emitted by the deployment doctor (see
475
+ `/api/doctor/deployment` and the snippet generator below). Use those
476
+ as the source of truth; they always reflect the running plugin
477
+ version.
472
478
 
473
479
  ### Quick check: `/api/doctor/deployment`
474
480
 
@@ -638,6 +644,29 @@ is in cgroup state, not just on the command line.
638
644
  This is purely a host-side prerequisite; signalk-container cannot
639
645
  override the kernel's controller delegation.
640
646
 
647
+ #### Raspberry Pi OS: `cgroup_disable=memory` in the kernel cmdline
648
+
649
+ If you're on a Raspberry Pi 4/5 running Raspberry Pi OS Trixie (and
650
+ likely earlier Pi OS releases) and the systemd `Delegate=memory` snippet
651
+ above **doesn't work** — `cat /sys/fs/cgroup/cgroup.controllers` still
652
+ shows `cpuset cpu io pids` after a reboot — the cause is one level
653
+ deeper. The Pi's GPU firmware injects `cgroup_disable=memory` into the
654
+ kernel boot cmdline, so the memory controller never reaches systemd.
655
+
656
+ Quick check:
657
+
658
+ ```bash
659
+ grep -o "cgroup_disable=memory" /proc/cmdline
660
+ # Prints "cgroup_disable=memory" → you're hit.
661
+ ```
662
+
663
+ Full runbook with copy-pasteable commands, verification steps, and
664
+ revert instructions: **[doc/cgroup-memory-on-raspberry-pi-os.md](doc/cgroup-memory-on-raspberry-pi-os.md)**.
665
+
666
+ The deployment doctor at `/api/doctor/deployment` also detects this
667
+ scenario and surfaces the same kernel-cmdline fix in its `remediation`
668
+ array, so you don't have to guess which layer is broken first.
669
+
641
670
  ### Watch out for systemd auto-restart (Quadlet / `Restart=always`)
642
671
 
643
672
  If you run Signal K via a podman Quadlet (`*.container` in
package/dist/doctor.d.ts CHANGED
@@ -65,6 +65,18 @@ export interface SelfDeploymentProbes {
65
65
  * the doctor skips the cgroup status escalation entirely.
66
66
  */
67
67
  readCgroupControllers?: () => Promise<string[] | null>;
68
+ /**
69
+ * Read the kernel boot cmdline (production: `/proc/cmdline`). Used to
70
+ * detect the `cgroup_disable=memory` Raspberry-Pi-OS-Trixie quirk: the
71
+ * firmware-injected cmdline disables the memory cgroup controller
72
+ * before systemd ever gets a chance to delegate it. systemd's
73
+ * `Delegate=memory` then has nothing to delegate, and the "missing
74
+ * controller" symptom looks identical to plain missing delegation —
75
+ * the systemd-snippet remediation won't help. When this probe returns
76
+ * a cmdline containing the disable token, the remediation block
77
+ * surfaces the cmdline fix instead.
78
+ */
79
+ readKernelCmdline?: () => Promise<string | null>;
68
80
  }
69
81
  /**
70
82
  * Diagnose whether this Signal K deployment can drive `podman`/`docker`
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EAEpB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AAGzB;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,IAAI,GAAE,MAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;IAChC,iEAAiE;IACjE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CACxD;AAkBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,iBAAiB,EAC7B,IAAI,GAAE,MAAoB,EAC1B,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CA0I/B;AAgVD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,GAAE,kBAA8B,EACtC,QAAQ,GAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GACnD,kBAAkB,CAyBpB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EAEpB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AAGzB;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,IAAI,GAAE,MAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;IAChC,iEAAiE;IACjE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClD;AAkBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,iBAAiB,EAC7B,IAAI,GAAE,MAAoB,EAC1B,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAgJ/B;AA+aD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,GAAE,kBAA8B,EACtC,QAAQ,GAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GACnD,kBAAkB,CAyBpB"}
package/dist/doctor.js CHANGED
@@ -101,13 +101,14 @@ export async function selfDeployment(preference, exec = execRuntime, probes = {}
101
101
  const probeReadBinaryVersion = probes.readBinaryVersion ?? defaultReadBinaryVersion;
102
102
  const probeReadEnv = probes.readEnv ?? ((k) => process.env[k]);
103
103
  const probeReadCgroupControllers = probes.readCgroupControllers ?? defaultReadCgroupControllers;
104
+ const probeReadKernelCmdline = probes.readKernelCmdline ?? defaultReadKernelCmdline;
104
105
  const containerized = probeIsContainerized();
105
106
  const env = {
106
107
  DOCKER_HOST: probeReadEnv("DOCKER_HOST") ?? null,
107
108
  CONTAINER_HOST: probeReadEnv("CONTAINER_HOST") ?? null,
108
109
  XDG_RUNTIME_DIR: probeReadEnv("XDG_RUNTIME_DIR") ?? null,
109
110
  };
110
- const cgroupControllers = await probeCgroupControllers(probeReadCgroupControllers);
111
+ const cgroupControllers = await probeCgroupControllers(probeReadCgroupControllers, probeReadKernelCmdline);
111
112
  // 1. Binary discovery — honour preference; auto tries podman first.
112
113
  const candidates = preference === "auto" ? ["podman", "docker"] : [preference];
113
114
  let binaryName = null;
@@ -204,7 +205,7 @@ export async function selfDeployment(preference, exec = execRuntime, probes = {}
204
205
  },
205
206
  selfId,
206
207
  status: "cgroup-controllers-incomplete",
207
- remediation: remediationCgroupControllers(cgroupControllers.missing),
208
+ remediation: remediationCgroupControllers(cgroupControllers.missing, cgroupControllers.kernelDisabledMemory),
208
209
  };
209
210
  }
210
211
  return {
@@ -343,27 +344,102 @@ async function defaultReadCgroupControllers() {
343
344
  return null;
344
345
  }
345
346
  }
347
+ /**
348
+ * Production default for the kernel-cmdline probe. Reads `/proc/cmdline`,
349
+ * returning the single-line contents. Returns `null` on any read failure
350
+ * (non-Linux, restricted /proc) — never throws.
351
+ */
352
+ async function defaultReadKernelCmdline() {
353
+ try {
354
+ const raw = await readFile("/proc/cmdline", "utf8");
355
+ return raw.trim();
356
+ }
357
+ catch {
358
+ return null;
359
+ }
360
+ }
361
+ /**
362
+ * Detect whether the kernel was booted with the memory cgroup controller
363
+ * explicitly disabled. True when `cgroup_disable=memory` appears in the
364
+ * cmdline AND there is NO later `cgroup_enable=memory` overriding it.
365
+ * (Kernel parameters are evaluated left-to-right, so a later occurrence
366
+ * wins.) The Raspberry Pi OS Trixie firmware injects the disable token
367
+ * for legacy reasons; appending `cgroup_enable=memory cgroup_memory=1`
368
+ * to `/boot/firmware/cmdline.txt` is how you flip it back without
369
+ * touching the firmware blob.
370
+ */
371
+ function isKernelMemoryDisabled(cmdline) {
372
+ if (!cmdline)
373
+ return false;
374
+ const disableIdx = cmdline.lastIndexOf("cgroup_disable=memory");
375
+ if (disableIdx < 0)
376
+ return false;
377
+ const enableIdx = cmdline.lastIndexOf("cgroup_enable=memory");
378
+ return enableIdx <= disableIdx;
379
+ }
346
380
  /**
347
381
  * Run the cgroup-controllers probe and compute the missing set against
348
- * `EXPECTED_CGROUP_CONTROLLERS`. When the probe returns `null`, missing
349
- * is `[]` — we won't escalate status on a host we can't inspect.
382
+ * `EXPECTED_CGROUP_CONTROLLERS`. When the controllers probe returns
383
+ * `null`, missing is `[]` — we won't escalate status on a host we can't
384
+ * inspect. The cmdline probe runs in parallel and feeds the
385
+ * `kernelDisabledMemory` flag for the remediation block.
350
386
  */
351
- async function probeCgroupControllers(readControllers) {
352
- const available = await readControllers();
387
+ async function probeCgroupControllers(readControllers, readKernelCmdline) {
388
+ const [available, cmdline] = await Promise.all([
389
+ readControllers(),
390
+ readKernelCmdline(),
391
+ ]);
392
+ const kernelDisabledMemory = isKernelMemoryDisabled(cmdline);
353
393
  if (available === null) {
354
- return { available: null, missing: [] };
394
+ return { available: null, missing: [], kernelDisabledMemory };
355
395
  }
356
396
  const have = new Set(available);
357
397
  const missing = EXPECTED_CGROUP_CONTROLLERS.filter((c) => !have.has(c));
358
- return { available, missing };
398
+ return { available, missing, kernelDisabledMemory };
359
399
  }
360
400
  /**
361
- * Remediation block for `cgroup-controllers-incomplete`. Names the
362
- * missing controllers so the operator can match the symptom in their
363
- * config panel ("memory limit didn't stick"); the systemd snippet is
364
- * the same regardless of which controllers are absent.
401
+ * Remediation block for `cgroup-controllers-incomplete`. The cause has
402
+ * two distinct shapes; the operator needs different fixes for each.
403
+ *
404
+ * 1. Kernel was booted with `cgroup_disable=memory` (Raspberry Pi OS
405
+ * Trixie default). The memory controller never reaches systemd, so
406
+ * `Delegate=memory` does nothing. Fix is in the boot cmdline.
407
+ *
408
+ * 2. Kernel has the memory controller but the user@.service hasn't
409
+ * been told to delegate it. Fix is the systemd Delegate= snippet.
410
+ *
411
+ * We detect the kernel-level shape from /proc/cmdline and surface the
412
+ * correct fix; otherwise the systemd-level fix is the default.
365
413
  */
366
- function remediationCgroupControllers(missing) {
414
+ function remediationCgroupControllers(missing, kernelDisabledMemory) {
415
+ if (kernelDisabledMemory) {
416
+ return [
417
+ `Signal K is containerized and the kernel was booted with cgroup_disable=memory (common on Raspberry Pi OS Trixie — the GPU firmware injects this token).`,
418
+ "Until the memory controller is enabled at the kernel level, systemd's Delegate=memory has nothing to delegate, and consumer-plugin memory limits are silently dropped.",
419
+ "",
420
+ "Enable the memory controller in the kernel cmdline (one-time, requires root):",
421
+ " sudo cp /boot/firmware/cmdline.txt /boot/firmware/cmdline.txt.bak.$(date +%Y%m%d)",
422
+ " sudo sed -i 's/$/ cgroup_enable=memory cgroup_memory=1/' /boot/firmware/cmdline.txt",
423
+ " # Note: /boot/firmware/cmdline.txt must remain a single line — verify with `wc -l`.",
424
+ "",
425
+ "Reboot the host to pick up the new cmdline:",
426
+ " sudo reboot",
427
+ "",
428
+ "After reboot, the memory controller will appear in /sys/fs/cgroup/cgroup.controllers and systemd's Delegate=memory will start working.",
429
+ "If systemd's Delegate= isn't already configured for the user@.service, apply the snippet below first; otherwise the user slice still won't have memory in its subtree_control after reboot.",
430
+ " sudo mkdir -p /etc/systemd/system/user@.service.d",
431
+ " sudo tee /etc/systemd/system/user@.service.d/delegate.conf <<'EOF'",
432
+ " [Service]",
433
+ " Delegate=cpu cpuset io memory pids",
434
+ " EOF",
435
+ " sudo systemctl daemon-reload",
436
+ "",
437
+ "Verify inside the SK container after reboot:",
438
+ " podman exec <sk-container> cat /sys/fs/cgroup/cgroup.controllers",
439
+ " # or: docker exec <sk-container> cat /sys/fs/cgroup/cgroup.controllers",
440
+ " # memory should appear in the output",
441
+ ];
442
+ }
367
443
  return [
368
444
  `Signal K is containerized and the host has not delegated these cgroup v2 controllers: ${missing.join(", ")}.`,
369
445
  "Consumer plugins requesting limits on the missing controllers will have those limits silently dropped.",
@@ -443,30 +519,47 @@ const REMEDIATION_NO_RUNTIME_BARE_METAL = [
443
519
  "After install, restart Signal K.",
444
520
  ];
445
521
  const REMEDIATION_NO_RUNTIME_CONTAINERIZED = [
446
- "Signal K is running inside a container, but no container runtime",
447
- "(podman/docker) is reachable from inside this container. You need both:",
522
+ "Signal K is running inside a container, but no container runtime CLI",
523
+ "(podman or docker) is reachable from inside this container.",
524
+ "",
525
+ "Two things must be true: (1) the runtime CLI binary must exist inside",
526
+ "this container, and (2) the matching runtime socket from your host",
527
+ "must be bind-mounted in. Whichever runtime you already use on your",
528
+ "host — Docker (HALOS, Docker Desktop, docker-ce) or Podman — is the",
529
+ "one to wire up. signalk-container talks to whichever it finds.",
530
+ "",
531
+ "── If your host runs Docker (HALOS, Docker Desktop, plain docker-ce) ──",
532
+ "",
533
+ "Update your docker-compose / docker run for the SK service to add:",
448
534
  "",
449
- "1. The runtime CLI installed inside this container. Recommended:",
450
- " add `podman` (or `podman-remote`) to your Signal K image:",
451
- " RUN apt-get update && apt-get install -y podman # Debian/Ubuntu",
452
- " RUN dnf install -y podman-remote # Fedora/RHEL",
453
- " (As a quick alternative, bind-mount the host binary read-only:",
454
- " -v /usr/bin/podman:/usr/bin/podman:ro )",
535
+ " -v /usr/bin/docker:/usr/bin/docker:ro",
536
+ " -v /var/run/docker.sock:/var/run/docker.sock",
455
537
  "",
456
- "2. The runtime socket bind-mounted from the host:",
538
+ "The first line bind-mounts your host's docker CLI into the SK",
539
+ "container (no need to rebuild your image). The second exposes the",
540
+ "host's docker daemon. The SK container user must be in the host's",
541
+ "`docker` group, or you can use rootless docker.",
542
+ "",
543
+ "── If your host runs Podman (Fedora, RHEL, rootless Linux setups) ──",
544
+ "",
545
+ "Add to your SK container start command:",
546
+ "",
547
+ " -v /usr/bin/podman:/usr/bin/podman:ro",
548
+ " -v /run/user/$(id -u)/podman/podman.sock:/run/user/$(id -u)/podman/podman.sock",
549
+ " -e CONTAINER_HOST=unix:///run/user/$(id -u)/podman/podman.sock",
550
+ " --user $(id -u):$(id -g)",
457
551
  "",
458
- " Rootless Podman (recommended; matches signalk-container's default):",
459
- " -v /run/user/$(id -u)/podman/podman.sock:/run/user/$(id -u)/podman/podman.sock",
460
- " -e CONTAINER_HOST=unix:///run/user/$(id -u)/podman/podman.sock",
461
- " --user $(id -u):$(id -g)",
552
+ "(That's the rootless setup. For rootful Podman, replace the socket",
553
+ " path with /run/podman/podman.sock and drop the --user flag.)",
462
554
  "",
463
- " Rootful Podman:",
464
- " -v /run/podman/podman.sock:/run/podman/podman.sock",
465
- " -e CONTAINER_HOST=unix:///run/podman/podman.sock",
555
+ "── For image maintainers / advanced users ──",
466
556
  "",
467
- " Docker:",
468
- " -v /var/run/docker.sock:/var/run/docker.sock",
469
- " (SK container user must be in the host's docker group, or use rootless)",
557
+ "Bind-mounting the host's CLI couples the SK container to the host's",
558
+ "exact runtime version. If you publish a SK image and want a clean,",
559
+ "version-independent install, bake the CLI into the image instead:",
560
+ " RUN apt-get update && apt-get install -y docker-ce-cli # for Docker hosts",
561
+ " RUN apt-get update && apt-get install -y podman # for Podman hosts",
562
+ "You'll still need the socket bind-mount + group/user setup above.",
470
563
  ];
471
564
  const REMEDIATION_SOCKET_UNREACHABLE_PODMAN = [
472
565
  "Found podman binary, but cannot reach the podman socket.",
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -890,10 +890,20 @@ export interface SelfDeploymentResult {
890
890
  * true AND `missing` is non-empty, `status` escalates to
891
891
  * `cgroup-controllers-incomplete` (lower priority than runtime/socket/
892
892
  * self-id failures — those block more functionality).
893
+ *
894
+ * `kernelDisabledMemory` is true when `/proc/cmdline` contains
895
+ * `cgroup_disable=memory` without a later overriding
896
+ * `cgroup_enable=memory`. Hit on Raspberry Pi OS Trixie (and other
897
+ * RPi OS variants); the firmware-injected cmdline disables the memory
898
+ * controller before systemd ever sees it, so systemd's
899
+ * `Delegate=memory` has nothing to delegate. The doctor's remediation
900
+ * block surfaces the cmdline.txt fix in that case instead of the
901
+ * systemd-only fix that wouldn't help.
893
902
  */
894
903
  cgroupControllers: {
895
904
  available: string[] | null;
896
905
  missing: string[];
906
+ kernelDisabledMemory: boolean;
897
907
  };
898
908
  status: SelfDeploymentStatus;
899
909
  /** Empty when `status === "ok"`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,WAAW,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;IAC9C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,IAAI,GAAG,gBAAgB,GAAG,QAAQ,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IAC5D;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;CAC7D;AAED,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;;;;;;;;OAgBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,IAAI,oBAAoB,GAAG,IAAI,CAAC;IAC1C;;;;;;;;OAQG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;OAIG;IACH,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE;;;;;;;OAOG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACpD,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB;;;;;;;;OAQG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;OAgBG;IACH,uBAAuB,CACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChE;;;;;;;;;;;;OAYG;IACH,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrB;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,MAAM,EAAE;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,qBAAqB,CACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE,WAAW,CAAC;IACtB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;IACvD;;;;;;OAMG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;;;OAYG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,GAC7B,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE5D;;;;;;;;;;;OAWG;IACH,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEhD;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAClB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,IAAI,GACJ,YAAY,GACZ,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,+BAA+B,CAAC;AAEpC,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;QACzB,oFAAoF;QACpF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,8EAA8E;QAC9E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,+CAA+C;IAC/C,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,8EAA8E;QAC9E,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;QACzB,gEAAgE;QAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,6DAA6D;QAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;IACF,gEAAgE;IAChE,GAAG,EAAE;QACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF;;;;;OAKG;IACH,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;KAC9C,CAAC;IACF;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,EAAE;QACjB,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,MAAM,EAAE,oBAAoB,CAAC;IAC7B,oCAAoC;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B;4EACwE;IACxE,OAAO,EAAE,WAAW,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACxD;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpC;;;;;;;OAOG;IACH,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACrE;AAOD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ # Enabling the memory cgroup controller on Raspberry Pi OS
2
+
3
+ ## Why this matters
4
+
5
+ On a Raspberry Pi 4 or 5 running Raspberry Pi OS Trixie (Debian 13 base, and likely earlier Pi OS releases), the GPU firmware injects `cgroup_disable=memory` into the kernel boot cmdline. That disables the **memory cgroup controller** at the kernel level — before `systemd` even starts.
6
+
7
+ Consequence for signalk-container: every consumer plugin that requests a memory limit (e.g. `memory: '1g'`) gets that limit **silently dropped**, because the controller systemd would otherwise delegate doesn't exist on this kernel. The container runs with no memory cap; on a Pi 5 with a busy kopia + rclone backup or a memory-hungry chart provider, that can OOM-kill the entire SK process.
8
+
9
+ This page is the operator's fix.
10
+
11
+ ## Diagnose
12
+
13
+ ```bash
14
+ grep -o "cgroup_disable=memory" /proc/cmdline
15
+ # Prints "cgroup_disable=memory" → you're hit.
16
+ # Empty output → not this case; see signalk-container's README "Cgroup
17
+ # controller delegation" section for the systemd-Delegate= fix instead.
18
+ ```
19
+
20
+ The signalk-container `/api/doctor/deployment` endpoint flags this case automatically with `status: cgroup-controllers-incomplete` and surfaces these same commands in its `remediation` array.
21
+
22
+ ## Fix
23
+
24
+ The kernel evaluates cmdline tokens left-to-right; **a later token wins**. Append `cgroup_enable=memory cgroup_memory=1` to `/boot/firmware/cmdline.txt` so it sits _after_ the firmware-injected `cgroup_disable=memory`.
25
+
26
+ ```bash
27
+ sudo cp /boot/firmware/cmdline.txt /boot/firmware/cmdline.txt.bak.$(date +%Y%m%d)
28
+ sudo sed -i 's/$/ cgroup_enable=memory cgroup_memory=1/' /boot/firmware/cmdline.txt
29
+ ```
30
+
31
+ > [!important]
32
+ > `/boot/firmware/cmdline.txt` MUST remain a single line. Verify:
33
+ >
34
+ > ```bash
35
+ > sudo wc -l /boot/firmware/cmdline.txt # 0 (no trailing newline is fine, > 1 line is broken)
36
+ > sudo cat /boot/firmware/cmdline.txt # eyeball the appended tokens
37
+ > ```
38
+
39
+ Reboot for the kernel to re-parse the cmdline:
40
+
41
+ ```bash
42
+ sudo reboot
43
+ ```
44
+
45
+ ## Verify after reboot
46
+
47
+ ```bash
48
+ grep -oE "cgroup_enable=memory|cgroup_disable=memory" /proc/cmdline
49
+ # Both tokens appear — that's expected; the later cgroup_enable wins.
50
+
51
+ cat /sys/fs/cgroup/cgroup.controllers
52
+ # Output must include "memory":
53
+ # cpuset cpu io memory pids
54
+ ```
55
+
56
+ Then check that the SK container sees it too:
57
+
58
+ ```bash
59
+ podman exec <sk-container> cat /sys/fs/cgroup/cgroup.controllers
60
+ # or: docker exec <sk-container> cat /sys/fs/cgroup/cgroup.controllers
61
+ # Should match the host view — memory present.
62
+ ```
63
+
64
+ ## If memory is still missing after reboot
65
+
66
+ The kernel side is fixed but you may also need the systemd Delegate= snippet so the controller actually reaches the user slice the SK container runs in:
67
+
68
+ ```bash
69
+ sudo mkdir -p /etc/systemd/system/user@.service.d
70
+ sudo tee /etc/systemd/system/user@.service.d/delegate.conf <<'EOF'
71
+ [Service]
72
+ Delegate=cpu cpuset io memory pids
73
+ EOF
74
+ sudo systemctl daemon-reload
75
+ ```
76
+
77
+ Then log the SK-owning user out and back in (or reboot once more). This is the same systemd snippet described in signalk-container's main README under "Cgroup controller delegation" — both layers (kernel + user-slice delegation) need to be in place on Pi OS.
78
+
79
+ ## Revert
80
+
81
+ If you ever need to roll back:
82
+
83
+ ```bash
84
+ sudo cp /boot/firmware/cmdline.txt.bak.<your-date> /boot/firmware/cmdline.txt
85
+ sudo reboot
86
+ ```
87
+
88
+ ## Related
89
+
90
+ - signalk-container README: `Cgroup controller delegation` — generic systemd-Delegate= fix and the broader rationale
91
+ - signalk-container `/api/doctor/deployment` — runtime detection of both the kernel-disabled-memory case and the missing-systemd-delegation case, with the right remediation surfaced for each
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "signalk-container",
3
- "version": "1.9.2",
3
+ "version": "1.9.3",
4
4
  "description": "Shared container runtime management (Podman/Docker) for Signal K plugins",
5
5
  "keywords": [
6
6
  "signalk-node-server-plugin",