# Installation Module ## Übersicht Das Installation Module bietet eine vollautomatische Master-Installation für das USB-SSD Management System. Es konfiguriert alle Abhängigkeiten, erstellt System-Services und richtet die komplette Infrastruktur für den produktiven Einsatz ein. ## Hauptkomponenten ### `install.sh` **Zweck**: Master-Installation mit vollständiger System-Konfiguration **Installationsschritte**: - System-Abhängigkeiten installieren - Scripts in System-Pfade kopieren - Systemd-Services konfigurieren - Udev-Rules einrichten - Benutzer-Berechtigungen setzen - Logging-Infrastruktur aufbauen ## Installation ### Schnell-Installation ```bash # Repository klonen git clone https://git.gitcover.de/KMU/usb-ssd.git cd usb-ssd # Master-Installation ausführen sudo ./scripts/installation/install.sh ``` ### Erweiterte Installation ```bash # Installation mit Custom-Konfiguration sudo ./scripts/installation/install.sh --config /path/to/config.conf # Installation ohne Systemd-Services sudo ./scripts/installation/install.sh --no-systemd # Installation mit Debug-Modus sudo ./scripts/installation/install.sh --debug --verbose ``` ### Interaktive Installation ```bash # Schritt-für-Schritt Installation mit Benutzer-Eingaben sudo ./scripts/installation/install.sh --interactive # Nur bestimmte Komponenten installieren sudo ./scripts/installation/install.sh --components "detection,management" ``` ## Installationsoptionen ### Standard-Installation ```bash # Vollständige Installation (empfohlen) sudo ./install.sh # Installiert: # - Alle System-Abhängigkeiten # - Scripts nach /usr/local/bin/ # - Systemd-Services # - Udev-Rules # - Log-Rotation # - Bash-Completion ``` ### Custom-Installation ```bash # Spezifische Installationspfade sudo ./install.sh --prefix /opt/ssd-tools # Custom-Konfiguration sudo ./install.sh --config-dir /etc/ssd-management # Benutzer-spezifische Installation ./install.sh --user-install ``` ### Komponenten-basierte Installation ```bash # Nur Detection-Module sudo ./install.sh --component detection # Nur Management-Module sudo ./install.sh --component management # Nur Testing-Module sudo ./install.sh --component testing # Mehrere Komponenten sudo ./install.sh --components "detection,management,testing" ``` ## System-Abhängigkeiten ### Automatisch installierte Packages #### Ubuntu/Debian ```bash # Core-Packages ntfs-3g # NTFS-Dateisystem Support util-linux # Mount/Unmount Utilities parted # Partitionstabellen-Management bc # Berechnungen in Scripts eject # Hardware-Eject Funktionalität # Optional-Packages smartmontools # SSD-Health Monitoring hdparm # Hardware-Parameter Tuning fio # Performance-Testing samba-common # SMB-Integration ``` #### CentOS/RHEL ```bash # Core-Packages ntfs-3g util-linux parted bc eject # EPEL-Repository für zusätzliche Tools sudo yum install epel-release ``` ### Manuelle Abhängigkeits-Installation ```bash # Ubuntu/Debian sudo apt update sudo apt install ntfs-3g util-linux parted bc eject smartmontools hdparm fio # CentOS/RHEL sudo yum install ntfs-3g util-linux parted bc eject smartmontools hdparm fio # Arch Linux sudo pacman -S ntfs-3g util-linux parted bc eject smartmontools hdparm fio ``` ## Systemd-Integration ### Installierte Services #### `ssd-detection.service` ```ini [Unit] Description=USB-C SSD Detection Service After=local-fs.target [Service] Type=oneshot ExecStart=/usr/local/bin/ssd-detect.sh --monitor Restart=on-failure [Install] WantedBy=multi-user.target ``` #### `ssd-automount.service` ```ini [Unit] Description=Automatic SSD Mounting After=ssd-detection.service [Service] Type=forking ExecStart=/usr/local/bin/ssd-mount-manager.sh --auto-mount ExecStop=/usr/local/bin/ssd-safe-eject.sh --all [Install] WantedBy=multi-user.target ``` ### Service-Management ```bash # Services aktivieren sudo systemctl enable ssd-detection.service sudo systemctl enable ssd-automount.service # Services starten sudo systemctl start ssd-detection.service sudo systemctl start ssd-automount.service # Status prüfen sudo systemctl status ssd-detection.service ``` ## Udev-Rules ### Automatische USB-Erkennung ```bash # /etc/udev/rules.d/99-ssd-automount.rules SUBSYSTEM=="block", ATTRS{removable}=="1", ACTION=="add", RUN+="/usr/local/bin/ssd-detect.sh --device %k" SUBSYSTEM=="block", ATTRS{removable}=="1", ACTION=="remove", RUN+="/usr/local/bin/ssd-safe-eject.sh --device %k" ``` ### Udev-Rules aktivieren ```bash # Rules neu laden sudo udevadm control --reload-rules sudo udevadm trigger # Test der Rules sudo udevadm test /sys/block/sdb ``` ## Benutzer-Berechtigungen ### Gruppe-Konfiguration ```bash # SSD-Management Gruppe erstellen sudo groupadd ssd-users # Benutzer zur Gruppe hinzufügen sudo usermod -a -G ssd-users $USER # Disk-Gruppe für Hardware-Zugriff sudo usermod -a -G disk $USER ``` ### Sudo-Konfiguration ```bash # /etc/sudoers.d/ssd-management %ssd-users ALL=(ALL) NOPASSWD: /usr/local/bin/ssd-mount-manager.sh %ssd-users ALL=(ALL) NOPASSWD: /usr/local/bin/ssd-safe-eject.sh %ssd-users ALL=(ALL) NOPASSWD: /usr/local/bin/ssd-detect.sh ``` ## Logging-Konfiguration ### Log-Rotation ```bash # /etc/logrotate.d/ssd-management /var/log/ssd-*.log { daily rotate 30 compress delaycompress missingok notifempty create 644 root root } ``` ### Syslog-Integration ```bash # /etc/rsyslog.d/50-ssd-management.conf :programname, isequal, "ssd-detect" /var/log/ssd-detection.log :programname, isequal, "ssd-mount" /var/log/ssd-management.log :programname, isequal, "ssd-test" /var/log/ssd-testing.log & stop ``` ## Bash-Completion ### Auto-Completion aktivieren ```bash # /etc/bash_completion.d/ssd-tools _ssd_detect() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="--verbose --ntfs-only --device --output --monitor --debug" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 } complete -F _ssd_detect ssd-detect.sh ``` ## Deinstallation ### Vollständige Deinstallation ```bash # Deinstallations-Script ausführen sudo ./scripts/installation/uninstall.sh # Manuelle Deinstallation sudo systemctl stop ssd-detection.service ssd-automount.service sudo systemctl disable ssd-detection.service ssd-automount.service sudo rm /etc/systemd/system/ssd-*.service sudo rm /usr/local/bin/ssd-* sudo rm /etc/udev/rules.d/99-ssd-automount.rules ``` ### Konfiguration beibehalten ```bash # Nur Scripts entfernen, Konfiguration behalten sudo ./scripts/installation/uninstall.sh --keep-config ``` ## Upgrade-Prozess ### In-Place Upgrade ```bash # Repository aktualisieren git pull origin main # Upgrade ausführen sudo ./scripts/installation/install.sh --upgrade # Services neu starten sudo systemctl restart ssd-detection.service ``` ### Backup vor Upgrade ```bash # Konfiguration sichern sudo cp -r /etc/ssd-management /etc/ssd-management.backup # Scripts sichern sudo cp /usr/local/bin/ssd-* /tmp/ssd-backup/ ``` ## Troubleshooting ### Installations-Probleme ```bash # Installation mit Debug-Output sudo ./install.sh --debug --verbose # Abhängigkeits-Probleme prüfen ./install.sh --check-dependencies # Berechtigungs-Probleme sudo ./install.sh --fix-permissions ``` ### Häufige Probleme 1. **Permission denied**: Installation mit `sudo` ausführen 2. **Package not found**: Repository-Updates durchführen 3. **Service failed**: Systemd-Logs prüfen (`journalctl -u ssd-detection.service`) ### Diagnose-Tools ```bash # System-Diagnose ./install.sh --diagnose # Installations-Status prüfen ./install.sh --status # Konfiguration validieren ./install.sh --validate ``` ## Best Practices ### Produktionsumgebung 1. **Vollständige Installation** mit allen Komponenten 2. **Systemd-Services aktivieren** für automatisches Management 3. **Log-Rotation konfigurieren** für Langzeit-Betrieb 4. **Monitoring einrichten** für Service-Überwachung 5. **Backup-Strategie** für Konfigurationsdateien ### Entwicklungsumgebung 1. **Komponenten-basierte Installation** für spezifische Tests 2. **Debug-Modus aktivieren** für Entwicklung 3. **User-Installation** für isolierte Tests 4. **Häufige Upgrades** für aktuelle Features ## Changelog ### Version 0.1.0 - Master-Installation Script - Systemd-Service Integration - Udev-Rules Konfiguration - Benutzer-Berechtigungen Setup - Logging-Infrastruktur - Bash-Completion Support