Ces derniers jours je voulais créer mon script d'installation personnalisé que je pourrais ensuite ramener en déplacement pour installer Arch à l'aide de ce script chez une amie...
Donc voici le script en question (il est pour l'instant pauvre en option mais je compte le paufiner plus tard, c'était surtout pour savoir si tout roulait) que j'ai testé sous VMware & VBox :
Code : Tout sélectionner
#!/bin/bash
if [[ $1 = "-a" ]]; then
clear
echo "Déverouillage des langues française et anglaise en cours..."
sleep 2
sed -i '/en_US/ s/#en_US/en_US/g' /etc/locale.gen
sed -i '/fr_FR/ s/#fr_FR/fr_FR/g' /etc/locale.gen
locale-gen
clear
echo "Déverouillage terminé."
sleep 2
clear
echo "Activation de la langue française dans la console en cours..."
echo 'LANG=fr_FR.UTF-8' > /etc/locale.conf
export LANG=fr_FR.UTF-8
echo 'KEYMAP=fr' > /etc/vconsole.conf
echo 'FONT=lat9w-16' >> /etc/vconsole.conf
sleep 2
clear
echo "Utilisation du fuseau horaire pour Paris et mise à jour de l'horloge en cours..."
clear
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
systemctl enable ntpd.service
sleep 2
while [[ $QNOMHOTE != "o" ]]; do
while [[ -z $NOMHOTE ]]; do
clear
read -p "Veuillez choisir un nom d'hôte pour la machine : " NOMHOTE; done
clear
read -p "Etes-vous sûr de vouloir utiliser $NOMHOTE comme nom d'hôte ? [o|n] : " QNOMHOTE
if [[ $QNOMHOTE != "o" ]]; then
NOMHOTE=""
QNOMHOTE=""; else
clear
echo "Utilisation de $NOMHOTE en tant que nom d'hôte pour la machine en cours..."
sleep 2
echo $NOMHOTE > /etc/hostname && sed -i "/s/localhost/$NOMHOTE/g" /etc/hosts
clear
echo "Modification du nom d'hôte terminé."
sleep 2; fi; done
clear
echo "Initialisation du kernel en cours..."
sleep 2
clear
mkinitcpio -p linux
clear
echo "Initialisation du kernel terminé."
sleep 2
clear
echo "Modification du mot de passe administrateur. Veuillez suivre les instructions à l'écran : "
sleep 2
clear
passwd root
clear
echo "Modification du mot de passe terminé."
sleep 2
clear
read -p "Souhaitez-vous ajouter un utilisateur ? [o|n] : " AJOUTER_UTILISATEUR
if [[ $AJOUTER_UTILISATEUR = "o" ]]; then
while [[ $Q_AUTRE_UTILISATEUR != "n" ]]; do
while [[ $Q_NOM_UTILISATEUR != "o" ]]; do
while [[ -z $NOM_UTILISATEUR ]]; do
clear
read -p "Veuillez rentrer un nom court pour le nouvel utilisateur : " NOM_UTILISATEUR; done
clear
read -p "Etes vous sûr de vouloir utiliser $NOM_UTILISATEUR comme nom d'utilisateur ? [o|n] : " Q_NOM_UTILISATEUR
if [[ $Q_NOM_UTILISATEUR != "o" ]]; then
NOM_UTILISATEUR=""
Q_NOM_UTILISATEUR=""; else
clear
echo "Utilisation de $NOM_UTILISATEUR pour le nouvel utilisateur en cours..."
sleep 2
useradd -G wheel -s /bin/bash -m $NOM_UTILISATEUR && passwd $NOM_UTILISATEUR
clear
echo "Création de l'utilisateur terminé."
sleep 2; fi; done
clear
read -p "Souhaitez-vous ajouter d'autres utilisateurs ? [o|n] : " Q_AUTRE_UTILISATEUR
if [[ $Q_AUTRE_UTILISATEUR != "n" ]]; then
NOM_UTILISATEUR=""
Q_NOM_UTILISATEUR=""
Q_AUTRE_UTILISATEUR=""; else
clear
echo "Fin de l'ajout d'utilisateurs."
sleep 2; fi; done; else
clear
echo "Fin de l'ajout d'utilisateurs."
sleep 2; fi
clear
echo "Ajout du dépôt Archlinux.fr pour l'installatio de yaourt en cours..."
sleep 2
echo '[archlinuxfr]' >> /etc/pacman.conf
echo 'SigLevel = Never' >> /etc/pacman.conf
echo 'Server = http://repo.archlinux.fr/$arch' >> /etc/pacman.conf
clear
echo "Ajout du dépôt terminé."
sleep 2
clear
echo "Mise à jour des dépôts en cours..."
sleep 2
clear
pacman -Syu
clear
echo "Mise à jour des dépôts terminée."
sleep 2
clear
echo "Préparation et installation du fichier GRUB en cours..."
sleep 2
clear
sed -i '/GRUB_TIMEOUT/ s/5/0/' /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg
clear
grub-install --recheck /dev/sd$DISQUE
clear
echo "Installation du GRUB terminé."
sleep 2
clear
echo "Fermeture de l'environnement chroot en cours..."
sleep 2
exit; else
clear
echo "Bienvenue dans le script d'installation ArchX."
sleep 2
clear
echo "Vous allez être guidée pendant toute la durée de l'opération."
sleep 2
clear
echo "Transformation de la configuration clavier dans l'environnement archiso en cours..."
sleep 2
loadkeys fr
clear
echo "Transformation du clavier terminée."
sleep 2
clear
echo "Mise à jour de l'horloge système à l'aide du réseau en cours..."
sleep 2
timedatectl set-ntp true
clear
echo "Mise à jour de l'horloge terminée"
sleep 2
while [[ $QDISQUE != "o" ]]; do
while [[ -z $DISQUE ]]; do
clear
lsblk
read -p "Quelle disque souhaitez-vous utiliser pour l'installation ? : " DISQUE; done
clear
lsblk
read -p "Etes-vous sûr de vouloir formater /dev/sd$DISQUE (cette opération détruiera TOUTES données sur le disque /dev/sd$DISQUE et est irréversible) ? [o|n] : " QDISQUE
if [[ $QDISQUE != "o" ]]; then
DISQUE=""; else
clear
echo "Nettoyage du disque /dev/sd$DISQUE en cours..."
sleep 2
dd bs=1M count=1 if=/dev/zero of=/dev/sd$DISQUE
clear
echo "Nettoyage du disque /dev/sd$DISQUE terminé."
sleep 2
clear
echo "Démarrage de l'utilitaire de création des partitions pour le disque /dev/sd$DISQUE en cours..."
sleep 2
cfdisk /dev/sd$DISQUE; fi; done
while [[ $QAUTRE != "n" ]]; do
while [[ $QFORMAT != "o" ]]; do
while [[ $QPARTITION != "o" ]]; do
while [[ -z $PARTITION ]]; do
clear
lsblk
read -p "Quelle partition souhaitez-vous formater (numéro) ? : " PARTITION; done
clear
lsblk
read -p "Etes-vous sûr de vouloir formater la partition /dev/sd$DISQUE$PARTITION ? [o|n] : " QPARTITION
if [[ $QPARTITION != "o" ]]; then
PARTITION="";fi; done
while ! [[ $FORMAT = "ext4" || $FORMAT = "swap" || $FORMAT = "vfat" ]]; do
clear
lsblk
read -p "Choisissez un format de partitionnement [ext4|swap|vfat] : " FORMAT; done
clear
lsblk
read -p "Etes-vous sûr de vouloir utiliser ce format ? [o|n] : " QFORMAT
if [[ $QFORMAT != "o" ]]; then
FORMAT=""; else
if [[ $FORMAT = "ext4" ]]; then
clear
echo "Formatage de la partition /dev/sd$DISQUE$PARTITION au format $FORMAT en cours..."
sleep 2
mkfs.$FORMAT /dev/sd$DISQUE$PARTITION && mount /dev/sd$DISQUE$PARTITION /mnt
clear
echo "Formatage de la partition terminé."
sleep 2; else
if [[ $FORMAT = "swap" ]]; then
clear
echo "Formatage de la partittion /dev/sd$DISQUE$PARTITION au format $FORMAT en cours..."
sleep 2
mkswap /dev/sd$DISQUE$PARTITION && swapon /dev/sd$DISQUE$PARTITION
clear
echo "Formatage de la partition terminé."
sleep 2; else
clear
echo "Formatage de la partition /dev/sd$DISQUE$PARTITION au format $FORMAT en cours..."
sleep 2
mkfs.$FORMAT /dev/sd$DISQUE$PARTITION && mkdir -p /mnt/boot/efi && mount /dev/sd$DISQUE$PARTITION /mnt/boot/efi
clear
echo "Formatage de la partition terminé."
sleep 2; fi; fi; fi; done
clear
read -p "Avez-vous d'autres partitions à formater ? [o|n] : " QAUTRE
if [[ $QAUTRE != "n" ]]; then
QFORMAT=""
PARTITION=""
QPARTITION=""
FORMAT=""; else
clear
echo "Formatage des partitions terminée."
sleep 2; fi; done
clear
echo "Installation des paquets essentiels en cours..."
sleep 2
clear
pacstrap /mnt base base-devel grub ntp
clear
echo "Installation terminée"
sleep 2
clear
echo "Genération des fichiers systèmes en cours..."
sleep 2
genfstab -U -p /mnt >> /mnt/etc/fstab
clear
echo "Génération des fichiers terminée."
sleep 2
clear
echo "Passage à l'environnement chroot en cours..."
sleep 2
cp ArchX.sh /mnt/ && arch-chroot /mnt /bin/bash -c "./ArchX.sh -a"
clear
echo "Fermeture effectuée."
sleep 2
clear
echo "Démontage de la partition principale en cours..."
sleep 2
umount -R /mnt
clear
echo "Démontage de la partition terminée."
sleep 2
clear
echo "Redémarrage..."
reboot; fi