111 lines
3.0 KiB
Bash
Executable File
111 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Component installation (ZFS, SCST, MHVTL, Bacula)
|
|
#
|
|
|
|
install_zfs() {
|
|
if command_exists zpool && command_exists zfs; then
|
|
log_info "ZFS already installed"
|
|
return 0
|
|
fi
|
|
|
|
log_info "Installing ZFS..."
|
|
|
|
# Check if ZFS module is loaded
|
|
if lsmod | grep -q zfs; then
|
|
log_info "ZFS kernel module already loaded"
|
|
return 0
|
|
fi
|
|
|
|
# Install ZFS
|
|
apt-get install -y \
|
|
zfsutils-linux \
|
|
zfs-dkms || {
|
|
log_warn "ZFS installation failed. You may need to install manually."
|
|
return 1
|
|
}
|
|
|
|
# Load ZFS module
|
|
modprobe zfs || true
|
|
|
|
log_info "✓ ZFS installed"
|
|
return 0
|
|
}
|
|
|
|
install_scst() {
|
|
if [[ -f /etc/scst.conf ]] || lsmod | grep -q scst; then
|
|
log_info "SCST appears to be installed"
|
|
return 0
|
|
fi
|
|
|
|
log_info "Installing SCST..."
|
|
log_warn "SCST requires building from source. This may take a while..."
|
|
|
|
# Check if SCST source is available
|
|
if [[ -d "$PROJECT_ROOT/src/scst" ]] || [[ -d "/usr/src/scst" ]]; then
|
|
log_info "SCST source found, building..."
|
|
# SCST build would go here
|
|
# This is a placeholder - actual SCST installation is complex
|
|
log_warn "SCST installation requires manual steps. See documentation."
|
|
return 1
|
|
else
|
|
log_warn "SCST source not found. Please install SCST manually."
|
|
log_info "See: docs/on-progress/scst-installation.md"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
install_mhvtl() {
|
|
if command_exists vtlcmd || systemctl is-active --quiet mhvtl 2>/dev/null; then
|
|
log_info "MHVTL already installed"
|
|
return 0
|
|
fi
|
|
|
|
log_info "Installing MHVTL..."
|
|
|
|
# Install MHVTL from package or source
|
|
if apt-cache show mhvtl &>/dev/null; then
|
|
apt-get install -y mhvtl mhvtl-utils || {
|
|
log_warn "MHVTL package installation failed"
|
|
return 1
|
|
}
|
|
else
|
|
log_warn "MHVTL package not available. Building from source..."
|
|
# MHVTL build from source would go here
|
|
log_warn "MHVTL installation requires manual steps. See documentation."
|
|
return 1
|
|
fi
|
|
|
|
# Enable and start MHVTL service
|
|
systemctl enable mhvtl || true
|
|
systemctl start mhvtl || true
|
|
|
|
log_info "✓ MHVTL installed"
|
|
return 0
|
|
}
|
|
|
|
install_bacula() {
|
|
log_info "Installing Bacula (optional)..."
|
|
|
|
# Check if Bacula is already installed
|
|
if command_exists bconsole || systemctl is-active --quiet bacula-sd 2>/dev/null; then
|
|
log_info "Bacula already installed"
|
|
return 0
|
|
fi
|
|
|
|
# Install Bacula packages
|
|
apt-get install -y \
|
|
bacula-common \
|
|
bacula-sd \
|
|
bacula-client \
|
|
bacula-console || {
|
|
log_warn "Bacula installation failed or packages not available"
|
|
log_info "Bacula can be installed separately if needed"
|
|
return 1
|
|
}
|
|
|
|
log_info "✓ Bacula installed (configuration required separately)"
|
|
return 0
|
|
}
|
|
|