diff --git a/ib.sh b/ib.sh index 394fd3c..870b168 100644 --- a/ib.sh +++ b/ib.sh @@ -317,6 +317,76 @@ EOF pause } +prepare_dist_upgrade() { + echo -e "${YELLOW}🧹 ПОДГОТОВКА СИСТЕМЫ К ОБНОВЛЕНИЮ${NC}" + + # 1. Обновляем текущие пакеты до упора + echo "📦 Шаг 1: Полное обновление текущих пакетов..." + $PKG_MGR update -y && $PKG_MGR upgrade -y && $PKG_MGR dist-upgrade -y 2>/dev/null || $PKG_MGR full-upgrade -y + + # 2. Чистка старых ядер и конфигов + echo "🧹 Шаг 2: Удаление неиспользуемых зависимостей..." + $PKG_MGR autoremove --purge -y + $PKG_MGR autoclean -y + + # 3. Проверка битых пакетов + if [[ "$PKG_MGR" == "apt" ]]; then + echo "🔍 Шаг 3: Проверка целостности пакетов..." + dpkg --configure -a + apt install -f -y + fi + + echo -e "${GREEN}✅ Система готова к апгрейду!${NC}" + echo -e "${YELLOW}⚠️ РЕКОМЕНДУЕТСЯ ПЕРЕЗАГРУЗКА ПЕРЕД СЛЕДУЮЩИМ ШАГОМ!${NC}" + pause +} +do_major_upgrade() { + clear + echo -e "${RED}⚠️ ВНИМАНИЕ: ОПАСНАЯ ОПЕРАЦИЯ!${NC}" + echo "Эта функция обновит вашу ОС до следующей мажорной версии." + echo "Убедитесь, что у вас есть БЭКАП данных." + read -p "Вы уверены, что хотите продолжить? (y/N): " CONFIRM + [ "$CONFIRM" != "y" ] && return + + case $OS_ID in + ubuntu) + echo "🚀 Запуск Ubuntu Release Upgrade..." + pkg_install update-manager-core + # -d для разработки (если релиз новый), убираем для стабильных + do-release-upgrade -f DistUpgradeViewNonInteractive + ;; + debian) + CURRENT_CODENAME=$(lsb_release -sc 2>/dev/null || cat /etc/debian_version | cut -d. -f1) + echo "📝 Текущий кодовое имя: $CURRENT_CODENAME" + read -p "Введите кодовое имя СЛЕДУЮЩЕГО релиза (например, bookworm): " NEXT_CODENAME + + # Замена репозиториев + sed -i "s/$CURRENT_CODENAME/$NEXT_CODENAME/g" /etc/apt/sources.list + sed -i "s/$CURRENT_CODENAME/$NEXT_CODENAME/g" /etc/apt/sources.list.d/*.list 2>/dev/null + + apt update + apt upgrade --without-new-pkgs -y + apt full-upgrade -y + ;; + almalinux|rocky) + echo "🚀 Использование инструмента ELevate (Leapp)..." + pkg_install network-scripts # часто нужно для leapp + curl -O https://repo.almalinux.org/elevate/elevate-release-latest-el$(echo $OS_VERSION | cut -d. -f1).noarch.rpm + rpm -Uvh elevate-release-latest-el*.rpm + pkg_install leapp-upgrade leapp-data-almalinux # или rocky + echo "🔍 Запуск проверки совместимости..." + leapp preupgrade + echo -e "${YELLOW}Проверьте отчет: /var/log/leapp/leapp-report.txt${NC}" + echo "Для финала запустите: leapp upgrade" + ;; + *) + echo "❌ Автоматический апгрейд для $OS_ID пока не поддерживается." + ;; + esac + pause +} + + setup_disks_advanced() { clear echo "${GREEN}💾 НОВЫЕ ДИСКИ${NC}" @@ -538,6 +608,8 @@ while true; do printf "13) 🗄️ SAMBA (шары+пользователи) \n" printf "14) 💾 Диски (выбор+форматирование)\n" printf "15) 📈 Расширение дисков \n" + printf "16) 🛠️ Подготовка к Update \m" + printf "17 🆙 Upgrade релиза. \n" printf "S) 📊 Статус \n" printf "0) ❌ Выход \n" printf "==============================================\n" @@ -559,6 +631,8 @@ while true; do 13) install_smb_interactive ;; 14) setup_disks_advanced ;; 15) extend_disk_space ;; + 16) prepare_dist_upgrade ;; + 17) do_major_upgrade ;; [Ss]) status_all ;; 0) break ;; *) echo "❌ Неверный пункт!"; sleep 1 ;;