# systemd unit template for the SUT on Tier-2 Jetson runners. # # Copy to /etc/systemd/system/gps-denied-onboard.service, edit the # Environment= lines for the local deployment, then: # sudo systemctl daemon-reload # sudo systemctl enable --now gps-denied-onboard.service # # `run-tier2.sh` calls `systemctl restart` before each suite — the unit # must therefore be self-restoring. RestartSec is short because Tier-2 # tests budget 4 hours per matrix entry (`environment.md` § Timeout) and a # slow restart cuts into that budget. [Unit] Description=gps-denied-onboard companion service (Tier-2 Jetson) After=network-online.target Wants=network-online.target [Service] Type=exec User=azaion Group=azaion WorkingDirectory=/opt/gps-denied-onboard Environment=ONBOARD_FC_ADAPTER=ardupilot Environment=ONBOARD_VIO_STRATEGY=okvis2 Environment=MAVLINK_SIGNING_PASSKEY_FILE=/run/secrets/mavlink_passkey Environment=TILE_CACHE_PATH=/var/azaion/tile-cache Environment=FDR_OUTPUT_PATH=/var/azaion/fdr ExecStart=/opt/gps-denied-onboard/bin/gps-denied-onboard --config /etc/azaion/onboard.yaml Restart=on-failure RestartSec=2s StandardOutput=journal StandardError=journal # Resource budget mirrors restrictions.md § Onboard Hardware: 25 W TDP, # 8 GB shared LPDDR5. systemd cgroup limits are a defence-in-depth gate; # the SUT enforces these internally too. MemoryMax=6G TasksMax=512 # Allow tegrastats / jtop to read /sys without requiring CAP_SYS_ADMIN here. ProtectKernelTunables=true ProtectKernelModules=true NoNewPrivileges=true [Install] WantedBy=multi-user.target