|
|
(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> |
#!/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