Some checks failed
Build Simple CLI / build (push) Failing after 1s
- 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!
153 lines
4.3 KiB
Bash
Executable file
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!"
|