mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-07-16 05:49:49 +00:00
Add files via upload
update files
This commit is contained in:
+65
-32
@@ -1,9 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# State for backup/restore
|
||||
REPO_BACKUP_DIR=""
|
||||
|
||||
backup_current_repos() {
|
||||
REPO_BACKUP_DIR=$(mktemp -d)
|
||||
for f in /etc/apt/sources.list /etc/apt/sources.list.d/debian.sources; do
|
||||
if [ -f "$f" ]; then
|
||||
cp "$f" "$REPO_BACKUP_DIR/$(basename "$f")"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
restore_previous_repos() {
|
||||
if [ -z "$REPO_BACKUP_DIR" ] || [ ! -d "$REPO_BACKUP_DIR" ]; then
|
||||
return
|
||||
fi
|
||||
echo -e "${RED}Restoring previous repository configuration...${NC}"
|
||||
if [ -f "$REPO_BACKUP_DIR/sources.list" ]; then
|
||||
sudo cp "$REPO_BACKUP_DIR/sources.list" /etc/apt/sources.list
|
||||
else
|
||||
sudo rm -f /etc/apt/sources.list
|
||||
fi
|
||||
if [ -f "$REPO_BACKUP_DIR/debian.sources" ]; then
|
||||
sudo cp "$REPO_BACKUP_DIR/debian.sources" /etc/apt/sources.list.d/debian.sources
|
||||
else
|
||||
sudo rm -f /etc/apt/sources.list.d/debian.sources
|
||||
fi
|
||||
sudo rm -f /etc/apt/sources.list.disabled
|
||||
rm -rf "$REPO_BACKUP_DIR"
|
||||
REPO_BACKUP_DIR=""
|
||||
}
|
||||
|
||||
cleanup_repo_backup() {
|
||||
if [ -n "$REPO_BACKUP_DIR" ] && [ -d "$REPO_BACKUP_DIR" ]; then
|
||||
rm -rf "$REPO_BACKUP_DIR"
|
||||
REPO_BACKUP_DIR=""
|
||||
fi
|
||||
}
|
||||
|
||||
finalize_deb822() {
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
sudo mv /etc/apt/sources.list /etc/apt/sources.list.disabled
|
||||
echo "Classic sources.list disabled (renamed to sources.list.disabled)"
|
||||
fi
|
||||
cleanup_repo_backup
|
||||
}
|
||||
|
||||
configure_repos() {
|
||||
echo -e "${YELLOW}Repository configuration...${NC}"
|
||||
|
||||
|
||||
local use_deb822
|
||||
if whiptail --title "Repository Format" --defaultno \
|
||||
--yesno "Use the modern .sources (deb822) format?\n(default is classic one-line style)" 10 60; then
|
||||
@@ -12,7 +58,6 @@ configure_repos() {
|
||||
use_deb822=false
|
||||
fi
|
||||
|
||||
|
||||
local enable_backports
|
||||
if whiptail --title "Backports" \
|
||||
--yesno "Enable backports?\nBackports provide newer versions of some software (kernel, drivers, Mesa) for better hardware support.\nIt is recommended to enable it (default: Yes)." 12 70; then
|
||||
@@ -21,6 +66,14 @@ configure_repos() {
|
||||
enable_backports=false
|
||||
fi
|
||||
|
||||
if [ -z "$DEBIAN_CODENAME" ]; then
|
||||
echo -e "${RED}Error: Could not detect Debian codename. Aborting.${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
sync_system_time
|
||||
|
||||
backup_current_repos
|
||||
|
||||
if $use_deb822; then
|
||||
generate_deb822_sources "$DEBIAN_CODENAME" "$enable_backports"
|
||||
@@ -28,43 +81,41 @@ configure_repos() {
|
||||
generate_classic_sources "$DEBIAN_CODENAME" "$enable_backports"
|
||||
fi
|
||||
|
||||
|
||||
echo "Updating package lists..."
|
||||
if sudo apt update; then
|
||||
REPOS_CONFIGURED=true
|
||||
echo -e "${GREEN}Repositories configured and updated successfully.${NC}"
|
||||
|
||||
if $use_deb822; then
|
||||
finalize_deb822
|
||||
else
|
||||
cleanup_repo_backup
|
||||
fi
|
||||
|
||||
local upgradable
|
||||
upgradable=$(apt list --upgradable 2>/dev/null | grep -c /)
|
||||
if [ "$upgradable" -gt 0 ]; then
|
||||
if whiptail --title "Upgrade System" \
|
||||
--yesno "There are $upgradable packages that can be upgraded.\n\nDo you want to upgrade them now?" 10 60; then
|
||||
sudo apt-mark hold tzdata 2>/dev/null || true
|
||||
sudo apt upgrade -y
|
||||
sudo apt-mark unhold tzdata 2>/dev/null || true
|
||||
echo -e "${GREEN}System upgraded.${NC}"
|
||||
else
|
||||
echo "Skipping upgrade."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}apt update failed. Please check your network and repository configuration.${NC}"
|
||||
restore_previous_repos
|
||||
echo -e "${RED}apt update failed. Previous repository configuration restored.${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Generate classic sources.list
|
||||
# ----------------------------------------------------------------------
|
||||
generate_classic_sources() {
|
||||
local codename="$1"
|
||||
local backports="$2"
|
||||
|
||||
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||
echo "Backup of sources.list saved as sources.list.bak"
|
||||
fi
|
||||
|
||||
|
||||
local content=""
|
||||
content="# Official repository\n"
|
||||
content+="deb https://deb.debian.org/debian ${codename} main contrib non-free non-free-firmware\n"
|
||||
@@ -87,24 +138,15 @@ generate_classic_sources() {
|
||||
content+="# deb https://deb.debian.org/debian ${codename}-backports main contrib non-free non-free-firmware\n"
|
||||
fi
|
||||
|
||||
|
||||
echo -e "$content" | sudo tee /etc/apt/sources.list > /dev/null
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Generate deb822 .sources format
|
||||
# ----------------------------------------------------------------------
|
||||
generate_deb822_sources() {
|
||||
local codename="$1"
|
||||
local backports="$2"
|
||||
|
||||
|
||||
sudo mkdir -p /etc/apt/sources.list.d
|
||||
|
||||
|
||||
sudo rm -f /etc/apt/sources.list.d/debian.sources
|
||||
|
||||
|
||||
local content=""
|
||||
content="Types: deb\n"
|
||||
content+="URIs: https://deb.debian.org/debian\n"
|
||||
@@ -121,16 +163,7 @@ generate_deb822_sources() {
|
||||
content+="URIs: https://deb.debian.org/debian\n"
|
||||
content+="Suites: ${codename}-backports\n"
|
||||
content+="Components: main contrib non-free non-free-firmware\n"
|
||||
else
|
||||
|
||||
true
|
||||
fi
|
||||
|
||||
echo -e "$content" | sudo tee /etc/apt/sources.list.d/debian.sources > /dev/null
|
||||
|
||||
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
sudo mv /etc/apt/sources.list /etc/apt/sources.list.disabled
|
||||
echo "Classic sources.list disabled (renamed to sources.list.disabled)"
|
||||
fi
|
||||
}
|
||||
|
||||
+67
-22
@@ -8,9 +8,10 @@ CPU_SUMMARY=""
|
||||
RAM_SUMMARY=""
|
||||
GPU_TYPE=""
|
||||
GPU_DESC=""
|
||||
GPU_VERSION=""
|
||||
INTEL_GPU_DEVICE_ID=""
|
||||
NVIDIA_GPU_DEVICE_ID=""
|
||||
WIFI_SUMMARY="Not detected"
|
||||
KERNEL_VERSION=""
|
||||
WIFI_CHIPSET=""
|
||||
|
||||
# --------------------------
|
||||
@@ -30,20 +31,45 @@ check_sudo() {
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------------
|
||||
# Time sync before network ops
|
||||
# --------------------------------
|
||||
sync_system_time() {
|
||||
if command -v timedatectl &> /dev/null; then
|
||||
local ntp_active
|
||||
ntp_active=$(timedatectl show --property=NTP --value 2>/dev/null || echo "no")
|
||||
if [ "$ntp_active" != "yes" ]; then
|
||||
echo -e "${YELLOW}NTP not active. Attempting to enable time sync...${NC}"
|
||||
sudo timedatectl set-ntp true 2>/dev/null || true
|
||||
sleep 2
|
||||
fi
|
||||
elif command -v hwclock &> /dev/null && command -v ntpd &> /dev/null; then
|
||||
sudo hwclock --hctosys 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------------
|
||||
# Debian version detection
|
||||
# --------------------------------
|
||||
detect_debian_version() {
|
||||
if ! command -v lsb_release &> /dev/null; then
|
||||
echo -e "${YELLOW}Installing lsb-release...${NC}"
|
||||
sudo apt update -qq && sudo apt install -y -qq lsb-release
|
||||
if [ -f /etc/os-release ]; then
|
||||
DEBIAN_CODENAME=$(grep -oP 'VERSION_CODENAME=\K\w+' /etc/os-release 2>/dev/null || echo "")
|
||||
fi
|
||||
if [ -z "$DEBIAN_CODENAME" ]; then
|
||||
echo -e "${YELLOW}Installing lsb-release...${NC}"
|
||||
sync_system_time
|
||||
sudo apt update -qq 2>/dev/null && sudo apt install -y -qq lsb-release
|
||||
fi
|
||||
fi
|
||||
if [ -z "$DEBIAN_CODENAME" ]; then
|
||||
DEBIAN_CODENAME=$(lsb_release -cs 2>/dev/null || echo "")
|
||||
fi
|
||||
DEBIAN_CODENAME=$(lsb_release -cs)
|
||||
case "$DEBIAN_CODENAME" in
|
||||
bookworm) DEBIAN_VERSION="12" ;;
|
||||
trixie) DEBIAN_VERSION="13" ;;
|
||||
*)
|
||||
echo -e "${RED}Unsupported Debian version: $DEBIAN_CODENAME. Only 12 (bookworm) and 13 (trixie) are supported.${NC}"
|
||||
echo -e "${RED}Unsupported Debian version: '$DEBIAN_CODENAME'. Only 12 (bookworm) and 13 (trixie) are supported.${NC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -55,7 +81,7 @@ detect_debian_version() {
|
||||
detect_cpu_ram() {
|
||||
CPU_SUMMARY=$(grep -m1 'model name' /proc/cpuinfo | sed 's/.*: //')
|
||||
RAM_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
||||
RAM_GB=$((RAM_KB / 1024 / 1024))
|
||||
RAM_GB=$(awk -v kb="$RAM_KB" 'BEGIN { printf "%.2f", kb / 1048576 }')
|
||||
RAM_SUMMARY="${RAM_GB} GB"
|
||||
}
|
||||
|
||||
@@ -67,6 +93,13 @@ get_ram_summary() {
|
||||
echo "$RAM_SUMMARY"
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
# Kernel version
|
||||
# ----------------------------------
|
||||
detect_kernel() {
|
||||
KERNEL_VERSION=$(uname -r)
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
# GPU detection
|
||||
# ----------------------------------
|
||||
@@ -96,6 +129,21 @@ detect_gpu() {
|
||||
else
|
||||
GPU_TYPE="unknown"
|
||||
fi
|
||||
|
||||
if [ "$GPU_TYPE" = "nvidia" ]; then
|
||||
local nv_ver
|
||||
nv_ver=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -1)
|
||||
if [ -z "$nv_ver" ]; then
|
||||
nv_ver=$(dpkg -l nvidia-driver 2>/dev/null | awk '/^ii/ {print $3}' | sed 's/-.*//')
|
||||
fi
|
||||
[ -n "$nv_ver" ] && GPU_VERSION="NVIDIA $nv_ver"
|
||||
fi
|
||||
|
||||
if [ -z "$GPU_VERSION" ]; then
|
||||
local mesa_ver
|
||||
mesa_ver=$(dpkg -l libgl1-mesa-dri 2>/dev/null | awk '/^ii/ {print $3; exit}' | sed 's/-.*//')
|
||||
[ -n "$mesa_ver" ] && GPU_VERSION="Mesa $mesa_ver"
|
||||
fi
|
||||
}
|
||||
|
||||
get_gpu_summary() {
|
||||
@@ -107,28 +155,25 @@ get_gpu_summary() {
|
||||
}
|
||||
|
||||
# -------------------------------------
|
||||
# WiFi chipset detection
|
||||
# Network adapter detection
|
||||
# -------------------------------------
|
||||
WIFI_SUMMARY="Not detected"
|
||||
WIFI_CHIPSET=""
|
||||
WIFI_DESC=""
|
||||
ETH_DESC=""
|
||||
|
||||
detect_wifi_chipset() {
|
||||
local net_line
|
||||
net_line=$(lspci -nn | grep -i 'Network controller' | head -n1) || true
|
||||
if [ -z "$net_line" ]; then
|
||||
WIFI_SUMMARY="No WiFi adapter found"
|
||||
WIFI_CHIPSET=""
|
||||
WIFI_DESC=""
|
||||
return
|
||||
detect_network() {
|
||||
local eth_line
|
||||
eth_line=$(lspci -nn | grep -i 'Ethernet controller' | head -n1) || true
|
||||
if [ -n "$eth_line" ]; then
|
||||
ETH_DESC=$(echo "$eth_line" | sed -E 's/^.*\]: //; s/ \[[0-9a-fA-F]{4}:[0-9a-fA-F]{4}\]//; s/ \(rev [0-9a-fA-F]+\)//')
|
||||
fi
|
||||
WIFI_CHIPSET="$net_line"
|
||||
WIFI_DESC=$(echo "$net_line" | sed -E 's/^.*\]: //; s/ \[[0-9a-fA-F]{4}:[0-9a-fA-F]{4}\]//; s/ \(rev [0-9a-fA-F]+\)//')
|
||||
WIFI_SUMMARY="$WIFI_DESC"
|
||||
}
|
||||
|
||||
get_wifi_summary() {
|
||||
echo "$WIFI_SUMMARY"
|
||||
local wifi_line
|
||||
wifi_line=$(lspci -nn | grep -i 'Network controller' | head -n1) || true
|
||||
if [ -n "$wifi_line" ]; then
|
||||
WIFI_CHIPSET="$wifi_line"
|
||||
WIFI_DESC=$(echo "$wifi_line" | sed -E 's/^.*\]: //; s/ \[[0-9a-fA-F]{4}:[0-9a-fA-F]{4}\]//; s/ \(rev [0-9a-fA-F]+\)//')
|
||||
fi
|
||||
}
|
||||
|
||||
# ---------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user