simple-cli/scripts/analyze-boot.sh
joe 9e9d4ea8d2
Some checks failed
Build Simple CLI / build (push) Failing after 1s
Integrate Particle-OS tools into simple-cli
- Add apt-ostree, deb-bootupd, and bootc packages to tools/
- Update Containerfile to install Particle-OS tools with dependencies
- Add tool verification script and updated welcome message
- Update justfile with new build and test recipes
- Add comprehensive tool testing and bootable image generation
- Successfully integrate 2/3 tools (apt-ostree and bootupd working)
- Note: bootc package contains only documentation, not binary

Ready for bootable image generation and QEMU testing!
2025-08-15 07:56:10 -07:00

153 lines
4.3 KiB
Bash
Executable file

#!/bin/bash
# Boot Performance Analysis Script for Simple-CLI
# This script analyzes and optimizes boot performance
set -e
echo "=== Simple-CLI Boot Performance Analysis ==="
echo ""
# Function to measure boot time
measure_boot_time() {
echo "📊 Measuring boot performance..."
if command -v systemd-analyze >/dev/null 2>&1; then
echo "⏱️ Total boot time:"
systemd-analyze time
echo ""
echo "🐌 Slowest services:"
systemd-analyze blame | head -10
echo ""
echo "🔗 Critical boot chain:"
systemd-analyze critical-chain
echo ""
echo "📈 Boot timeline:"
systemd-analyze plot > /tmp/boot-timeline.svg 2>/dev/null && echo "Timeline saved to /tmp/boot-timeline.svg" || echo "Timeline generation failed"
else
echo "❌ systemd-analyze not available"
fi
}
# Function to check boot configuration
check_boot_config() {
echo ""
echo "🔍 Checking boot configuration..."
# Check GRUB configuration
if [ -f /etc/default/grub ]; then
echo "✅ GRUB config found"
echo " Timeout: $(grep GRUB_TIMEOUT /etc/default/grub || echo 'Not set')"
echo " Kernel params: $(grep GRUB_CMDLINE_LINUX /etc/default/grub || echo 'Not set')"
else
echo "❌ GRUB config not found"
fi
# Check systemd configuration
if [ -f /etc/systemd/system.conf.d/99-boot-performance.conf ]; then
echo "✅ Boot performance config found"
cat /etc/systemd/system.conf.d/99-boot-performance.conf
else
echo "❌ Boot performance config not found"
fi
# Check kernel parameters
if [ -f /etc/sysctl.d/99-boot-performance.conf ]; then
echo "✅ Kernel performance config found"
cat /etc/sysctl.d/99-boot-performance.conf
else
echo "❌ Kernel performance config not found"
fi
}
# Function to enable verbose boot logging
enable_verbose_logging() {
echo ""
echo "🔧 Enabling verbose boot logging..."
# Enable verbose GRUB logging
if [ -f /etc/default/grub ]; then
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*"/GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 root=\/dev\/sda1 rw quiet splash fastboot loglevel=7"/' /etc/default/grub
echo "✅ Verbose GRUB logging enabled"
fi
# Enable verbose systemd logging
mkdir -p /etc/systemd/system.conf.d
cat > /etc/systemd/system.conf.d/99-verbose-boot.conf << EOF
[Manager]
LogLevel=debug
LogTarget=console
EOF
echo "✅ Verbose systemd logging enabled"
# Enable verbose kernel logging
mkdir -p /etc/sysctl.d
echo "kernel.printk = 7 4 1 7" > /etc/sysctl.d/99-verbose-kernel.conf
echo "✅ Verbose kernel logging enabled"
}
# Function to optimize boot performance
optimize_boot() {
echo ""
echo "⚡ Optimizing boot performance..."
# Disable unnecessary services
systemctl disable systemd-networkd-wait-online.service 2>/dev/null || true
systemctl disable systemd-resolved.service 2>/dev/null || true
# Enable parallel boot
mkdir -p /etc/systemd/system.conf.d
cat > /etc/systemd/system.conf.d/99-parallel-boot.conf << EOF
[Manager]
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s
DefaultRestartSec=100ms
EOF
echo "✅ Parallel boot enabled"
# Optimize kernel parameters
cat > /etc/sysctl.d/99-boot-optimization.conf << EOF
# Boot performance optimizations
kernel.printk = 3 4 1 3
vm.swappiness = 1
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# Reduce boot time
kernel.randomize_va_space = 0
EOF
echo "✅ Kernel optimizations applied"
}
# Main execution
case "${1:-analyze}" in
"analyze")
measure_boot_time
check_boot_config
;;
"verbose")
enable_verbose_logging
;;
"optimize")
optimize_boot
;;
"all")
measure_boot_time
check_boot_config
enable_verbose_logging
optimize_boot
;;
*)
echo "Usage: $0 [analyze|verbose|optimize|all]"
echo " analyze - Measure and analyze boot performance"
echo " verbose - Enable verbose boot logging"
echo " optimize - Apply boot performance optimizations"
echo " all - Run all optimizations"
exit 1
;;
esac
echo ""
echo "✅ Boot performance analysis complete!"