[Script] Auto Install Basic

Questions et astuces concernant l'installation et la configuration d'archlinux
Troispoils
newbie
Messages : 3
Inscription : dim. 12 mars 2017, 18:26

[Script] Auto Install Basic

Message par Troispoils »

Bonjour à tous.

J'ai fait un petit script pour installer automatiquement Arch.
Le lien: https://github.com/Troispoils/ArchInstallSH

J'aurais voulu avoir des avis et un moyen pour améliorer ma fonction "format".
L'utilisation est très simple: bash install.sh nom_machine taille_swap dossier_/ password

Merci à tous.
Troispoils.
sukolyn
archer
Messages : 116
Inscription : mar. 11 juil. 2017, 09:56

Re: [Script] Auto Install Basic

Message par sukolyn »

salut,

mettre function et () est un pléonasme.

< n'est pas un opérateur de comparaison arithmétique mais lexical, et a besoin d'être protégé.
Tu n'as donc pas testé ton script, sinon tu t'en serais rendu compte.
Troispoils
newbie
Messages : 3
Inscription : dim. 12 mars 2017, 18:26

Re: [Script] Auto Install Basic

Message par Troispoils »

sukolyn a écrit : mar. 06 févr. 2018, 19:14 salut,

mettre function et () est un pléonasme.

< n'est pas un opérateur de comparaison arithmétique mais lexical, et a besoin d'être protégé.
Tu n'as donc pas testé ton script, sinon tu t'en serais rendu compte.
Ha oui merci, il est vrai que je n'ai même pas pensé à essayer les comparaisons. Je vais corriger çà.
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [Script] Auto Install Basic

Message par Xorg »

Je ne comprends pas vraiment ton objectif à travers ce script. Est-ce pour un usage uniquement personnel ou bien ton but c'est de le redistribuer ?
À première vue, ton script est très spécifique, donc je penche pour la première réponse. Un /boot séparé et en Ext2 en 2018, quel intérêt ?

Pour ta fonction format(), c'est assez laid avec fdisk, je t'avoue que je ne sais pas du tout ce que tu cherches à faire et il est très vite aisé d'introduire des erreurs avec ce genre de choses (il suffit d'un caractère manquant ou en trop pour que ça parte en cacahuète et que ça finisse en grand n'importe quoi).
Je te conseille plutôt un autre utilitaire comme parted, car il accepte des arguments, et ça deviendra beaucoup plus lisible. Exemple : parted /dev/sda mkpart part-type [fs-type] start end

Code : Tout sélectionner

debut=1

format() {
	type=$1
	taille=$2
	fin=$((debut+taille))

	parted /dev/sda mkpart primary $type ${debut}MiB ${fin}MiB
	debut=$fin
}

# Exemples d'utilisation
format ext2 150
format ext4 30000
Diverses petits choses, notamment : echo "Server = http://archlinux.mirror.pkern.at/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist. Et si archlinux.mirror.pkern.at est down, tu fais comment ?
Tu peux utiliser reflector par exemple pour trier les miroirs.
Sinon, je n'ai rien contre ta commande, mais tu te compliques la vie à échapper des caractères quand il y a plus simple, comme echo 'Server = http://archlinux.mirror.pkern.at/$repo/os/$arch'... :mrgreen:

Ensuite, là-dessus :

Code : Tout sélectionner

	passwd
$MDPROOT
$MDPROOT
Je ne suis pas certain de la réussite : tu vas exécuter la commande passwd, mais le MDP ne va pas être redirigé dedans. Limite, tu as meilleur compte à ne pas définir de mot de passe durant l'installation (si tu ne veux pas qu'il soit en clair), et à le définir toi-même après le premier boot, à voir. C'est possible avec passwd -d utilisateur.

Tu appelles deux fois la commande pacstrap alors qu'il est possible de l'appeler qu'une seule fois. Pourquoi ?

Et enfin... echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen. «Pourquoi, Monsieur Anderson ?» Tu n'es pas obligé de faire ça dans le chroot, un echo "fr_FR.UTF-8 UTF-8" >> /mnt/etc/locale.gen en dehors du chroot fonctionne tout aussi bien.

