« Feuille classe » : différence entre les versions

De Travail-ivan
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 2 : Ligne 2 :
#!/bin/bash
#!/bin/bash


# Script pour étendre la partition système sda2 sur un système EFI
# Script pour étendre la partition système sda2
# À exécuter en tant que root
# À exécuter en tant que root


Ligne 22 : Ligne 22 :
fi
fi


# Installation des paquets nécessaires
# Installation forcée des paquets nécessaires
print_message "\nVérification et installation des paquets nécessaires..." "$YELLOW"
print_message "\nInstallation des paquets nécessaires..." "$YELLOW"
 
# Mise à jour des dépôts et installation des paquets
apt-get update
apt-get update
apt-get install -y fdisk \
print_message "Installation de fdisk..." "$YELLOW"
                  parted \
apt-get install -y fdisk
                  util-linux \
print_message "Installation de util-linux..." "$YELLOW"
                  e2fsprogs
apt-get install -y util-linux
print_message "Installation de e2fsprogs..." "$YELLOW"
apt-get install -y e2fsprogs
print_message "Installation de parted..." "$YELLOW"
apt-get install -y parted
 
# Vérification de l'installation des commandes essentielles
COMMANDS=("fdisk" "swapon" "swapoff" "partprobe" "resize2fs" "mkswap")
MISSING_COMMANDS=()
 
for cmd in "${COMMANDS[@]}"; do
    if ! which "$cmd" > /dev/null 2>&1; then
        MISSING_COMMANDS+=("$cmd")
    fi
done
 
