Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 34 additions & 21 deletions bin/lib/onboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,28 +67,41 @@ async function preflight() {
process.exit(1);
}
}
console.log(` ✓ openshell CLI: ${runCapture("openshell --version 2>/dev/null || echo unknown", { ignoreError: true })}`);

// cgroup v2 + Docker cgroupns
const cgroup = checkCgroupConfig();
if (!cgroup.ok) {
console.error("");
console.error(" !! cgroup v2 detected but Docker is not configured for cgroupns=host.");
console.error(" OpenShell's gateway runs k3s inside Docker, which will fail with:");
console.error("");
console.error(" openat2 /sys/fs/cgroup/kubepods/pids.max: no such file or directory");
console.error("");
console.error(" To fix, run:");
console.error("");
console.error(" nemoclaw setup-spark");
console.error("");
console.error(" This adds \"default-cgroupns-mode\": \"host\" to /etc/docker/daemon.json");
console.error(" (preserving any existing settings) and restarts Docker.");
console.error("");
console.error(` Detail: ${cgroup.reason}`);
process.exit(1);
const openshellVersion = runCapture("openshell --version 2>/dev/null || echo unknown", { ignoreError: true }).trim();
console.log(` ✓ openshell CLI: ${openshellVersion}`);

// OpenShell v0.0.8+ handles cgroup v2 host namespace internally
// (OpenShell#329). For older versions, check that Docker is configured
// with cgroupns=host so k3s doesn't crash on cgroup v2 hosts.
const versionMatch = openshellVersion.match(/(\d+\.\d+\.\d+)/);
let openshellTooOld = false;
if (versionMatch) {
const parts = versionMatch[1].split(".").map(Number);
const current = parts[0] * 10000 + parts[1] * 100 + parts[2];
const minimum = 0 * 10000 + 0 * 100 + 8; // 0.0.8
openshellTooOld = current < minimum;
}

if (openshellTooOld) {
const cgroup = checkCgroupConfig();
if (!cgroup.ok) {
console.error("");
console.error(" !! cgroup v2 detected but Docker is not configured for cgroupns=host.");
console.error(" OpenShell's gateway runs k3s inside Docker, which will fail with:");
console.error("");
console.error(" openat2 /sys/fs/cgroup/kubepods/pids.max: no such file or directory");
console.error("");
console.error(" Either upgrade openshell to v0.0.8+ (recommended):");
console.error(" https://github.com/NVIDIA/OpenShell/releases");
console.error("");
console.error(" Or fix Docker cgroup config:");
console.error(" nemoclaw setup-spark");
console.error("");
console.error(` Detail: ${cgroup.reason}`);
process.exit(1);
}
console.log(" ✓ cgroup configuration OK");
}
console.log(" ✓ cgroup configuration OK");

// GPU
const gpu = nim.detectGpu();
Expand Down