« Feuille classe » : différence entre les versions

De Travail-ivan
Aucun résumé des modifications
Aucun résumé des modifications
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
#!/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
# Vérification des privilèges root
if [ "$(id -u)" != "0" ]; then
if [ "$EUID" -ne 0 ]; then
     print_message "Ce script doit être exécuté en tant que root" "$RED"
     echo "Ce script doit être exécuté en tant que root"
     exit 1
     exit 1
fi
fi


# Installation forcée des paquets nécessaires
# Installation des outils nécessaires
print_message "\nInstallation des paquets nécessaires..." "$YELLOW"
 
# Mise à jour des dépôts et installation des paquets
apt-get update
apt-get update
print_message "Installation de fdisk..." "$YELLOW"
apt-get install -y parted fdisk
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
# Afficher l'état actuel
COMMANDS=("fdisk" "swapon" "swapoff" "partprobe" "resize2fs" "mkswap")
echo "État actuel du disque :"
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
fdisk -l /dev/sda
echo "-------------------"
df -h /dev/sda2
echo "-------------------"


# Demande de confirmation
# Calculer la taille maximale disponible (juste avant la partition swap)
print_message "\nATTENTION: Assurez-vous d'avoir:" "$RED"
SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')
echo "1. Augmenté la taille du disque dans VMware"
echo "Début de la partition SWAP : $SWAP_START"
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
# Redimensionner avec fdisk
print_message "Modification des partitions..." "$YELLOW"
(
(
echo d   # Supprimer une partition
echo "d# Supprimer partition
echo 3    # Supprimer sda3 (swap)
echo "2"  # Partition numéro 2
echo d    # Supprimer une autre partition
echo "n# Nouvelle partition
echo 2   # Supprimer sda2
echo "p"  # Type primaire
echo n   # Nouvelle partition
echo "2" # Partition numéro 2
echo     # Numéro par défaut (2)
echo     # Premier secteur (par défaut)
echo     # Premier secteur par défaut
echo "$((SWAP_START - 1))"  # Dernier secteur (juste avant le swap)
echo -1G # Laisser 1G à la fin pour le swap
echo "N"  # Ne pas supprimer la signature
echo     # Type par défaut (Linux filesystem)
echo "w# Écrire les changements
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
) | fdisk /dev/sda


# Mise à jour de la table de partitions
# Recharger la table des partitions
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
# Redimensionner le système de fichiers
sleep 5
 
# Extension du système de fichiers
print_message "Extension du système de fichiers..." "$YELLOW"
resize2fs /dev/sda2
resize2fs /dev/sda2


# Reformatage du swap
# Afficher le résultat
print_message "Reformatage du swap..." "$YELLOW"
echo "Nouvel état du disque :"
mkswap /dev/sda3
df -h /dev/sda2
 
# 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"
</syntaxhighlight>
</syntaxhighlight>

Dernière version du 28 novembre 2024 à 11:28

#!/bin/bash

# Vérification des privilèges root
if [ "$EUID" -ne 0 ]; then
    echo "Ce script doit être exécuté en tant que root"
    exit 1
fi

# Installation des outils nécessaires
apt-get update
apt-get install -y parted fdisk

# Afficher l'état actuel
echo "État actuel du disque :"
fdisk -l /dev/sda
echo "-------------------"
df -h /dev/sda2
echo "-------------------"

# Calculer la taille maximale disponible (juste avant la partition swap)
SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')
echo "Début de la partition SWAP : $SWAP_START"

# Redimensionner avec fdisk
(
echo "d"  # Supprimer partition
echo "2"  # Partition numéro 2
echo "n"  # Nouvelle partition
echo "p"  # Type primaire
echo "2"  # Partition numéro 2
echo     # Premier secteur (par défaut)
echo "$((SWAP_START - 1))"  # Dernier secteur (juste avant le swap)
echo "N"  # Ne pas supprimer la signature
echo "w"  # Écrire les changements
) | fdisk /dev/sda

# Recharger la table des partitions
partprobe /dev/sda

# Redimensionner le système de fichiers
resize2fs /dev/sda2

# Afficher le résultat
echo "Nouvel état du disque :"
df -h /dev/sda2