- on_start.sh: always enables WiFi, waits 30s for connectivity if no /data/quick_boot, then runs provision.sh - New provision.sh: sets up SSH keys, installs openvpn, pulls latest code from remote (hard reset, remote wins), runs build_only.sh, touches /data/quick_boot on success - Delete old dev/on_start.sh, dev/provision.sh, dev/on_start_brian.sh.cpt (encrypted key decryption no longer needed) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
49 lines
1.3 KiB
Bash
49 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# ClearPilot provision script
|
|
# Runs on first boot (no /data/quick_boot) when internet is available.
|
|
# Sets up SSH, installs packages, pulls latest code, and builds.
|
|
|
|
# Dongle gate
|
|
dongle_id=$(cat /data/params/d/DongleId 2>/dev/null)
|
|
if [[ ! $dongle_id == 90bb71* ]]; then
|
|
echo "provision: dongle ID not recognized, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
echo "provision: starting"
|
|
|
|
# 1. SSH authorized keys and service
|
|
cat /data/openpilot/system/clearpilot/dev/GithubSshKeys > /data/params/d/GithubSshKeys
|
|
echo -n 1 > /data/params/d/SshEnabled
|
|
sudo systemctl enable ssh 2>/dev/null
|
|
sudo systemctl start ssh
|
|
|
|
# 2. Remount / read-write and install packages
|
|
sudo mount -o remount,rw /
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -y openvpn
|
|
|
|
# 3. Pull latest from remote (remote always wins)
|
|
cd /data/openpilot
|
|
git fetch origin clearpilot
|
|
LOCAL=$(git rev-parse HEAD)
|
|
REMOTE=$(git rev-parse origin/clearpilot)
|
|
if [ "$LOCAL" != "$REMOTE" ]; then
|
|
echo "provision: updating from $LOCAL to $REMOTE"
|
|
git reset --hard origin/clearpilot
|
|
sudo chown -R comma:comma /data/openpilot
|
|
fi
|
|
|
|
# 4. Build
|
|
echo "provision: running build"
|
|
su - comma -c "bash /data/openpilot/build_only.sh"
|
|
if [ $? -eq 0 ]; then
|
|
echo "provision: build succeeded"
|
|
touch /data/quick_boot
|
|
else
|
|
echo "provision: build failed"
|
|
fi
|
|
|
|
echo "provision: complete"
|