#!/bin/bash # Triple Boot Debian 13 (Trixie) - Installation automatisee # A executer depuis une cle USB live Debian/Ubuntu set -e # === CONFIGURATION === # Detecter automatiquement le disque principal (exclut USB/removable) DISK="" for d in /dev/nvme0n1 /dev/sda /dev/sdb /dev/vda; do if [ -b "$d" ] && [ "$(cat /sys/block/$(basename $d)/removable 2>/dev/null)" = "0" ]; then DISK="$d" break fi done # Si pas detecte, permettre de le passer en argument [ -n "$1" ] && DISK="$1" [ -z "$DISK" ] && { echo "Aucun disque detecte. Usage: $0 /dev/sdX"; exit 1; } USER="jules" PASSWORD="jules" # A changer apres installation MIRROR="http://deb.debian.org/debian" SUITE="trixie" PARTITIONS=("photobooth" "photostation" "autre") PART_SIZES=("155G" "155G" "155G") SWAP_SIZE="8G" EFI_SIZE="512M" # === COULEURS === RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } error() { echo -e "${RED}[ERREUR]${NC} $1"; exit 1; } # === VERIFICATIONS === if [ "$EUID" -ne 0 ]; then error "Ce script doit etre execute en root (sudo)" fi if [ ! -b "$DISK" ]; then error "Disque $DISK non trouve. Verifier avec 'lsblk'" fi # Detecter le suffixe de partition (nvme = p1, sda = 1) if [[ "$DISK" == *"nvme"* ]]; then PART_PREFIX="${DISK}p" else PART_PREFIX="${DISK}" fi echo "" echo "==========================================" echo " TRIPLE BOOT DEBIAN 13 - TERRA" echo "==========================================" echo "" echo "Disque cible : $DISK" echo "Partitions : ${PARTITIONS[*]}" echo "" warn "TOUTES LES DONNEES SUR $DISK SERONT EFFACEES !" echo "" read -p "Continuer ? (oui/non) : " CONFIRM if [ "$CONFIRM" != "oui" ]; then echo "Annule." exit 0 fi # === INSTALLATION DES OUTILS === info "Installation des outils necessaires..." apt-get update -qq apt-get install -y -qq debootstrap parted dosfstools arch-install-scripts > /dev/null 2>&1 || { # arch-install-scripts fournit genfstab, sinon on s'en passe apt-get install -y -qq debootstrap parted dosfstools > /dev/null 2>&1 } # === PARTITIONNEMENT === info "Partitionnement de $DISK..." # Effacer la table de partition wipefs -a "$DISK" > /dev/null 2>&1 sgdisk --zap-all "$DISK" > /dev/null 2>&1 || true # Creer la table GPT et les partitions parted -s "$DISK" mklabel gpt parted -s "$DISK" mkpart "EFI" fat32 1MiB 513MiB parted -s "$DISK" set 1 esp on parted -s "$DISK" mkpart "photobooth" ext4 513MiB 159233MiB # ~155 Go parted -s "$DISK" mkpart "photostation" ext4 159233MiB 318465MiB # ~155 Go parted -s "$DISK" mkpart "autre" ext4 318465MiB 477697MiB # ~155 Go parted -s "$DISK" mkpart "swap" linux-swap 477697MiB 485889MiB # ~8 Go # Attendre que les partitions apparaissent sleep 2 partprobe "$DISK" sleep 2 # Formater info "Formatage des partitions..." mkfs.fat -F32 "${PART_PREFIX}1" mkfs.ext4 -q -L "photobooth" "${PART_PREFIX}2" mkfs.ext4 -q -L "photostation" "${PART_PREFIX}3" mkfs.ext4 -q -L "autre" "${PART_PREFIX}4" mkswap -L "swap" "${PART_PREFIX}5" # Recuperer les UUID UUID_EFI=$(blkid -s UUID -o value "${PART_PREFIX}1") UUID_1=$(blkid -s UUID -o value "${PART_PREFIX}2") UUID_2=$(blkid -s UUID -o value "${PART_PREFIX}3") UUID_3=$(blkid -s UUID -o value "${PART_PREFIX}4") UUID_SWAP=$(blkid -s UUID -o value "${PART_PREFIX}5") UUIDS=("$UUID_1" "$UUID_2" "$UUID_3") info "Partitionnement termine." lsblk "$DISK" # === INSTALLATION DES 3 SYSTEMES === install_system() { local INDEX=$1 local NAME="${PARTITIONS[$INDEX]}" local PART="${PART_PREFIX}$((INDEX + 2))" local UUID="${UUIDS[$INDEX]}" local MNT="/mnt/${NAME}" info "=== Installation de ${NAME} ($PART) ===" # Monter mkdir -p "$MNT" mount "$PART" "$MNT" mkdir -p "$MNT/boot/efi" mount "${PART_PREFIX}1" "$MNT/boot/efi" # Debootstrap info " debootstrap ${NAME}..." debootstrap --arch=amd64 "$SUITE" "$MNT" "$MIRROR" # fstab cat > "$MNT/etc/fstab" < "$MNT/etc/hostname" cat > "$MNT/etc/hosts" < "$MNT/etc/apt/sources.list" < "$MNT/tmp/setup.sh" < /etc/timezone ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime apt-get update -qq apt-get install -y -qq locales sed -i 's/# fr_FR.UTF-8/fr_FR.UTF-8/' /etc/locale.gen locale-gen update-locale LANG=fr_FR.UTF-8 # Installer le noyau, GRUB, firmware et outils de base apt-get install -y -qq \ linux-image-amd64 \ grub-efi-amd64 \ firmware-linux \ sudo \ network-manager \ openssh-server \ bash-completion \ console-setup \ keyboard-configuration # Creer l'utilisateur useradd -m -s /bin/bash -G sudo,video,input,audio $USER echo "$USER:$PASSWORD" | chpasswd echo "root:$PASSWORD" | chpasswd # Sudo sans mot de passe (optionnel, pratique pour le kiosk) echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER # Activer NetworkManager systemctl enable NetworkManager # Configurer le clavier FR cat > /etc/default/keyboard < "$MNT/etc/grub.d/40_custom" < "$MNT/etc/default/grub" <