2025-10-24 18:05:27 +02:00
|
|
|
cat > 0001-fix-apex-group-and-udev-rules.patch <<'PATCH'
|
2025-10-24 17:58:37 +02:00
|
|
|
diff --git a/install_coral_pve9.sh b/install_coral_pve9.sh
|
|
|
|
|
--- a/install_coral_pve9.sh
|
|
|
|
|
+++ b/install_coral_pve9.sh
|
2025-10-24 18:05:27 +02:00
|
|
|
@@ -1,6 +1,55 @@
|
2025-10-24 17:58:37 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# ==========================================================
|
|
|
|
|
# ProxMenux - Coral TPU Installer for Proxmox VE 9
|
|
|
|
|
# ==========================================================
|
2025-10-24 18:05:27 +02:00
|
|
|
|
2025-10-24 17:58:37 +02:00
|
|
|
+# ----------------------------------------------------------
|
|
|
|
|
+# Ensure apex group and udev rules are present
|
|
|
|
|
+# ----------------------------------------------------------
|
|
|
|
|
+ensure_apex_group_and_udev() {
|
|
|
|
|
+ msg_info "Ensuring apex group and udev rules..."
|
|
|
|
|
+
|
|
|
|
|
+ # Create the apex group if it doesn't exist
|
|
|
|
|
+ if ! getent group apex >/dev/null; then
|
2025-10-24 18:05:27 +02:00
|
|
|
+ groupadd --system apex || true
|
2025-10-24 17:58:37 +02:00
|
|
|
+ msg_ok "System group 'apex' created"
|
|
|
|
|
+ else
|
|
|
|
|
+ msg_ok "System group 'apex' already exists"
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
2025-10-24 18:05:27 +02:00
|
|
|
+ # Local udev rule for Coral / APEX TPU
|
2025-10-24 17:58:37 +02:00
|
|
|
+ cat >/etc/udev/rules.d/99-coral-apex.rules <<'EOF'
|
|
|
|
|
+# Coral / Google APEX TPU (M.2 / PCIe)
|
2025-10-24 18:05:27 +02:00
|
|
|
+# Assign group "apex" and safe permissions to device nodes
|
2025-10-24 17:58:37 +02:00
|
|
|
+KERNEL=="apex_*", GROUP="apex", MODE="0660"
|
|
|
|
|
+SUBSYSTEM=="apex", GROUP="apex", MODE="0660"
|
|
|
|
|
+EOF
|
|
|
|
|
+
|
2025-10-24 18:05:27 +02:00
|
|
|
+ # Ensure gasket-dkms rule uses the correct group
|
2025-10-24 17:58:37 +02:00
|
|
|
+ if [[ -f /usr/lib/udev/rules.d/60-gasket-dkms.rules ]]; then
|
|
|
|
|
+ sed -i 's/GROUP="[^"]*"/GROUP="apex"/g' /usr/lib/udev/rules.d/60-gasket-dkms.rules || true
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # Reload and apply udev rules
|
|
|
|
|
+ udevadm control --reload-rules
|
|
|
|
|
+ udevadm trigger --subsystem-match=apex || true
|
|
|
|
|
+
|
|
|
|
|
+ msg_ok "apex group and udev rules are in place"
|
|
|
|
|
+
|
|
|
|
|
+ # Verify device nodes after reload
|
|
|
|
|
+ if ls -l /dev/apex_* 2>/dev/null | grep -q ' apex '; then
|
|
|
|
|
+ msg_ok "Coral TPU device nodes detected with correct group (apex)"
|
|
|
|
|
+ else
|
|
|
|
|
+ msg_warn "apex device node not found yet; a reboot may be required"
|
|
|
|
|
+ fi
|
|
|
|
|
+}
|
|
|
|
|
+
|
2025-10-24 18:11:33 +02:00
|
|
|
@@ -1,0 +1,0 @@
|
|
|
|
|
@@ -100,0 +149,0 @@
|
|
|
|
|
@@ -200,6 +249,10 @@ install_coral_host() {
|
2025-10-24 17:58:37 +02:00
|
|
|
msg_ok "DKMS module built and installed successfully"
|
|
|
|
|
fi
|
2025-10-24 18:05:27 +02:00
|
|
|
|
2025-10-24 17:58:37 +02:00
|
|
|
+ # Ensure group and udev setup before loading drivers
|
|
|
|
|
+ ensure_apex_group_and_udev
|
|
|
|
|
+
|
|
|
|
|
+ # Load kernel modules
|
|
|
|
|
modprobe gasket >>"$LOG_FILE" 2>&1 || true
|
|
|
|
|
modprobe apex >>"$LOG_FILE" 2>&1 || true
|
|
|
|
|
sleep 1
|
2025-10-24 18:05:27 +02:00
|
|
|
PATCH
|