clé réemploi automatisée

Dans ce forum, vous pouvez vous exprimer librement de vos souhaits pour améliorer les services de l'association
wardidi
Messages : 30
Inscription : 06 avr. 2025 18:14

clé réemploi automatisée

Message par wardidi »

Salut,
Je fais suite à hier et le souhait d'automatiser l'effacement sécuriser et l'installation.
Je suis parti du constat que le script erase.sh efface le disque puis demande si on veut installer, en semi-auto, ou automatique.
Je l'ai copié, renommé en erase_clone.sh, modifié et placé dans la partition IMAGES avec les autres scripts.
J'ai modifié ventoy_remploi_grub.cfg pour ajouté une entrée dans le grub qui démarre le script erase_close.sh à mettre dans le dossier ventoy de la partition ventoy.

Valider l'entrée " [BETA]Effacement+install auto" dans le grub démarre l'effacement sécurisé, vérifie l'absence de données restantes (j'ai mis le choix 1 car le plus rapide), met le log d'effacement dans /IMAGES/Erase_log et lance l'installation automatique. (clone.ini doit être configuré). La seule action demander est le dégèle du disque.

La modification du script n'est probablement pas la plus propre vu mes connaissances mais ça marche sur un uefi ssd. Pas encore tester sur legacy hdd. Toutes les lignes modifiées ou ajoutées des scripts sont commentées par ### BETA pour plus de lisibilité.

A tester. Dites moi comment le rendre plus propre et si il y a des erreurs.

Pour erase_clone.sh à ajouter aux autres script dans la partition IMAGES

Code : Tout sélectionner

#!/bin/bash

# erase_clone.sh --
## Modification de erase.sh pour un effacement, une vérification des données et une installation tout automatisé.
# Les modification ont été faite par wardidi
# L'écrasement sécurisé, la vérification des données et l'installation propose plusieurs modes. 
# Pour les automatiser, les variables correspondantes doivent être fixées en fonction aux lignes 124-126-128
#
#
#
#   This file allows to erasing target hard disk of a computer :
#     - magnetic disk by Nwipe utility : https://en.wikipedia.org/wiki/Nwipe
#     - Solid-State Drive by HDparm : https://en.wikipedia.org/wiki/Hdparm
#     - NVMe by nvme-cli : https://github.com/linux-nvme/nvme-cli
#
#   Created on 2010-23 by collectif Emmabuntüs (contact@emmabuntus.org).
#
#   It was tested and validated on Clonezilla live 3.0.1-8 i686/amd64
#
#   Home web site : https://emmabuntus.org/
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


################################################################################

#DEBUG="true"
#BEEP_OFF="true"
#AUTOMATIC_HALT_MAGNETIC_OFF="true"
AUTOMATIC_HALT_SSD_OFF="true"

DIR_ERASE_LOG=Erase_log
NWIPE_LOG=nwipe_log
HDPARM_LOG=hdparm_log
NVME_LOG=nvme_cli_log
TESTDISK_LOG=testdisk.log

