Setup installation
This commit is contained in:
158
examples/udev-rules/99-ssd-automount.rules
Normal file
158
examples/udev-rules/99-ssd-automount.rules
Normal file
@@ -0,0 +1,158 @@
|
||||
# USB-SSD Management System - Udev Rules
|
||||
# Automatische Erkennung und Mounting von USB-C SSDs
|
||||
#
|
||||
# Installation:
|
||||
# sudo cp 99-ssd-automount.rules /etc/udev/rules.d/
|
||||
# sudo udevadm control --reload-rules
|
||||
# sudo udevadm trigger
|
||||
|
||||
# ============================================================================
|
||||
# USB Storage Device Detection
|
||||
# ============================================================================
|
||||
|
||||
# USB Mass Storage Devices - Automatische Erkennung
|
||||
SUBSYSTEM=="block", ATTRS{removable}=="1", ENV{ID_BUS}=="usb", ACTION=="add", \
|
||||
RUN+="/usr/local/bin/ssd-detect.sh --device %k --udev-mode"
|
||||
|
||||
# USB Storage Devices - Entfernung
|
||||
SUBSYSTEM=="block", ATTRS{removable}=="1", ENV{ID_BUS}=="usb", ACTION=="remove", \
|
||||
RUN+="/usr/local/bin/ssd-safe-eject.sh --device %k --udev-mode"
|
||||
|
||||
# ============================================================================
|
||||
# NTFS Filesystem Detection
|
||||
# ============================================================================
|
||||
|
||||
# NTFS Partitionen - Automatisches Mounting
|
||||
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_BUS}=="usb", ACTION=="add", \
|
||||
ATTRS{removable}=="1", \
|
||||
RUN+="/usr/local/bin/ssd-mount-manager.sh mount --device /dev/%k --auto-mount"
|
||||
|
||||
# exFAT Partitionen - Alternative Unterstützung
|
||||
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="exfat", ENV{ID_BUS}=="usb", ACTION=="add", \
|
||||
ATTRS{removable}=="1", \
|
||||
RUN+="/usr/local/bin/ssd-mount-manager.sh mount --device /dev/%k --auto-mount"
|
||||
|
||||
# ============================================================================
|
||||
# Device Permissions und Ownership
|
||||
# ============================================================================
|
||||
|
||||
# USB Storage Devices - Berechtigungen setzen
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
GROUP="disk", MODE="0660"
|
||||
|
||||
# Device-Nodes für SSD-Management Gruppe
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ENV{ID_FS_TYPE}=="ntfs|exfat", \
|
||||
GROUP="ssd-users", MODE="0664"
|
||||
|
||||
# ============================================================================
|
||||
# Symlink Creation
|
||||
# ============================================================================
|
||||
|
||||
# Persistente Symlinks basierend auf UUID
|
||||
SUBSYSTEM=="block", ENV{ID_FS_UUID}!="", ENV{ID_BUS}=="usb", \
|
||||
ATTRS{removable}=="1", \
|
||||
SYMLINK+="disk/by-ssd-uuid/$env{ID_FS_UUID}"
|
||||
|
||||
# Symlinks basierend auf Label
|
||||
SUBSYSTEM=="block", ENV{ID_FS_LABEL}!="", ENV{ID_BUS}=="usb", \
|
||||
ATTRS{removable}=="1", \
|
||||
SYMLINK+="disk/by-ssd-label/$env{ID_FS_LABEL}"
|
||||
|
||||
# ============================================================================
|
||||
# Spezifische Vendor/Product Rules
|
||||
# ============================================================================
|
||||
|
||||
# Samsung USB-C SSDs
|
||||
SUBSYSTEM=="block", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="61f*", \
|
||||
ACTION=="add", \
|
||||
RUN+="/usr/local/bin/ssd-detect.sh --device %k --vendor samsung"
|
||||
|
||||
# SanDisk USB-C SSDs
|
||||
SUBSYSTEM=="block", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="55*", \
|
||||
ACTION=="add", \
|
||||
RUN+="/usr/local/bin/ssd-detect.sh --device %k --vendor sandisk"
|
||||
|
||||
# Generic USB 3.0+ Storage
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{bcdUSB}=="0300|0310|0320", \
|
||||
ATTRS{removable}=="1", ACTION=="add", \
|
||||
RUN+="/usr/local/bin/ssd-detect.sh --device %k --usb3-mode"
|
||||
|
||||
# ============================================================================
|
||||
# Environment Variables für Scripts
|
||||
# ============================================================================
|
||||
|
||||
# Udev-Modus für alle SSD-Scripts
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ENV{SSD_UDEV_MODE}="true", \
|
||||
ENV{SSD_LOG_LEVEL}="INFO", \
|
||||
ENV{SSD_USE_SYSLOG}="true"
|
||||
|
||||
# Device-Informationen für Scripts
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ENV{SSD_DEVICE_PATH}="/dev/%k", \
|
||||
ENV{SSD_DEVICE_UUID}="$env{ID_FS_UUID}", \
|
||||
ENV{SSD_DEVICE_LABEL}="$env{ID_FS_LABEL}", \
|
||||
ENV{SSD_DEVICE_TYPE}="$env{ID_FS_TYPE}"
|
||||
|
||||
# ============================================================================
|
||||
# Systemd Service Integration
|
||||
# ============================================================================
|
||||
|
||||
# Systemd-Service für spezifische Devices starten
|
||||
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_BUS}=="usb", \
|
||||
ATTRS{removable}=="1", ACTION=="add", \
|
||||
TAG+="systemd", ENV{SYSTEMD_WANTS}="ssd-mount@%k.service"
|
||||
|
||||
# Systemd-Service bei Device-Entfernung stoppen
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ACTION=="remove", \
|
||||
RUN+="/bin/systemctl stop ssd-mount@%k.service"
|
||||
|
||||
# ============================================================================
|
||||
# Logging und Debugging
|
||||
# ============================================================================
|
||||
|
||||
# Debug-Informationen loggen (nur bei Debug-Modus)
|
||||
# SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
# RUN+="/usr/bin/logger -t udev-ssd 'Device %k: Action=%E{ACTION}, Type=%E{ID_FS_TYPE}, UUID=%E{ID_FS_UUID}'"
|
||||
|
||||
# ============================================================================
|
||||
# Sicherheits-Rules
|
||||
# ============================================================================
|
||||
|
||||
# Nur autorisierte Benutzer können auf SSD-Devices zugreifen
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ENV{ID_FS_TYPE}=="ntfs|exfat", \
|
||||
TEST!="/etc/ssd-management/authorized_users", \
|
||||
GROUP="root", MODE="0600"
|
||||
|
||||
# Blacklist für bekannte problematische Devices
|
||||
SUBSYSTEM=="block", ATTRS{idVendor}=="0000", ATTRS{idProduct}=="0000", \
|
||||
ENV{UDISKS_IGNORE}="1"
|
||||
|
||||
# ============================================================================
|
||||
# Performance-Optimierungen
|
||||
# ============================================================================
|
||||
|
||||
# I/O-Scheduler für USB-SSDs optimieren
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ATTR{queue/scheduler}="mq-deadline"
|
||||
|
||||
# Read-Ahead für USB-SSDs optimieren
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ATTR{queue/read_ahead_kb}="1024"
|
||||
|
||||
# ============================================================================
|
||||
# Cleanup und Maintenance
|
||||
# ============================================================================
|
||||
|
||||
# Alte Mount-Points bereinigen bei Device-Entfernung
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ACTION=="remove", \
|
||||
RUN+="/usr/local/bin/ssd-mount-manager.sh cleanup --device %k"
|
||||
|
||||
# Temporäre Dateien bereinigen
|
||||
SUBSYSTEM=="block", ENV{ID_BUS}=="usb", ATTRS{removable}=="1", \
|
||||
ACTION=="remove", \
|
||||
RUN+="/bin/rm -f /tmp/ssd-%k-*"
|
Reference in New Issue
Block a user