provision: show output on screen via qt_shell, capture stderr
- on_start.sh runs provision through qt_shell for on-screen display - provision_wrapper.sh redirects stderr to stdout so errors are visible - provision.sh: SSH setup before WiFi wait, verbose echo output, sleep on failure so messages are readable Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,20 +7,5 @@ bash /data/openpilot/system/clearpilot/startup_logo/set_logo.sh
|
|||||||
nmcli radio wifi on 2>/dev/null
|
nmcli radio wifi on 2>/dev/null
|
||||||
|
|
||||||
if [ ! -f /data/quick_boot ]; then
|
if [ ! -f /data/quick_boot ]; then
|
||||||
# No quick_boot flag — wait for internet connectivity (up to 30s)
|
/data/openpilot/system/clearpilot/tools/qt_shell "/data/openpilot/system/clearpilot/provision_wrapper.sh" --title="ClearPilot Provision"
|
||||||
echo "Waiting for internet connectivity (up to 30s)..."
|
|
||||||
for i in $(seq 1 30); do
|
|
||||||
if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then
|
|
||||||
echo "Internet connectivity detected after ${i}s"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
# If online, run provision
|
|
||||||
if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then
|
|
||||||
bash /data/openpilot/system/clearpilot/provision.sh
|
|
||||||
else
|
|
||||||
echo "No internet connectivity after 30s, skipping provision"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,46 +3,78 @@
|
|||||||
# ClearPilot provision script
|
# ClearPilot provision script
|
||||||
# Runs on first boot (no /data/quick_boot) when internet is available.
|
# Runs on first boot (no /data/quick_boot) when internet is available.
|
||||||
# Sets up SSH, installs packages, pulls latest code, and builds.
|
# Sets up SSH, installs packages, pulls latest code, and builds.
|
||||||
|
# Output is displayed on screen via qt_shell.
|
||||||
|
|
||||||
# Dongle gate
|
# Dongle gate
|
||||||
dongle_id=$(cat /data/params/d/DongleId 2>/dev/null)
|
dongle_id=$(cat /data/params/d/DongleId 2>/dev/null)
|
||||||
if [[ ! $dongle_id == 90bb71* ]]; then
|
if [[ ! $dongle_id == 90bb71* ]]; then
|
||||||
echo "provision: dongle ID not recognized, skipping"
|
echo "Dongle ID not recognized, skipping provision"
|
||||||
|
sleep 3
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "provision: starting"
|
echo "Dongle ID: $dongle_id"
|
||||||
|
|
||||||
# 1. SSH authorized keys and service
|
# 1. SSH
|
||||||
|
echo "Setting up SSH authorized keys..."
|
||||||
cat /data/openpilot/system/clearpilot/dev/GithubSshKeys > /data/params/d/GithubSshKeys
|
cat /data/openpilot/system/clearpilot/dev/GithubSshKeys > /data/params/d/GithubSshKeys
|
||||||
echo -n 1 > /data/params/d/SshEnabled
|
echo -n 1 > /data/params/d/SshEnabled
|
||||||
sudo systemctl enable ssh 2>/dev/null
|
sudo systemctl enable ssh 2>/dev/null
|
||||||
sudo systemctl start ssh
|
sudo systemctl start ssh
|
||||||
|
echo "SSH enabled and started"
|
||||||
|
|
||||||
# 2. Remount / read-write and install packages
|
# 2. Wait for internet connectivity
|
||||||
|
echo "Waiting for internet connectivity (up to 30s)..."
|
||||||
|
ONLINE=0
|
||||||
|
for i in $(seq 1 30); do
|
||||||
|
if nmcli networking connectivity check 2>/dev/null | grep -q "full"; then
|
||||||
|
echo "Online after ${i}s"
|
||||||
|
ONLINE=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ONLINE" -eq 0 ]; then
|
||||||
|
echo "No internet after 30s, skipping packages and updates"
|
||||||
|
sleep 3
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Install packages
|
||||||
|
echo "Remounting / read-write..."
|
||||||
sudo mount -o remount,rw /
|
sudo mount -o remount,rw /
|
||||||
|
echo "Installing packages..."
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get install -y openvpn
|
sudo apt-get install -y openvpn
|
||||||
|
echo "Packages installed"
|
||||||
|
|
||||||
# 3. Pull latest from remote (remote always wins)
|
# 4. Pull latest from remote (remote always wins)
|
||||||
|
echo "Checking for updates..."
|
||||||
cd /data/openpilot
|
cd /data/openpilot
|
||||||
git fetch origin clearpilot
|
git fetch origin clearpilot
|
||||||
LOCAL=$(git rev-parse HEAD)
|
LOCAL=$(git rev-parse HEAD)
|
||||||
REMOTE=$(git rev-parse origin/clearpilot)
|
REMOTE=$(git rev-parse origin/clearpilot)
|
||||||
if [ "$LOCAL" != "$REMOTE" ]; then
|
if [ "$LOCAL" != "$REMOTE" ]; then
|
||||||
echo "provision: updating from $LOCAL to $REMOTE"
|
echo "Updating: $(git log --oneline -1 HEAD) -> $(git log --oneline -1 origin/clearpilot)"
|
||||||
git reset --hard origin/clearpilot
|
git reset --hard origin/clearpilot
|
||||||
sudo chown -R comma:comma /data/openpilot
|
sudo chown -R comma:comma /data/openpilot
|
||||||
|
echo "Update complete"
|
||||||
|
else
|
||||||
|
echo "Already up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. Build
|
# 5. Build
|
||||||
echo "provision: running build"
|
echo ""
|
||||||
|
echo "Starting build..."
|
||||||
su - comma -c "bash /data/openpilot/build_only.sh"
|
su - comma -c "bash /data/openpilot/build_only.sh"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "provision: build succeeded"
|
echo "Build succeeded"
|
||||||
touch /data/quick_boot
|
touch /data/quick_boot
|
||||||
else
|
else
|
||||||
echo "provision: build failed"
|
echo "Build failed"
|
||||||
|
sleep 10
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "provision: complete"
|
echo "Provision complete"
|
||||||
|
sleep 2
|
||||||
|
|||||||
2
system/clearpilot/provision_wrapper.sh
Normal file
2
system/clearpilot/provision_wrapper.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
exec bash /data/openpilot/system/clearpilot/provision.sh 2>&1
|
||||||
Reference in New Issue
Block a user