Added logging for updates. Updated documentation.
This commit is contained in:
@@ -0,0 +1,98 @@
|
|||||||
|
# System Updates
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Stormux Gaming Image includes a system update feature that keeps your system current with the latest packages and configuration files. Updates are performed through the main menu system and require minimal user interaction.
|
||||||
|
|
||||||
|
## How to Update
|
||||||
|
|
||||||
|
1. Open the Game Launcher (automatically starts on boot)
|
||||||
|
2. Navigate to the "System" menu (from initial load of the image, press left once)
|
||||||
|
3. Select "System Update"
|
||||||
|
4. Enter your username and password when prompted (only required when credentials change on the server username is always patron)
|
||||||
|
5. The update process will run automatically
|
||||||
|
6. Review the update summary when complete
|
||||||
|
7. Press Enter to return to the menu
|
||||||
|
|
||||||
|
## What Gets Updated
|
||||||
|
|
||||||
|
The system update performs two main operations:
|
||||||
|
|
||||||
|
### 1. Package Updates
|
||||||
|
- Updates all installed system packages using pacman
|
||||||
|
- Includes kernel updates, applications, and libraries
|
||||||
|
- Runs non-interactively with automatic confirmations
|
||||||
|
|
||||||
|
### 2. Configuration File Sync
|
||||||
|
- Downloads the latest custom image files and deploys them
|
||||||
|
- Updates system configuration files
|
||||||
|
- Refreshes user utilities and applications
|
||||||
|
- Updates documentation and resources
|
||||||
|
- Preserves user data and settings
|
||||||
|
|
||||||
|
## Update Logs
|
||||||
|
|
||||||
|
All update operations are logged for troubleshooting and review:
|
||||||
|
|
||||||
|
**Log Location**: `~/Logs/system-updates.log`
|
||||||
|
|
||||||
|
The log file contains:
|
||||||
|
- Timestamp for each update session
|
||||||
|
- Complete output from package updates
|
||||||
|
- Git operations (clone, checkout, LFS pull)
|
||||||
|
- File copy operations
|
||||||
|
- Error messages if any operations fail
|
||||||
|
- Success/failure summary
|
||||||
|
|
||||||
|
## Understanding the Summary
|
||||||
|
|
||||||
|
At the end of each update, you'll see one of two messages:
|
||||||
|
|
||||||
|
### Successful Update
|
||||||
|
```
|
||||||
|
SUCCESS: All update operations completed successfully.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Failed Update
|
||||||
|
```
|
||||||
|
ERRORS DETECTED: 2 error(s) occurred during update:
|
||||||
|
- Package update failed
|
||||||
|
- Git clone failed
|
||||||
|
```
|
||||||
|
|
||||||
|
If errors are detected, review the log file for detailed information about what went wrong.
|
||||||
|
|
||||||
|
## Common Issues
|
||||||
|
|
||||||
|
### Authentication Required
|
||||||
|
If the server credentials have changed, you'll be prompted for your username and password. This is normal and only happens when credentials are updated on the server.
|
||||||
|
|
||||||
|
### Network Issues
|
||||||
|
Updates require an internet connection. If git clone or package updates fail, verify your network connection and try again.
|
||||||
|
|
||||||
|
### Insufficient Disk Space
|
||||||
|
Package updates require free disk space. If updates fail, check available space.
|
||||||
|
|
||||||
|
## Update Frequency
|
||||||
|
|
||||||
|
|
||||||
|
## Safety Features
|
||||||
|
|
||||||
|
- Updates are logged for troubleshooting
|
||||||
|
- User files and settings are preserved
|
||||||
|
- File ownership is automatically corrected
|
||||||
|
- Screen reader remains active throughout the process
|
||||||
|
- Summary shows if any operations failed
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If you experience persistent update issues:
|
||||||
|
1. Review the log file at `~/Logs/system-updates.log`
|
||||||
|
2. Contact Stormux with your log file (email address storm_dragon@stormux.org)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The script runs with root privileges to update system files
|
||||||
|
- Your personal data in ~/Music, ~/Roms, and other user directories is never modified
|
||||||
|
- Configuration files like .w3m and .irssi are excluded from updates to preserve your settings
|
||||||
|
- Updates can take several minutes depending on internet speed and the number of packages
|
||||||
@@ -9,17 +9,50 @@ sudo -n /usr/bin/systemctl start fenrirscreenreader.service
|
|||||||
# Clear the screen before loading
|
# Clear the screen before loading
|
||||||
clear
|
clear
|
||||||
|
|
||||||
# Update system packages (run as stormux user since yay shouldn't run as root)
|
# Setup logging
|
||||||
pacman -Syu --noconfirm
|
logDir="/home/stormux/Logs"
|
||||||
|
logFile="${logDir}/system-updates.log"
|
||||||
|
mkdir -p "${logDir}"
|
||||||
|
echo "=== System Update Started: $(date) ===" | tee "${logFile}"
|
||||||
|
|
||||||
|
# Track errors
|
||||||
|
errorCount=0
|
||||||
|
errorMessages=()
|
||||||
|
|
||||||
|
# Clean up old packages keeping currently installed versions only
|
||||||
|
pacman -Sc --noconfirm 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Package cleaning failed")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Upgrade the system
|
||||||
|
pacman -Syu --noconfirm 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Package update failed")
|
||||||
|
fi
|
||||||
|
|
||||||
gitUrl="https://git.stormux.org/storm/gaming-image-files"
|
gitUrl="https://git.stormux.org/storm/gaming-image-files"
|
||||||
gitPath="${gitUrl##*/}"
|
gitPath="${gitUrl##*/}"
|
||||||
pushd /tmp || exit
|
pushd /tmp || exit
|
||||||
git config --global credential.helper store
|
git config --global credential.helper store
|
||||||
git clone "${gitUrl}"
|
git clone "${gitUrl}" 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Git clone failed")
|
||||||
|
fi
|
||||||
pushd "${gitPath}" || exit
|
pushd "${gitPath}" || exit
|
||||||
git checkout master
|
git checkout master 2>&1 | tee -a "${logFile}"
|
||||||
git lfs pull
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Git checkout master failed")
|
||||||
|
fi
|
||||||
|
git lfs pull 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Git LFS pull failed")
|
||||||
|
fi
|
||||||
# Files and directories to ignore when copying
|
# Files and directories to ignore when copying
|
||||||
ignoreFiles=(".git" "./image" ".git*" "/home/stormux/.w3m" "/home/stormux/.irssi")
|
ignoreFiles=(".git" "./image" ".git*" "/home/stormux/.w3m" "/home/stormux/.irssi")
|
||||||
# Build find command with ignore patterns
|
# Build find command with ignore patterns
|
||||||
@@ -32,11 +65,35 @@ for ignore in "${ignoreFiles[@]}"; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
# Copy all files as root (preserves permissions properly)
|
# Copy all files as root (preserves permissions properly)
|
||||||
find . "${findArgs[@]}" -type f -exec bash -c 'for i ; do cp -av --preserve=all --parents "${i}" /;done' _ "{}" \;
|
find . "${findArgs[@]}" -type f -exec bash -c 'for i ; do cp -av --preserve=all --parents "${i}" /;done' _ "{}" \; 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("File copy failed")
|
||||||
|
fi
|
||||||
# Fix ownership of home directory files
|
# Fix ownership of home directory files
|
||||||
chown -R stormux:users /home/stormux
|
chown -R stormux:users /home/stormux 2>&1 | tee -a "${logFile}"
|
||||||
|
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||||
|
((errorCount++))
|
||||||
|
errorMessages+=("Ownership fix failed")
|
||||||
|
fi
|
||||||
popd || exit
|
popd || exit
|
||||||
rm -rf "${gitPath}"
|
rm -rf "${gitPath}"
|
||||||
popd || exit
|
popd || exit
|
||||||
|
|
||||||
|
echo "=== System Update Completed: $(date) ===" | tee -a "${logFile}"
|
||||||
|
echo | tee -a "${logFile}"
|
||||||
|
|
||||||
|
# Display summary
|
||||||
|
if [[ $errorCount -eq 0 ]]; then
|
||||||
|
echo "SUCCESS: All update operations completed successfully." | tee -a "${logFile}"
|
||||||
|
else
|
||||||
|
echo "ERRORS DETECTED: $errorCount error(s) occurred during update:" | tee -a "${logFile}"
|
||||||
|
for error in "${errorMessages[@]}"; do
|
||||||
|
echo " - $error" | tee -a "${logFile}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
echo | tee -a "${logFile}"
|
||||||
|
|
||||||
|
read -r -p "Press enter to continue."
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
Reference in New Issue
Block a user