KEY_DRIVE=$(sudo blkid | grep LABEL=\"IMAGES\" | cut  -d ':' -f1)
UEFI_ON=0
SECUREBOOT_ON=0
DATE=`date -u +"%Y-%m-%d-%H-%M"`
LANGUE=$(echo ${LANG} | cut -d _ -f1)

# Configuration de l'effacement le plus rapide
# Configuration of default erasing
NWIPE_METHOD[1]="zero      "
NWIPE_VERIFY[1]="off"
NWIPE_OPTIONS[1]="--autopoweroff --nousb --noblank"
# Configuration de l'effacement par défaut de Nwipe
# Configuring advanced Wipe
NWIPE_METHOD[2]="dodshort  "
NWIPE_VERIFY[2]="last"
NWIPE_OPTIONS[2]="--autopoweroff --nousb"
# Configuration de l'effacement avancé recommendé par la DoD
# Configuring advanced Wipe
NWIPE_METHOD[3]="dod522022m"
NWIPE_VERIFY[3]="last"
NWIPE_OPTIONS[3]="--autopoweroff --nousb"

NUMBER_ERASE_ID=3

ENHANCED_SECURITY_ERASE=""

# Mode d'analyse de Testdisk
TESTDISK_OPTION[1]="analyze"
TESTDISK_OPTION[2]="analyze,list"
TESTDISK_OPTION[3]="analyze,search"

NUMBER_ANALYSE_ID=3

CONFIG_FILE=clone.ini
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
ORANGE='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color


# Lecture des options de la ligne de commande
# Read command line options
LINE_OPTION=$1

if [ -z ${DEBUG} ] ; then
    # Efface l'affichage précédant
    clear
fi

if [[ ${LINE_OPTION} == "-a" ]] ; then
    AUTOMATIC="true"
fi


# Test Secureboot
if test -d /sys/firmware/efi/ ; then
    if [ "$(which mokutil)" != "" ] ; then
        if [ "$(mokutil --sb-state | grep "SecureBoot enabled")" != "" ] ; then
            SECUREBOOT_ON=1
        fi
    fi
fi

if [ ${LANGUE} = fr ]
then

#####Préconfiguration de l'écrasement sécurisé ET vérification ET installation par clonage
##### BETA Demande de confirmation de l'effacement oui=o non=n
    read_1=o ##### BETA
    read_2=o ##### BETA
##### BETA Voulez-vous lancer une analyse de recherche de données sur le disque cible, oui=o non=n
    read_analyse=o ##### BETA
##### BETA Veuillez sélectionner le mode d'analyse désiré ?.analyse=1 analyse_test=2 analyse_search=3
    analyse_id_number=1   #### BETA
#### BETA Determination du mode de clonage  pour lancer le clonage en mode semi-automatique=s ou  pour le mode automatique =a 
    mode_clonage=a  ####### BETA
#### BETA Veuillez sélectionner le mode d'effacement désiré (hdd)méthode zéro=1 dodshot=2 dod522022m=3
    erase_id_number=1
#### BETA Voulez-vous arrêter automatiquement l'ordinateur à la fin de l'opération d'effacement
    read_arret=n

    message_info_emmabuntus="Clé USB de réemploi par Emmabuntüs (https://emmabuntus.org)"
    message_info_sources="Les sources sont disponibles sur http://usb-reemploi.emmabuntus.org"
    message_identification_usb_ko="Attention : La clé USB avec l'étiquette \"IMAGES\" n'a pas été indentifiée. Taper sur une touche quelconque pour sortir du script"
    message_trouve_usb_avant="Clé USB trouvée sur"
    message_trouve_usb_apres=", mais ce n'est pas son emplacement habituel, ce qui signifie que vous avez plusieurs disques durs sur ce système."
    message_selection_usb="Veuillez entrer le numéro correspondant au disque cible de l'installation :"
    message_mauvais_nombre_disque_dur="Attention : Vous n'avez pas entré un nombre pour selectionner le disque. Taper sur une touche quelconque pour sortir du script"
    message_mauvais_selection_disque_dur="Attention : Vous n'avez pas entré un nombre correspondant à un disque. Taper sur une touche quelconque pour sortir du script"
    message_usb_disque_dur_avant="Clé USB trouvée sur"
    message_usb_disque_dur_apres="et disque sélectionné sur "
    message_type_disque_dur="Magnétique"
    message_mode_effacement="Modes d'effacement prédéfinis pour la clé de réemploi du plus rapide au plus lent :"
    message_methode_effacement="méthode"
    message_verification_effacement="vérification"
    message_options_effacement="options"
    message_utilisateur_effacement="Choix du mode réalisé par l'utilisateur dans l'interface de Nwipe pour avoir accès à l'ensemble des modes"
    message_choix_effacement="Veuillez sélectionner le mode d'effacement désiré ?"
    message_info_operation="L'effacement va être effectué et à la fin de celui-ci l'ordinateur va s'arrêter."
    message_demande_arret="Voulez-vous arrêter automatiquement l'ordinateur à la fin de l'opération d'effacement ? [o/N] : "
    message_info_log_avant="Vous pourrez trouver le résultat de l'opération d'effacement dans le fichier de log :"
    message_info_log_apres="présent sur la partition \"IMAGES\" de la clé de réemploi."
    message_info_effacement_avant="/!\ Attention : voulez vous effacer le disque /dev/"
    message_info_effacement_apres=", toutes les données seront détruites ? [o/N] : "
    message_start_effacement_avance="Lancement de l'effacement mode amélioré"
    message_start_effacement="Lancement de l'effacement mode standard"
    message_stop_effacement="Abandon de l'effacement sécurisé !!!"
    message_effacement_ssd_ok="Disque dur SSD effacé"
    message_effacement_ssd_ko="Disque dur SSD non effacé !!!"
    message_effacement_ssd_ko_frozen="Disque dur SSD non effacé, car dans un état gelé !!!"
    message_disque_gele="Disque SSD dans un état gelé."
    message_mise_veille="Voulez-vous essayer de le débloquer ? Alors appuyez sur la touche \"Entrée\".\nSuite à cela l'ordinateur va se mettre en veille. Au bout de 10 secondes appuyez sur le bouton marche pour le réveiller."
    message_fichier_config_automatique_non_trouve="Fichier de configuration du clonage en mode automatique (${CONFIG_FILE}) non trouvé !!!"
    message_nombre="Saisissez un nombre ci-dessus, puis validez : "
    message_info_disque_ssd="Affiche les informations sur le disque dur SSD"
    message_stop_effacement_nvme_avant="Disque SSD NVMe "
    message_stop_effacement_nvme_apres=" ne supporte pas le formatage !!!"
    message_analyse_disque_avant="Voulez-vous lancer une analyse de recherche de données sur le disque cible ?"
    message_analyse_disque_apres="/!\ Attention : cela peut prendre beaucoup du temps. [o/N] : "
    message_mode_analyse="Modes d'analyse prédéfinis pour la clé de réemploi du plus rapide au plus lent :"
    message_utilisateur_analyse="Choix du mode réalisé par l'utilisateur dans l'interface de TestDisk pour avoir accès à l'ensemble des modes"
    message_choix_analyse="Veuillez sélectionner le mode d'analyse désiré ?"
    message_resultat_analyse_disque="Résultat de l'analyse du disque cible :"
    message_pause_continue_script="Appuyez sur la touche \"Entrée\" pour continuer le script"
    message_pause_script="Appuyez sur la touche \"Entrée\" pour terminer du script"
    message_stop_computer="Appuyez sur la touche \"Entrée\" pour arrêter l'ordinateur"
    message_start_clonage="Ou appuyer sur la touche \"S\" pour lancer le clonage en mode semi-automatique ou sur \"A\" pour le mode automatique : "
    CODE_OK_MINUSCULE="o"
    CODE_OK_MAJUSCULE="O"

else

    message_info_emmabuntus="Emmabuntüs reusable USB key (https://emmabuntus.org)"
    message_info_sources="Sources are avbailable on http://usb-reemploi.emmabuntus.org"
    message_identification_usb_ko="Warning : The USB key with the \"IMAGES\" label was not found. Press any key to exit the script"
    message_trouve_usb_avant="USB Key found on"
    message_trouve_usb_apres=", but this is not it's usual location, which means that there is several hard drives on your computer."
    message_selection_usb="Please enter the number corresponding to the target disk of this install."
    message_mauvais_nombre_disque_dur="Warning : You did not enter a number to select the disk. Press any key to exit the script"
    message_mauvais_selection_disque_dur="Warning : You did not enter a number corresponding to a disk. Press any key to exit the script"
    message_usb_disque_dur_avant="USB Key found on"
    message_usb_disque_dur_apres="and selected hard drive on "
    message_type_disque_dur="Magnetic"
    message_mode_effacement="Erase modes available from slowest to fastest :"
    message_methode_effacement="method"
    message_verification_effacement="check"
    message_options_effacement="options"
    message_utilisateur_effacement="Choice of mode made by the user in the Nwipe interface to have access to all modes"
    message_choix_effacement="Please select the desired erase mode ?"
    message_info_operation="The erasing will be started and at the end the computer will stop."
    message_demande_arret="Do you want to automatically shut down the computer at the end of the erase operation? [y/N]: "
    message_info_log_avant="You can find the result of the erasing operation in the log file :"
    message_info_log_apres="present on the \"IMAGES\" partition of the key of reuse."
    message_info_effacement_avant="/!\ Warning : Do you want to erase the disk /dev/"
    message_info_effacement_apres=", all data will be destroyed ? [y/N]: "
    message_start_effacement_avance="Start of enhanced mode erasure"
    message_start_effacement="Start of standard mode erasure"
    message_stop_effacement="Erasing aborted !!!"
    message_effacement_ssd_ok="SSD hard drive erased"
    message_effacement_ssd_ko="SSD hard drive not erased  !!!"
    message_effacement_ssd_ko_frozen="SSD hard disk not erased, because in a frozen state !!!"
    message_disque_gele="SSD drive in a frozen state."
    message_mise_veille="Do you want to try to unlock it ? Then press the \"Enter\" key.\nAfter that the computer will go to sleep. After 10 seconds press the power button to wake it up."
    message_fichier_config_automatique_non_trouve="Automatic mode cloning configuration file (${CONFIG_FILE}) not found  !!!"
    message_nombre="Enter a number above, then validate: "
    message_info_disque_ssd="Displays SSD hard drive information"
    message_stop_effacement_nvme_avant="NVMe SSD "
    message_stop_effacement_nvme_apres=" does not support formatting !!!"
    message_analyse_disque_avant="Do you want to run a data search scan on the target disk?"
    message_analyse_disque_apres="/!\ Warning : This operation can take a long time. [y/N]: "
    message_mode_analyse="Predefined analysis modes for the reuse key from fastest to slowest: "
    message_utilisateur_analyse="Choice of mode made by the user in the TestDisk interface to have access to all modes"
    message_choix_analyse="Please select the desired scan mode?"
    message_resultat_analyse_disque="Target Disk scan result:"
    message_pause_continue_script="Press the \"Enter\" key to continue the script"
    message_pause_script="Press the \"Enter\" key to exit"
    message_stop_computer="Appuyez sur la touche \"Entrée\" pour arrêter l'ordinateur"
    message_start_clonage="Or press the \"S\" key to start cloning in semi-automatic mode or \"A\" for automatic mode: "
    CODE_OK_MINUSCULE="y"
    CODE_OK_MAJUSCULE="Y"

fi

function analyse_disque()
{

    file_log=${1}

    echo -e ""
       
    echo -e -n "${NC}"

    if [ "$read_analyse" = ${CODE_OK_MINUSCULE} ] || [ "$read_analyse" = ${CODE_OK_MAJUSCULE} ] ; then
        if test -f ${TESTDISK_LOG} ; then
            rm ${TESTDISK_LOG}
        fi

        echo -e ""
        echo -e "${message_mode_analyse}"

        for (( analyse_id = 1 ; analyse_id <= ${NUMBER_ANALYSE_ID} ; analyse_id++ ))
        do
            echo -e "${YELLOW}${analyse_id}${NC} - ${GREEN}Mode = ${TESTDISK_OPTION[${analyse_id}]}${NC}"
        done

        erase_id=$((${NUMBER_ANALYSE_ID}+1))
        echo -e "${YELLOW}${analyse_id}${NC} - ${ORANGE}${message_utilisateur_analyse}${NC}"


        echo ""
        echo -e -n "${YELLOW}${message_choix_analyse}${NC} "

        echo -e -n "${ORANGE}"
 	 
        echo -e -n "${NC}"

        if [ ${analyse_id_number} -le ${NUMBER_ANALYSE_ID} ] ; then
            TESTDISK_OPTION=${TESTDISK_OPTION[${analyse_id_number}]}
            TESTDISK_CMD="/cmd"
        else
            TESTDISK_OPTION=""
            TESTDISK_CMD=""
        fi

        sudo testdisk /log ${TESTDISK_CMD} /dev/${HARD_DRIVE} ${TESTDISK_OPTION}

        if test -f ${TESTDISK_LOG} ; then
            echo -e "${GREEN}${message_resultat_analyse_disque}${NC}"
            echo -e ""
            cat ${TESTDISK_LOG}

            echo "" | sudo tee -a ${file_log} >/dev/null
            echo "# TestDisk analyse ################################################################" | sudo tee -a ${file_log} >/dev/null
            echo "" | sudo tee -a ${file_log} >/dev/null
            echo "TESTDISK_CMD=${TESTDISK_CMD}" | sudo tee -a ${file_log} >/dev/null
            echo "TESTDISK_OPTION=${TESTDISK_OPTION}" | sudo tee -a ${file_log} >/dev/null
            echo "" | sudo tee -a ${file_log} >/dev/null
            cat ${TESTDISK_LOG} | sudo tee -a ${file_log} >/dev/null
            rm ${TESTDISK_LOG}

            echo -e ""
            
        fi
    fi

}

echo ""
echo ${message_info_emmabuntus}
echo ${message_info_sources}
echo ""

# Verrouillage du pavé numérique
setleds -D +num

# Positionnement sur la clé USB au niveau des scripts
# Go to scripts top dir
cd /home/partimag

# Identification de la clé USB
# Finding out the USB Key
if [ -z ${KEY_DRIVE} ] ; then

   echo -e -n "${RED}${message_identification_usb_ko}${NC}"
   echo -e "\a"

   read read_no_correct_label_key

   exit 1

elif [ $(echo ${KEY_DRIVE} | grep sdb) ] ; then

    KEY_DRIVE_FOUND="/dev/sdb"

elif [ $(echo ${KEY_DRIVE} | grep sda) ] ; then

    KEY_DRIVE_FOUND="/dev/sda"

fi

# Identification du disque dur
# Finding the hard drive

find_disk=$(sudo fdisk -l | grep 'Disk /dev/sd\|Disk /dev/hd\|Disk /dev/mmcblk\|Disk /dev/hd\|Disk /dev/nvme' | cut -d : -f1 | cut -d " " -f2)
nb_find_disk=$(echo ${find_disk} | wc -w)

if [ ! -z ${DEBUG} ] ; then
    echo -e "KEY_DRIVE_FOUND=${KEY_DRIVE_FOUND}"
    echo -e "find_disk=${find_disk}"
    echo -e "nb_find_disk=${nb_find_disk}"
fi

if [ ${nb_find_disk} -eq 2 ] && [ -n ${KEY_DRIVE_FOUND}  ] ; then # Si 2 disques trouvés et que la clé USB a été identifiée

    for disk_name in ${find_disk}
    do
        if [ "${disk_name}" != ${KEY_DRIVE_FOUND} ] ; then
            HARD_DRIVE=$(echo ${disk_name} | cut -d / -f3)
        fi

    done

elif [ -n "${KEY_DRIVE}" ] ; then

    echo -e "${message_trouve_usb_avant} ${GREEN}${KEY_DRIVE}${NC}${message_trouve_usb_apres}"
    echo ""
    echo "${message_selection_usb}"

    i=0
    for disk_name in ${find_disk}
    do
        if [ ! $(echo ${KEY_DRIVE} | grep ${disk_name}) ] ; then
            disk_model=$(sudo fdisk -l ${disk_name} | grep "Disk model" | cut -d : -f2)
            disk_size=$(sudo fdisk -l ${disk_name} | grep "Disk " | grep sector | cut -d : -f2 | cut -d B -f1)
            i=$(($i+1))
            echo -e "${YELLOW}${i}${NC} - ${GREEN}${disk_name} - model: ${disk_model} - size: ${disk_size}B${NC}"
        fi

    done

    echo ""
    echo -e -n "${YELLOW}${message_nombre}${NC}"

    echo -e -n "${ORANGE}"
    read read_disk_number
    echo -e -n "${NC}"

    # Test si c'est un nombre
    # Check if the entry is a number
    if echo ${read_disk_number} | grep -qE '^[0-9]+$'; then

        echo ""

    else

        echo -e -n "${RED}${message_mauvais_nombre_disque_dur}${NC}"
        echo -e "\a"

        read read_no_correct_number

        exit 2
    fi

    i=0
    macth_number=0

    for disk_name in ${find_disk}
    do
        if [ ! $(echo ${KEY_DRIVE} | grep ${disk_name}) ] ; then
            i=$(($i+1))
            if [ ${read_disk_number} -eq $i ] ; then
                HARD_DRIVE=${disk_name}
                macth_number=1
            fi
        fi
    done

    if [  ${macth_number} -eq 1 ] ; then

        HARD_DRIVE=$(echo ${HARD_DRIVE} | cut -d / -f3)

    else

        echo -e -n "${RED}${message_mauvais_selection_disque_dur}${NC}"
        echo -e "\a"

        read read_no_correct_number

        exit 3

    fi

fi

# Identification du type de disque dur : Classique ou SSD
TYPE_HARD_DRIVE=$(cat /sys/block/${HARD_DRIVE}/queue/rotational)
if [ ${TYPE_HARD_DRIVE} -eq 0 ] ; then

    # Test si le SSD est NVMe
    HARD_DRIVE_NVME=$(sudo nvme list | grep "/dev/" | cut -d " " -f1 )

    if [ "${HARD_DRIVE_NVME}" != "" ] ; then

        # Test support formatage NVMe
        support_formatage_nvme=$(sudo nvme id-ctrl -H ${HARD_DRIVE_NVME} | grep "Format NVM Support")

        # Formatage NVMe non supportée
        if [ "${support_formatage_nvme}" == "" ] ; then

            echo ""
            echo -e -n "${RED}${message_stop_effacement_nvme_avant}${HARD_DRIVE_NVME}${message_stop_effacement_nvme_apres}${NC}"

            echo -e "\a"

            read read_no_support_formatage_nvme

            exit 4

        fi

        NAME_TYPE_HARD_DRIVE="MVMe"
        ERASE_LOG=${NVME_LOG}

    else

        NAME_TYPE_HARD_DRIVE="SSD"
        ERASE_LOG=${HDPARM_LOG}

    fi

else
    # Disque magnétique
    NAME_TYPE_HARD_DRIVE=${message_type_disque_dur}
    ERASE_LOG=${NWIPE_LOG}
fi

echo -e "${message_usb_disque_dur_avant} ${GREEN}${KEY_DRIVE}${NC} ${message_usb_disque_dur_apres}${GREEN}/dev/${HARD_DRIVE}${NC} (Type : ${GREEN}${NAME_TYPE_HARD_DRIVE}${NC})${NC}"
echo ""

# Changement du nom du fichier de log pour savoir si le PC est en UFEI, SecureBoot
if test -d /sys/firmware/efi/ ; then

    if [ "$(mokutil --sb-state | grep "SecureBoot enabled")" != "" ] ; then
        ERASE_LOG=${ERASE_LOG}_UEFI_SB
    else
        ERASE_LOG=${ERASE_LOG}_UEFI
    fi

else
    ERASE_LOG=${ERASE_LOG}_LEGACY
fi

# Détermination du type de CPU
if [ $(uname -m) = "x86_64" ] ; then
    ERASE_LOG=${ERASE_LOG}_X64
else
    ERASE_LOG=${ERASE_LOG}_X32
fi

# Verification si le répetoire de log n'existe pas et création
if ! test -d ${DIR_ERASE_LOG} ; then
    sudo mkdir ${DIR_ERASE_LOG}
fi

# Ajout du répertoire, de la date et de l'extension au fichier de log
ERASE_LOG=${DIR_ERASE_LOG}/${DATE}-${ERASE_LOG}.log

# Effacement pour un disque dur magnétique utilisant Nwipe
if ! [ ${TYPE_HARD_DRIVE} -eq 0 ] ; then

    # Choix du type d'effacement

    echo -e "${message_mode_effacement}"

    for (( erase_id = 1 ; erase_id <= ${NUMBER_ERASE_ID} ; erase_id++ ))
    do
        echo -e "${YELLOW}${erase_id}${NC} - ${GREEN}${message_methode_effacement} = ${NWIPE_METHOD[${erase_id}]},\t ${message_verification_effacement} = ${NWIPE_VERIFY[${erase_id}]},\t ${message_options_effacement} = ${NWIPE_OPTIONS[${erase_id}]}${NC}"
    done

    erase_id=$((${NUMBER_ERASE_ID}+1))
    echo -e "${YELLOW}${erase_id}${NC} - ${ORANGE}${message_utilisateur_effacement}"

    echo ""
    echo -e -n "${YELLOW}${message_choix_effacement}${NC} "

    echo -e -n "${ORANGE}"
    
    echo -e -n "${NC}"

    if [ ${erase_id_number} -le ${NUMBER_ERASE_ID} ] ; then
        NWIPE_METHOD=${NWIPE_METHOD[${erase_id_number}]}
        NWIPE_VERIFY=${NWIPE_VERIFY[${erase_id_number}]}
        NWIPE_OPTIONS=${NWIPE_OPTIONS[${erase_id_number}]}
    else
        NWIPE_METHOD=""
        NWIPE_VERIFY=""
        NWIPE_OPTIONS=""
    fi

    # Affiche information fichier de log
    echo ""
    echo -e "${message_info_log_avant}"
    echo -e "\"${GREEN}${ERASE_LOG}${NC}\" ${message_info_log_apres}"
    echo ""

    if [ -z ${AUTOMATIC_HALT_MAGNETIC_OFF} ] ; then

         
        echo -e -n "${NC}"

        if [ "$read_arret" = ${CODE_OK_MINUSCULE} ] || [ "$read_arret" =  ${CODE_OK_MAJUSCULE} ] ;  then
            AUTOMATIC_HALT_MAGNETIC_OFF=""
            echo ""
            echo -e  "${message_info_operation}"
        else
            AUTOMATIC_HALT_MAGNETIC_OFF="true"
        fi

    fi

    # Partie active du script
    # The active part of the script

    # Demande de confirmation de l'effacement
    echo ""
    

    echo -e -n "${NC}"

    if [ "$read_1" = ${CODE_OK_MINUSCULE} ] || [ "$read_1" = ${CODE_OK_MAJUSCULE} ] ; then

        
	
        echo -e -n "${NC}"

        if [ "$read_2" = ${CODE_OK_MINUSCULE} ] || [ "$read_2" =  ${CODE_OK_MAJUSCULE} ] ;  then

            if [ "$?" -eq 0 ]; then

                if [[ ${NWIPE_METHOD} != "" ]] ; then
                    sudo nwipe --method=${NWIPE_METHOD} --verify=${NWIPE_VERIFY} ${NWIPE_OPTIONS} --logfile=${ERASE_LOG} --autonuke /dev/${HARD_DRIVE}
                else
                    # Choix réalisé pour l'utilisateur dans l'interface de Nwipe
                    sudo nwipe --logfile=${ERASE_LOG} /dev/${HARD_DRIVE}
                fi

                if [ -z ${BEEP_OFF} ] ; then
                    echo -e -n "\a"
                fi

                if [ ! -z ${AUTOMATIC_HALT_MAGNETIC_OFF} ] ; then

                    shutdown -c

                    analyse_disque ${ERASE_LOG}

                    echo ""
               
		
                    echo -e -n "${NC}"

                    if [ "$mode_clonage" = "s" ] || [ "$mode_clonage" = "S" ] ; then
                        /home/partimag/clone.sh
                    elif [ "$mode_clonage" = "a" ] || [ "$mode_clonage" = "A" ] ; then
                        /home/partimag/clone.sh -a
                    else
                        shutdown --poweroff now
                    fi

                else
                    shutdown --poweroff now
                fi

                exit 0

            fi
        fi
    fi

    echo -e "${RED}${message_stop_effacement}${NC}"
    echo -e -n "\a"

else # Effacement pour un disque dur SSD

    # Disque SSD non NVMe
    if [ "${HARD_DRIVE_NVME}" == "" ] ; then

        # Test si le disque n'est pas gelé
        frozen=$(sudo hdparm -I /dev/${HARD_DRIVE} | grep --perl-regex "not\tfrozen")

    else

        # Pour un disque SSD NVMe forcage du frozen par défaut car impossible de savoir si le disque SSD NVMe est frozen ou pas
        frozen=""

    fi

    # SSD not frozen ####################################################
    if [ "${frozen}" != "" ] ; then

        # Affiche information fichier de log
        echo ""
        if [ -z ${AUTOMATIC_HALT_SSD_OFF} ] ; then
            echo -e    "${message_info_operation}"
        fi
        echo -e "${message_info_log_avant}"
        echo -e "\"${GREEN}${ERASE_LOG}${NC}\" ${message_info_log_apres}"
        echo ""

        # Demande de confirmation de l'effacement
        echo ""
      
	
        echo -e -n "${NC}"

        if [ "$read_1" = ${CODE_OK_MINUSCULE} ] || [ "$read_1" = ${CODE_OK_MAJUSCULE} ] ; then

           
	
            echo -e -n "${NC}"

            if [ "$read_2" = ${CODE_OK_MINUSCULE} ] || [ "$read_2" =  ${CODE_OK_MAJUSCULE} ] ;  then

                if [ "$?" -eq 0 ]; then

                    # Création du fichier de log
                    echo "# Initial state before erasing ########################################################################" > ${ERASE_LOG} >/dev/null
                    sudo hdparm -I /dev/${HARD_DRIVE} | sudo tee -a ${ERASE_LOG} >/dev/null

                    # Utilisation d'un mot de passe pour pouvoir effacer le disque dur
                    sudo hdparm --user-master u --security-set-pass avenir /dev/${HARD_DRIVE}

                    # Test du support du mode Enhanced
                    test_mode_enhanced=$(sudo hdparm -I /dev/${HARD_DRIVE} | grep "supported: enhanced erase")
                    if [ "${test_mode_enhanced}" != "" ] ; then
                        ENHANCED_SECURITY_ERASE="-enhanced"
                        echo "# Erasing mode enhanced ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                        echo ""
                        echo -e "${GREEN}${message_start_effacement_avance}${NC}"
                    else
                        echo "# Erasing mode simple   ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                        echo ""
                        echo -e "${GREEN}${message_start_effacement}${NC}"
                    fi

                    # Effacement du disque dur avec affichage du temps de l'opération
                    time sudo hdparm --user-master u --security-erase${ENHANCED_SECURITY_ERASE} avenir /dev/${HARD_DRIVE}

                    # Création du fichier de log
                    echo "# Actual state after erasing ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                    sudo hdparm -I /dev/${HARD_DRIVE} | sudo tee -a ${ERASE_LOG} >/dev/null

                    echo ""

                    # Test si le disque SSD ne contient pas données
                    # test_disk_ssd=$(sudo dd if=/dev/${HARD_DRIVE} bs=1M count=5 2> /dev/null)
                    read -r test_disk_ssd < <(sudo dd if=/dev/${HARD_DRIVE} bs=1M count=5 2> /dev/null)

                    echo ""

                    if [ "${test_disk_ssd}" == "" ] ; then
                        echo -e "${GREEN}${message_effacement_ssd_ok}${NC}"
                        echo "# Disk SSD erased ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                        echo "test_disk_ssd=${test_disk_ssd}" | sudo tee -a ${ERASE_LOG} >/dev/null
                    else
                        echo -e "${RED}${message_effacement_ssd_ko}${NC}"
                        echo "# Disk SSD not erased !!! ################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                        echo "test_disk_ssd=${test_disk_ssd}" | sudo tee -a ${ERASE_LOG} >/dev/null
                    fi

                    analyse_disque ${ERASE_LOG}

                    if [ -z ${BEEP_OFF} ] ; then
                        echo -e -n "\a"
                    fi

                    if [ ! -z ${AUTOMATIC_HALT_SSD_OFF} ] ; then
                        echo ""
                         			
                        echo -e -n "${NC}"

                        if [ "$mode_clonage" = "s" ] || [ "$mode_clonage" = "S" ] ; then
                            /home/partimag/clone.sh
                        elif [ "$mode_clonage" = "a" ] || [ "$mode_clonage" = "A" ] ; then
                            /home/partimag/clone.sh -a
                        else
                            shutdown --poweroff now
                        fi

                    else
                        shutdown --poweroff now
                    fi

                    exit 0

                fi
            fi
        fi

        echo "# Script aborted by user ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
        echo -e "${RED}${message_stop_effacement}${NC}"
        echo -e -n "\a"

        echo ""
        echo -e "${ORANGE}${message_pause_script}${NC}"
        read pause

    else
    # SSD frozen ####################################################

        # Création du fichier de log
        echo "# Frozen disk ########################################################################" > ${ERASE_LOG}

        # Disque SSD non NVMe
        if [ "${HARD_DRIVE_NVME}" == "" ] ; then
            sudo hdparm -I /dev/${HARD_DRIVE} | sudo tee -a ${ERASE_LOG} >/dev/null
        else
            echo "" | sudo tee -a ${ERASE_LOG} >/dev/null
            sudo nvme list | sudo tee -a ${ERASE_LOG} >/dev/null
            echo "" | sudo tee -a ${ERASE_LOG} >/dev/null
            sudo nvme id-ctrl -H ${HARD_DRIVE_NVME} | sudo tee -a ${ERASE_LOG} >/dev/null
            echo "" | sudo tee -a ${ERASE_LOG} >/dev/null
        fi

        echo -e "${RED}${message_disque_gele}${NC}"
        echo ""
        echo -e "${ORANGE}${message_mise_veille}${NC}"
        echo -e -n "\a"
        read pause

        # Mise en veille de l'ordinateur pour tenter de débloquer le disque SSD
        echo -n mem | sudo tee /sys/power/state >/dev/null

        # Disque SSD non NVMe
        if [ "${HARD_DRIVE_NVME}" == "" ] ; then

            # Test si le disque n'est pas gelé
            frozen=$(sudo hdparm -I /dev/${HARD_DRIVE} | grep --perl-regex "not\tfrozen")

        else

            # Pour un disque SSD NVMe forcage de not frozen par défaut car impossible de savoir si le disque SSD NVMe est frozen ou pas
            frozen="not frozen"

        fi

        # SSD not frozen  ###############################
        if [ "${frozen}" != "" ] ; then

            # Affiche information fichier de log
            echo ""
            if [ -z ${AUTOMATIC_HALT_SSD_OFF} ] ; then
                echo -e    "${message_info_operation}"
            fi
            echo -e "${message_info_log_avant}"
            echo -e "\"${GREEN}${ERASE_LOG}${NC}\" ${message_info_log_apres}"
            echo ""

            # Demande de confirmation de l'effacement
            echo ""
            
		


            echo -e -n "${NC}"

            if [ "$read_1" = ${CODE_OK_MINUSCULE} ] || [ "$read_1" = ${CODE_OK_MAJUSCULE} ] ; then

               
		
                echo -e -n "${NC}"

                if [ "$read_2" = ${CODE_OK_MINUSCULE} ] || [ "$read_2" =  ${CODE_OK_MAJUSCULE} ] ;  then

                    if [ "$?" -eq 0 ]; then

                        # Création du fichier de log
                        echo "# Disk restarted before erasing ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null

                        # Disque SSD non NVMe
                        if [ "${HARD_DRIVE_NVME}" == "" ] ; then

                            sudo hdparm -I /dev/${HARD_DRIVE} | sudo tee -a ${ERASE_LOG} >/dev/null

                            # Utilisation d'un mot de passe pour pouvoir effacer le disque dur
                            sudo hdparm --user-master u --security-set-pass avenir /dev/${HARD_DRIVE}

                            # Test du support du mode Enhanced
                            test_mode_enhanced=$(sudo hdparm -I /dev/${HARD_DRIVE} | grep "supported: enhanced erase")

                        else

                            # Test support formatage NVMe sécurisé
                            test_mode_enhanced=$(sudo nvme id-ctrl -H ${HARD_DRIVE_NVME} | grep "Crypto Erase Support")

                        fi

                        if [ "${test_mode_enhanced}" != "" ] ; then
                            ENHANCED_SECURITY_ERASE="-enhanced"
                            echo "# Erasing mode enhanced ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo ""
                            echo -e "${GREEN}${message_start_effacement_avance}${NC}"
                        else
                            echo "# Erasing mode simple   ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo ""
                            echo -e "${GREEN}${message_start_effacement}${NC}"

                        fi

                        # Disque SSD non NVMe
                        if [ "${HARD_DRIVE_NVME}" == "" ] ; then

                            # Effacement du disque SSD avec affichage du temps de l'opération
                            time sudo hdparm --user-master u --security-erase${ENHANCED_SECURITY_ERASE} avenir /dev/${HARD_DRIVE}

                            # Création du fichier de log
                            echo "# Actual state after erasing ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            sudo hdparm -I /dev/${HARD_DRIVE} | sudo tee -a ${ERASE_LOG} >/dev/null

                        else

                            # Effacement du disque SSD NVMe avec affichage du temps de l'opération
                            if [ "${test_mode_enhanced}" == "" ] ; then
                                time sudo nvme format ${HARD_DRIVE_NVME}
                            else
                                time sudo nvme format ${HARD_DRIVE_NVME} --ses=1
                            fi

                            # Création du fichier de log
                            echo "# Actual state after erasing ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo "" | sudo tee -a ${ERASE_LOG} >/dev/null
                            sudo nvme list | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo "" | sudo tee -a ${ERASE_LOG} >/dev/null

                        fi

                        # Test si le disque SSD ne contient pas données
                        # test_disk_ssd=$(sudo dd if=/dev/${HARD_DRIVE} bs=1M count=5 2> /dev/null)
                        read -r test_disk_ssd < <(sudo dd if=/dev/${HARD_DRIVE} bs=1M count=5 2> /dev/null)

                        echo ""

                        if [ "${test_disk_ssd}" == "" ] ; then
                            echo -e "${GREEN}${message_effacement_ssd_ok}${NC}"
                            echo "# Disk SSD erased ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo "test_disk_ssd=${test_disk_ssd}" | sudo tee -a ${ERASE_LOG} >/dev/null
                        else
                            echo -e "${RED}${message_effacement_ssd_ko}${NC}"
                            echo "# Disk SSD not erased !!! ################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
                            echo "test_disk_ssd=${test_disk_ssd}" | sudo tee -a ${ERASE_LOG} >/dev/null
                        fi

                        analyse_disque ${ERASE_LOG}

                        if [ -z ${BEEP_OFF} ] ; then
                            echo -e -n "\a"
                        fi

                        if [ ! -z ${AUTOMATIC_HALT_SSD_OFF} ] ; then

                            echo ""
                          
                           
                            echo -e -n "${NC}"

                            if [ "$mode_clonage" = "s" ] || [ "$mode_clonage" = "S" ] ; then
                                /home/partimag/clone.sh
                            elif [ "$mode_clonage" = "a" ] || [ "$mode_clonage" = "A" ] ; then
                                /home/partimag/clone.sh -a
                            else
                                shutdown --poweroff now
                            fi

                        else
                            shutdown --poweroff now
                        fi

                        exit 0

                    fi
                fi
            fi

            echo "# Script aborted by user ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null
            echo -e "${RED}${message_stop_effacement}${NC}"
            echo -e -n "\a"

            echo ""
            echo -e "${ORANGE}${message_pause_script}${NC}"
            read pause

        else

            echo "# Disk restarted but frozen ########################################################################" | sudo tee -a ${ERASE_LOG} >/dev/null

            echo -e "${RED}${message_effacement_ssd_ko_frozen}${NC}"
            echo -e -n "\a"

            echo ""
            echo -e "${ORANGE}${message_info_disque_ssd}${NC}"
            echo -e "${ORANGE}${message_pause_continue_script}${NC}"
            read pause

            cat ${ERASE_LOG} | more -d

            echo ""
            echo -e "${ORANGE}${message_pause_script}${NC}"
            read pause
        fi
    fi
fi

Remplacer ventoy_reemploi_isolinux.cfg dans le dossier ventoy de la partition ventoy

Code : Tout sélectionner

default vesamenu.c32
timeout 0
prompt 0

MENU COLOR SCREEN      0  #80ffffff #00000000 std
MENU MARGIN 5
 MENU BACKGROUND ocswp.png
# Set the color for unselected menu item and timout message
 MENU COLOR SEL 37;44 #E0FF0000 #00000000 none
 MENU COLOR UNSEL 37;44 #C0FFFFFF #00000000 none
 MENU COLOR HOTKEY 1;37;44 #E0FF0000 #00000000 none
 MENU COLOR HOTSEL 1;7;37;40 #FFFFFF00 #00000000 none
 MENU COLOR TITLE 37;44 #FFFF0000 #00000000 none
 MENU COLOR TIMEOUT_MSG 1;37;40 #c0000090 #00000000 none
 MENU COLOR TIMEOUT 7;32;40 #c0000090 #00000000 none
 MENU COLOR HELP 37;40 #c0FFFFFF #00000000 none

# MENU COLOR SEL 37;44 #E00000FF #00000000 none
# MENU COLOR UNSEL 37;44 #C0000000 #00000000 none
# MENU COLOR HOTKEY 1;37;44 #E0FF0000 #00000000 none
# MENU COLOR HOTSEL 1;7;37;40 #FFFF0000 #00000000 none
# MENU COLOR TITLE 37;44 #FF0000FF #00000000 none
# MENU COLOR TIMEOUT_MSG 1;37;40 #c0000090 #00000000 none
# MENU COLOR TIMEOUT 7;32;40 #c0000090 #00000000 none
# MENU COLOR HELP 37;40 #c0000090 #00000000 none

# Allow client to edit the parameters
ALLOWOPTIONS 1

# simple menu title
MENU TITLE Emmabuntus refurbishing key for cloning


label effacement_DD
  MENU DEFAULT
  MENU LABEL ^BETA Effacement securise, verification de donnees ET installation automatique
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/erase_clone.sh" ocs_live_extra_param="" ocs_live_batch="no"
  TEXT HELP
  * L'effacement securise du disque, la verification de l'abscence de donnees restantes
  *                   et installation sont entierement automatique
  *ATTENTION Aucune question ne sera posee apres le degel de l'eventuel SSD
  ENDTEXT

label Clonezilla live  
  MENU LABEL Clonezilla live en VGA 800x600
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Clonezilla en mode classique est utile si vous voulez realiser
    votre propre clone
  * Clonezilla in classic mode is useful if you want to make your own clone
  ENDTEXT

label reemploi_USB_semiautomatique
  MENU LABEL Installation ^Semi-automatique par clonage
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/clone.sh" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Le mode semi-automatique vous permet de selectionner un clone lors de
    l'execution du script
  * Remarque : il est pratique pour l'utilisation d'une seule cle de reemploi
    par utilisateur. Si vous voulez utiliser plusieurs cles par utilisateur
    nous vous conseillons le mode automatique pour le reemploi en masse
  ENDTEXT

label reemploi_USB_automatique
  MENU LABEL ^Installation automatique par clonage
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/clone.sh -a" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Le mode automatique a besoin du fichier clone.ini pour definir les clones
    a utiliser par defaut dans ce mode
  * Attention : il n'y a aucune confirmation lors du lancement de cette ligne
  ENDTEXT

label sauvegarde_clone_USB
  MENU LABEL Sauvegarde du clone sur la cle de reemploi
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/save_clone.sh" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Sauvegarde le disque selectionne vers la cle de reemploi
  * Le clone aura le nom date-img_clone
  ENDTEXT

label effacement_DD
  MENU LABEL ^Effacement securise du disque dur cible
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/erase.sh" ocs_live_extra_param="" ocs_live_batch="no"
  TEXT HELP
  * Effacement securise du disque selectionne grace Nwipe, HDparm ou NVMe-cli
  * L'utilisateur devra choisir le mode d'effacement adapte
  ENDTEXT

label boite_outils
  MENU LABEL ^Boite a outils de l'installateur
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount $(blkid | grep IMAGES | cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/toolbox.sh" ocs_live_extra_param="" ocs_live_batch="no"
  TEXT HELP
  * Ensemble d'outils permettant a l'installateur de tester differents
  * composants de l'ordinateur : memoire, disque, etc
  ENDTEXT


Remplacer le contenu de ventoy_reemploi_grub.cfg dans le dossier ventoy de la partition ventoy par ceci

Code : Tout sélectionner

#
set pref=/boot/grub
set default="0"

# Load graphics (only corresponding ones will be found)
# (U)EFI
insmod efi_gop
insmod efi_uga
# legacy BIOS
# insmod vbe

if loadfont $pref/unicode.pf2; then
  set gfxmode=auto
  insmod gfxterm
  terminal_output gfxterm
fi
set timeout="-1"
set hidden_timeout_quiet=false

insmod png
if background_image $pref/ocswp-grub2.png; then
  set color_normal=white/black
  set color_highlight=red/black
else
  set color_normal=cyan/blue
  set color_highlight=white/blue
fi

title-text: "Emmabuntüs refurbishing key for cloning"
title-color: "white"
title-font: "DejaVu Sans Bold 14"
terminal-font:  "Unifont Regular 16"

# Decide if the commands: linux/initrd (default) or linuxefi/initrdefi
set linux_cmd=linux
set initrd_cmd=initrd
export linux_cmd initrd_cmd
if [ "${grub_platform}" = "efi" -a -e "/amd64-release.txt" ]; then
  # Only amd64 release we switch to linuxefi/initrdefi since it works better with security boot (shim)
  set linux_cmd=linuxefi
  set initrd_cmd=initrdefi
fi

insmod play
#play 960 440 1 0 4 440 1

# Since no network setting in the squashfs image, therefore if ip=, the network is disabled.


menuentry "[BETA]Effacement des donnees+installation auto " {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/erase_clone.sh" ocs_live_extra_param="" ocs_live_batch="no"
  $initrd_cmd /live/initrd.img
}

menuentry "Clonezilla live en VGA 800x600" --id live-default {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  $initrd_cmd /live/initrd.img
}

menuentry --hotkey=s "Installation Semi-automatique par clonage (Raccourci=S)" {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet splash noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/clone.sh" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  $initrd_cmd /live/initrd.img
}

menuentry --hotkey=i "Installation automatique par clonage (Raccourci=I)" {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet splash noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/clone.sh -a" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  $initrd_cmd /live/initrd.img
}

menuentry "[BETA]Effacement+install auto " {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/erase_clone.sh" ocs_live_extra_param="" ocs_live_batch="no"
  $initrd_cmd /live/initrd.img
}

menuentry "Effacement sécurisé du disque dur cible " {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/erase.sh" ocs_live_extra_param="" ocs_live_batch="no"
  $initrd_cmd /live/initrd.img
}
menuentry "Sauvegarde du clone sur la clé de réemploi" {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet splash noswap edd=on nomodeset enforcing=0 locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/save_clone.sh" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  $initrd_cmd /live/initrd.img
}

menuentry --hotkey=b "Boîte à outils de l’installateur (Raccourci=B)" {
  search --set -f /live/vmlinuz
  $linux_cmd /live/vmlinuz boot=live username=user config components quiet locales=fr_FR.UTF-8 keyboard-layouts=fr ocs_prerun=\"mount \$(blkid \| grep IMAGES \| cut -d : -f1) /home/partimag/\"  ocs_live_run="/home/partimag/toolbox.sh" ocs_live_extra_param="" ocs_live_batch="no"
  $initrd_cmd /live/initrd.img
}


menuentry "Information sur la clé de réemploi d’Emmabuntüs" {
  echo
  echo Clé USB de réemploi par Emmabuntüs (https://emmabuntus.org)
  echo Les sources sont disponibles sur http://usb-reemploi.emmabuntus.org
  echo
  echo Mode d’utilisation :
  echo \* Le mode Effacement des donnees+installation auto procède à l'effacement des données, 
  echo \ \ la vérification de l'absence de données et à l'installation.
  echo \ \ ATTENTION aucune question n'est posée après le dégel dans le cas du SSD
  echo
  echo \* Clonezilla live vous permet d’utiliser Clonezilla en mode classique, afin que vous puissiez réaliser votre propre clone
  echo
  echo \* Le mode semi-automatique vous permet de sélectionner un clone lors de l’exécution du script
  echo \ \ Remarque : il est pratique pour l’utilisation d’une seule clé de réemploi par utilisateur.
  echo \ \ Si vous voulez utiliser plusieurs clés par utilisateur nous vous conseillons le mode automatique pour le réemploi en masse
  echo
  echo \* Le mode automatique a besoin du fichier clone.ini pour définir les clones utilisés par défaut.
  echo \ \ Attention : il n’y a aucune confirmation lors du lancement de cette ligne
  echo
  echo \* Le mode sauvegarde vous permet de copier en automatique le contenu du disque dur de référence sur la clé de réemploi
  echo \ \ Remarque : dans le fichier save_clone.sh vous pouvez personnaliser certaines options pour la copie, voir l’entête.
  echo \ \ Le clone se nommera DATE-img_clone_UEFI ou DATE-img_clone_UEFI_SB en fonction si l’ordinateur est en mode
  echo \ \ UEFI ou UEFI avec Secureboot
  echo
  echo \* Le mode d’effacement vous permet d’effacer de façon sûre le disque dur cible
  echo \ \ Remarque : L’utilisateur devra choisir le mode d’effacement adapté à son niveau de protection des données
  echo \ \ En fonction des modes choisis l’effacement des données sera plus ou moins long
  echo
  echo \* La boîte à outils est un ensemble d’outils permettant à l’installateur de tester
  echo \ \ différents composants de l’ordinateur : mémoire, disque, etc
  echo
  echo Des touches de raccourcis sont disponibles :
  echo \ S : Lancement du clonage en mode semi-automatique en français
  echo \ I : Lancement du clonage en mode automatique en français
  echo \ K : Lancement du clonage en mode semi-automatique en anglais
  echo \ R : Lancement du clonage en mode automatique en anglais
  echo
  echo Appuyez sur la touche \"Échappement\" pour revenir au menu précédant
  echo
  sleep --verbose --interruptible 30
}

menuentry "Information about the Emmabuntüs refurbishing key "{
  echo
  echo USB stick for refurbishing by Emmabuntüs (https://emmabuntus.org)
  echo Sources are available at http://usb-reemploi.emmabuntus.org
  echo
  echo How to use it:
  echo \* Clonezilla live allows you to use Clonezilla in classic mode, so that you can make your own clone
  echo
  echo \* Semi-automatic mode allows you to select a clone when running the script
  echo \ \ Note: It is convenient when using only one refurbishing key per user.
  echo \ \ If you want to use several keys per user, we recommend you use the automatic mode which is tailored for mass refurbishing.
  echo
  echo \* Automatic mode needs the clone.ini file to define the clones to be used by the default.
  echo \ \ Warning: there is no confirmation when launching this line
  echo
  echo \* The save mode allows you to automatically copy the contents of the reference hard disk to the refurbishing key
  echo \ \ Note: in the save_clone.sh file you can customize some options for the copy, see the header.
  echo \ \ The clone will be named DATE-img_clone_UEFI or DATE-img_clone_UEFI_SB depending on whether the computer is in UEFI or UEFI with Secureboot mode
  echo
  echo \* Erase mode allows you to securely erase the target hard drive
  echo \ \ Note: the user must choose the erasing mode adapted to his level of data protection
  echo \ \ Depending on the modes chosen, the erasing of data will take longer or shorter
  echo
  echo \* Tool box is a set of tools allowing the installer to test various computer components: RAM, disk, etc
  echo
  echo Shortcut keys are available:
  echo \ S : Launch the cloning in semi-automatic mode, in French language
  echo \ I : Launch the cloning in automatic mode, in French language
  echo \ K : Launch the cloning in semi-automatic mode, in English language
  echo \ R : Launch the cloning in automatic mode, in English language
  echo
  echo Press the \"Escape\" key to return to the previous menu
  echo
  sleep --verbose --interruptible 30
}

Dernière modification par wardidi le 29 avr. 2025 18:28, modifié 1 fois.
Avatar de l’utilisateur
Otyugh
Messages : 82
Inscription : 28 déc. 2024 18:35
Contact :

Re: clé réemploi automatisée

Message par Otyugh »

Difficile d'en dire beaucoup vu que je vois pas les modifs que tu as apportées, et le script est un peu long (c'est pour ça que c'est pratique, git :mrgreen: )
Avatar de l’utilisateur
lann
Site Admin
Messages : 78
Inscription : 28 déc. 2024 11:51
Localisation : Queven
Contact :

Re: clé réemploi automatisée

Message par lann »

Oui je suis d'accord avec toi, git est bien pratique.
Mais par défaut, diff devrait faire l'affaire.

Si Wardidi arrive à faire quelque chose de bien avec notre aide éventuellement, il faudrait qu'on arrive à contacter le collectif Emmabuntus pour leur proposer les modifications.
Le code est là : https://sourceforge.net/projects/emmabu ... g_Scripts/
Mais c'est source forge et il me semble que c'est moins facile que git pour le suivi des demandes de modifications. De mémoire ca doit utiliser svn (Subversion).
Avatar de l’utilisateur
Otyugh
Messages : 82
Inscription : 28 déc. 2024 18:35
Contact :

Re: clé réemploi automatisée

Message par Otyugh »

Mrhm. Je verrai s'il me reste le courage de jouer avec ça après mon cours de compta :mrgreen: (j'en doute mais !)
En vrai y a rien de très compliqué, faut juste trouver les bones réglages pour que ça passe : j'ai regardé cinq minute hier soir sur les différence erase/clone dans grub, et y a vraiment pas grand chose (genre 3 paramètres obscures que je me demande si y en a vraiment besoin : on verra en essayant), je me demande si c'est vraiment bloquant, faudrait faire des tests 8-) (et si ça passe pas y a toujours moyen de contourner comme on en avait parlé avec un reboot)

Je pense qu'on peut juste cloner leur projet dans git et leur montrer un truc fini où on voit les modifs - que des patchs bricolo, c'est un peu la philosophie du libre : si ça leur plaît pas, on a notre fork quand même et donc pas d'enjeu ni de perte de temps potentielle à "travailler pour rien" de ce côté. ^^'
wardidi
Messages : 30
Inscription : 06 avr. 2025 18:14

Re: clé réemploi automatisée

Message par wardidi »

Pour les modifications
Je n'ai rien supprimé.

J'ai juste commenté et ajouté BETA (pour les repérer facilement) aux lignes que je voulais "desactiver". Ce sont les lignes qui posent les questions avec echo et read.Ex J'obtiens ### BETA echo machinchose.
####BETA read variable
Les lignes ajoutées sont pour fixer les variables
Pour les lignes ajoutées j'ai par ex variablemachinchose=truc ####BETA.

Si vous faites une recherche avec BETA vous aurez toutes les modifications.

Je ne connaît git que de nom. Sans jamais l'avoir utilisé.

Comme erase.sh lance lui même clone.sh il n'y a rien à changer dans grub. Je n'ai fait que copier l'entrée erase.sh et modiéfier le nom et l'envoi vers vers le nouveau script erase_clone.sh. les arguments sont exactement les même pour erase.sh et erase_clone.sh.

Pas certains d'être claire.

Je teste avec hdd ce soir ou mardi.
D'accord avec lann, il faudrait proposer à emmabuntu une fois fait. On peut toucher Patrick via df
Les scripts me semblent vraiment simples. Je ne sais coder mais j'ai pourtant compris la logique. Donc je pense que vous n'aurez pas de mal.

Au besoin vous avez mon tel
wardidi
Messages : 30
Inscription : 06 avr. 2025 18:14

Re: clé réemploi automatisée

Message par wardidi »

Salut,

J'ai pris le parti de juste supprimer les questions et fixer les variables.
L'écrasement sécurisé, la vérification des données et l'installation proposant plusieurs modes cela rend facile la modification de ses choix pour convenir à tous. ( Et c'était simple pour moi qui ne code pas) Pour tout automatisé, les variables correspondantes doivent être fixées selon les besoin aux lignes 124-126-128 de erase_clone.sh. (Ce message est rappeler au début du script)
Ma configuration procède à:
-Effacement des HDD par ecriture de zéro par nwipe (possible dodshot ou dod522022m), hdparm pour ssd, nvme-nvme-cli pour nvme)
-L'analyse de recherche de données simple par TestDisk(possible anlalyse,list ou analyse,search)
-L'installation automatique (pour rappel clone.ini doit être configuré)

Les log sont inscrit dans la part IMAGES dans Erase_log

Testé et fonctionnel pour SSD et HDD chacun en legacy et UEFI. Pas de NVME sous la main.
J'avoue ne pas comprendre les différents modes de TestDisk et pourquoi les SSD gèlent en UEFI et pas en legacy.

Je vais mettre les scripts en vérification également sur DF (je suis serein ;) ) pour éventuellement touché patrick d'emmabuntu

J'ai mis à jour mon premier post avec les nouveaux scripts.

La procédure prend 10 s à l'utilisateur et sur le tiny ça dure moins de 5 mn pour l'ensemble, redimentionnement de /home compris. Avec une version OEM c'est la PERFECTITUDE :lol:
Avatar de l’utilisateur
Otyugh
Messages : 82
Inscription : 28 déc. 2024 18:35
Contact :

Re: clé réemploi automatisée

Message par Otyugh »

Cool si ça marche, bien ouej de pas avoir attendu que quelqu'un d'autre le fasse pour toi, c'est ça l'esprit ! :mrgreen:
wardidi
Messages : 30
Inscription : 06 avr. 2025 18:14

Re: clé réemploi automatisée

Message par wardidi »

Merci à toi Otyugh. Tu ne t'en rends probablement pas compte derrière ton écran mais tu fais parti de ceux qui m'ont beaucoup appris. Et sans df.iso pas certains que j'aurais persévérer après mes déboires ubuntuesque. Donc si je peux rendre un peu....
J'ai posté sur DF ICI
Avatar de l’utilisateur
Otyugh
Messages : 82
Inscription : 28 déc. 2024 18:35
Contact :

Re: clé réemploi automatisée

Message par Otyugh »

Possible que t'aies besoin d'une formation git si tu veux qu'ils puissent reprendre ton code à terme cela dit ! (reprendre du code d'inconnu sur internet, ça oblige a touuuut relire, vu qu'ils ont presque tout codé, je doute qu'ils vont se plier à l'exercice)

(En vrai c'est vraiment moins dur que ça en a l'air, le plus dur est d'ouvrir un compte et de faire son premier commit !)

Mais quoiqu'il en soit je pense que c'est l'idée, le besoin (on pourrait demander à OGO assez sûr que ça correspond à leurs besoins) et le côté "preuve que ça peut marcher" !
tu fais parti de ceux qui m'ont beaucoup appris.
Yay :)
wardidi
Messages : 30
Inscription : 06 avr. 2025 18:14

Re: clé réemploi automatisée

Message par wardidi »

Je vais faire une version encore plus simplifié pour les "reconditionneurs" non initiés, à savoir:
1/suppression de la page grub alternatifs en modifiant json
doc ubuntu a écrit :Vous avez la possibilité d'empêcher l'affichage de cette grille en ajoutant cette option { "VTOY_SECONDARY_BOOT_MENU": "0" } dans la section control du fichier ventoy/ventoy.json.
2/configurer grub pour démarrage auto(3s devrait suffire)

Donc on aurait une session effacement/install en 1 clic sur l'iso clonezillo(voir à la renommer pour expliciter). Enfin 2 clic dans le cas du ssd gelé.

J'y vois un risque d'effacement souhaitée.
(on pourrait demander à OGO assez sûr que ça correspond à leurs besoins) et le côté "preuve que ça peut marcher" !
Je vais proposer cette version simplifiée à vannes semaine prochaine. Je verrais si ca correspond au besoin. Ça donnera une piste pour OGO.

Si tu rencontres OGO tu peux leur en parler et donner mes contacts.
Répondre