Pour être honnête avec toi, ça se voit que tu essentiellement fait des copiers-collers depuis le wiki. Dans ce genre de script, n'hésite pas à faire les choses un peu autrement, du moment que tu respectes un certain ordre, c'est bon. :wink:
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Troispoils
newbie
Messages : 3
Inscription : dim. 12 mars 2017, 18:26

Re: [Script] Auto Install Basic

Message par Troispoils »

Bonsoir Xorg,

Merci pour ta réponse complète.
Je confirme que c'est pour le moment un usage uniquement personnel et un moyen d’apprendre le "shell".
Je suis aussi novice sur Linux voila pour quoi j'ai copié pas mal de ligne du guide d'installation.

Pour ext2, je me suis fier au wiki, je croyais que c’était obligatoire.
Pour le "mirrorlist" j'ai eu quelques problèmes de débit alors j'ai fait un choix draconien, j'avoue ne pas avoir pensé qu'il pourrait être down. xD
Je vais me pencher sur "reflector", merci.
Pour le password, je ne savais pas que l'on pouvait le rentrer après l'installation.

Je ne sais pas pour quoi j'ai mis deux fois "pacstrap", et je ne comprends pas très bien l'intérêt du "Chroot".

Merci pour la solution avec "parted", je trouvais aussi mon code instable pour le partitionnement (il plantait souvent).

Cordialement Troispoils
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Script] Auto Install Basic

Message par FoolEcho »

Salut,
Troispoils a écrit : mer. 07 févr. 2018, 22:28 Je confirme que c'est pour le moment un usage uniquement personnel et un moyen d’apprendre le "shell".
Je suis aussi novice sur Linux voila pour quoi j'ai copié pas mal de ligne du guide d'installation.
Tu n'apprendras pas grand-chose du shell par ce biais. Je m'explique: via la procédure d'installation d'Arch, tu vas te contenter d'enchaîner des commandes plus ou moins comprises dans ton script. Rien de sensationnel là-dedans... en dehors des risques que ça apporte puisque c'est dur à vraiment tester (tout au plus tu auras vu comment créer un script shell avec shebang, le rendre exécutable, etc. ; donc pas besoin de faire quelque d'aussi complexe qu'un installateur... d'autant que si tu veux en faire un vrai installateur, pour le coup, ça peut devenir très/trop complexe pour se lancer). :?

En shell (comme dans tout langage je dirais), si tu veux apprendre, passe par de petites choses simples: comment gèrer les options que je veux passer à un script pour adapter son comportement et ainsi le paramétrer (getopts/case-shift sur les arguments le plus souvent), comment maintenir un code clair (là-dessus je prends ta fonction de formatage à témoin: appeler fdisk en interactif c'est casse-gueule, tu saurais me dire comment ça pourquoi). Comment faire des boucles, des fonctions, rediriger dans des fichiers (temporaires ou pas), inclure des fonctions, gérer les erreurs (retour de commandes), etc..

Faut garder en tête que la puissance du shell réside dans le fait de savoir composer avec toutes ces petites briques. :ancetre2:

Après, tu peux avoir des idées de scripts qui t'amèneront à emboîter ces éléments, à en découvrir d'autres (les cas les plus c...: parcourir une arborescence en vue d'y faire des opérations: liste/copie/renommage de fichiers: beaucoup de choses existent déjà mais vu que chacun peut avoir son propre bazar, ça vaut justement le coup: une fois sorti de mon cas, mon script va-t-il coller aux autres ? -- même s'il faut plutôt raisonner dans l'autre sens)... Ce sera plus formateur qu'un installateur (qui serait moins dangereux par exemple en mode "echo").
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [Script] Auto Install Basic

Message par Xorg »

Troispoils a écrit : mer. 07 févr. 2018, 22:28je ne comprends pas très bien l'intérêt du "Chroot".
chroot est la diminutif de change root. En gros, ça permet d'exécuter une commande à partir d'une autre racine.

chroot /mnt /bin/bash exécute la commande /bin/bash avec comme racine /mnt, autrement dit, dans ce contexte, tu lances un shell dans ta nouvelle installation. Donc dans le chroot, /mnt deviendra le /.
Dès que tu quittes l'environnement chroot, tu retombes dans le shell du Live. :)
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Répondre