if [ ${#MISSING_COMMANDS[@]} -ne 0 ]; then
    print_message "Les commandes suivantes sont toujours manquantes : ${MISSING_COMMANDS[*]}" "$RED"
    print_message "Tentative d'installation via le chemin complet..." "$YELLOW"
    # Créer des liens symboliques si nécessaire
    if [ ! -f "/sbin/fdisk" ] && [ -f "/usr/sbin/fdisk" ]; then
        ln -s /usr/sbin/fdisk /sbin/fdisk
    fi
    if [ ! -f "/sbin/swapon" ] && [ -f "/usr/sbin/swapon" ]; then
        ln -s /usr/sbin/swapon /sbin/swapon
    fi
    if [ ! -f "/sbin/swapoff" ] && [ -f "/usr/sbin/swapoff" ]; then
        ln -s /usr/sbin/swapoff /sbin/swapoff
    fi
    if [ ! -f "/sbin/partprobe" ] && [ -f "/usr/sbin/partprobe" ]; then
        ln -s /usr/sbin/partprobe /sbin/partprobe
    fi
fi
 
# Vérification finale des commandes
FINAL_CHECK=0
for cmd in "${COMMANDS[@]}"; do
    if ! which "$cmd" > /dev/null 2>&1; then
        print_message "La commande $cmd n'est toujours pas disponible." "$RED"
        FINAL_CHECK=1
    fi
done
 
if [ $FINAL_CHECK -eq 1 ]; then
    print_message "Certaines commandes sont toujours manquantes. Installation impossible." "$RED"
    print_message "Essayez d'installer manuellement : apt-get install -y fdisk util-linux e2fsprogs parted" "$YELLOW"
    exit 1
fi


# Affichage de l'état actuel
# Affichage de l'état actuel
Ligne 34 : Ligne 83 :
df -h /
df -h /
fdisk -l /dev/sda
fdisk -l /dev/sda
# Récupération des points de début de sda3
START_SDA3=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')


# Demande de confirmation
# Demande de confirmation
print_message "\nATTENTION: Assurez-vous d'avoir:" "$RED"
print_message "\nATTENTION: Assurez-vous d'avoir:" "$RED"
echo "1. Augmenté la taille du disque dans VMware (actuellement configuré à 250G)"
echo "1. Augmenté la taille du disque dans VMware"
echo "2. Créé un snapshot de la VM"
echo "2. Créé un snapshot de la VM"
echo "3. Sauvegardé vos données importantes"
echo "3. Sauvegardé vos données importantes"
Ligne 50 : Ligne 96 :
fi
fi


# Désactivation du swap pour sécurité
# Désactivation du swap
print_message "\nDésactivation temporaire du swap..." "$YELLOW"
print_message "\nDésactivation temporaire du swap..." "$YELLOW"
swapoff -a
swapoff -a


# Rescan du disque pour détecter les changements de taille
# Rescan du disque
print_message "Rescan du disque..." "$YELLOW"
print_message "Rescan du disque..." "$YELLOW"
echo 1 > /sys/class/block/sda/device/rescan
echo 1 > /sys/class/block/sda/device/rescan


# Modification des partitions avec gdisk pour préserver la table GPT
# Modification des partitions
print_message "Modification des partitions..." "$YELLOW"
print_message "Modification des partitions..." "$YELLOW"
(
(
Ligne 78 : Ligne 124 :
echo 82  # Type swap
echo 82  # Type swap
echo w    # Écrire les changements
echo w    # Écrire les changements
echo y    # Confirmer
) | fdisk /dev/sda
) | fdisk /dev/sda


Ligne 84 : Ligne 129 :
print_message "Mise à jour de la table de partitions..." "$YELLOW"
print_message "Mise à jour de la table de partitions..." "$YELLOW"
partprobe /dev/sda
partprobe /dev/sda
# Pause pour laisser le système détecter les changements
sleep 5


# Extension du système de fichiers
# Extension du système de fichiers
Ligne 100 : Ligne 148 :
print_message "\nNouvelle configuration:" "$GREEN"
print_message "\nNouvelle configuration:" "$GREEN"
df -h /
df -h /
print_message "\nTableau des partitions:" "$GREEN"
fdisk -l /dev/sda
fdisk -l /dev/sda
print_message "\nÉtat du swap:" "$GREEN"
swapon --show
swapon --show


print_message "\nOpération terminée avec succès!" "$GREEN"
print_message "\nOpération terminée!" "$GREEN"
 
# Vérification du fstab
if ! grep -q "^/dev/sda3.*swap" /etc/fstab; then
    print_message "\nVérifiez que votre /etc/fstab contient la bonne référence pour le swap:" "$YELLOW"
    print_message "La ligne devrait être : /dev/sda3 none swap sw 0 0" "$YELLOW"
fi
 
# Vérification de l'espace
df -h / | awk 'NR==2 {print "Espace disponible sur /: " $4 " libre sur " $2}'
</syntaxhighlight>
</syntaxhighlight>

Version du 26 novembre 2024 à 11:50

#!/bin/bash

# Script pour étendre la partition système sda2
# À exécuter en tant que root

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Fonction pour afficher les messages
print_message() {
    echo -e "${2}${1}${NC}"
}

# Vérification des privilèges root
if [ "$(id -u)" != "0" ]; then
    print_message "Ce script doit être exécuté en tant que root" "$RED"
    exit 1
fi

# Installation forcée des paquets nécessaires
print_message "\nInstallation des paquets nécessaires..." "$YELLOW"

# Mise à jour des dépôts et installation des paquets
apt-get update
print_message "Installation de fdisk..." "$YELLOW"
apt-get install -y fdisk
print_message "Installation de util-linux..." "$YELLOW"
apt-get install -y util-linux
print_message "Installation de e2fsprogs..." "$YELLOW"
apt-get install -y e2fsprogs
print_message "Installation de parted..." "$YELLOW"
apt-get install -y parted

# Vérification de l'installation des commandes essentielles
COMMANDS=("fdisk" "swapon" "swapoff" "partprobe" "resize2fs" "mkswap")
MISSING_COMMANDS=()

for cmd in "${COMMANDS[@]}"; do
    if ! which "$cmd" > /dev/null 2>&1; then
        MISSING_COMMANDS+=("$cmd")
    fi
done

if [ ${#MISSING_COMMANDS[@]} -ne 0 ]; then
    print_message "Les commandes suivantes sont toujours manquantes : ${MISSING_COMMANDS[*]}" "$RED"
    print_message "Tentative d'installation via le chemin complet..." "$YELLOW"
    # Créer des liens symboliques si nécessaire
    if [ ! -f "/sbin/fdisk" ] && [ -f "/usr/sbin/fdisk" ]; then
        ln -s /usr/sbin/fdisk /sbin/fdisk
    fi
    if [ ! -f "/sbin/swapon" ] && [ -f "/usr/sbin/swapon" ]; then
        ln -s /usr/sbin/swapon /sbin/swapon
    fi
    if [ ! -f "/sbin/swapoff" ] && [ -f "/usr/sbin/swapoff" ]; then
        ln -s /usr/sbin/swapoff /sbin/swapoff
    fi
    if [ ! -f "/sbin/partprobe" ] && [ -f "/usr/sbin/partprobe" ]; then
        ln -s /usr/sbin/partprobe /sbin/partprobe
    fi
fi

# Vérification finale des commandes
FINAL_CHECK=0
for cmd in "${COMMANDS[@]}"; do
    if ! which "$cmd" > /dev/null 2>&1; then
        print_message "La commande $cmd n'est toujours pas disponible." "$RED"
        FINAL_CHECK=1
    fi
done

if [ $FINAL_CHECK -eq 1 ]; then
    print_message "Certaines commandes sont toujours manquantes. Installation impossible." "$RED"
    print_message "Essayez d'installer manuellement : apt-get install -y fdisk util-linux e2fsprogs parted" "$YELLOW"
    exit 1
fi

# Affichage de l'état actuel
print_message "\nÉtat actuel du système:" "$GREEN"
df -h /
fdisk -l /dev/sda

# Demande de confirmation
print_message "\nATTENTION: Assurez-vous d'avoir:" "$RED"
echo "1. Augmenté la taille du disque dans VMware"
echo "2. Créé un snapshot de la VM"
echo "3. Sauvegardé vos données importantes"
read -p "Voulez-vous continuer? (o/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Oo]$ ]]; then
    print_message "Opération annulée" "$YELLOW"
    exit 1
fi

# Désactivation du swap
print_message "\nDésactivation temporaire du swap..." "$YELLOW"
swapoff -a

# Rescan du disque
print_message "Rescan du disque..." "$YELLOW"
echo 1 > /sys/class/block/sda/device/rescan

# Modification des partitions
print_message "Modification des partitions..." "$YELLOW"
(
echo d    # Supprimer une partition
echo 3    # Supprimer sda3 (swap)
echo d    # Supprimer une autre partition
echo 2    # Supprimer sda2
echo n    # Nouvelle partition
echo      # Numéro par défaut (2)
echo      # Premier secteur par défaut
echo -1G  # Laisser 1G à la fin pour le swap
echo      # Type par défaut (Linux filesystem)
echo n    # Nouvelle partition pour le swap
echo      # Numéro par défaut (3)
echo      # Premier secteur par défaut
echo      # Dernier secteur par défaut
echo t    # Changer le type
echo 3    # Partition 3
echo 82   # Type swap
echo w    # Écrire les changements
) | fdisk /dev/sda

# Mise à jour de la table de partitions
print_message "Mise à jour de la table de partitions..." "$YELLOW"
partprobe /dev/sda

# Pause pour laisser le système détecter les changements
sleep 5

# Extension du système de fichiers
print_message "Extension du système de fichiers..." "$YELLOW"
resize2fs /dev/sda2

# Reformatage du swap
print_message "Reformatage du swap..." "$YELLOW"
mkswap /dev/sda3

# Réactivation du swap
print_message "Réactivation du swap..." "$YELLOW"
swapon -a

# Vérification finale
print_message "\nNouvelle configuration:" "$GREEN"
df -h /
print_message "\nTableau des partitions:" "$GREEN"
fdisk -l /dev/sda
print_message "\nÉtat du swap:" "$GREEN"
swapon --show

print_message "\nOpération terminée!" "$GREEN"