> Tous les forums > Forum Linux
 Tuto : installer ArchLinux en 10' chronoSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Esclapion
  Posté le 02/03/2012 @ 23:23 
Aller en bas de la page 
Grand Maître astucien

Bonjour en tous

J'ai passé pas mal de temps à écrire un script me permettant d'installer complètement ArchLinux en chroot, depuis une autre installation Linux, et je le mets à disposition en l'état. Il est amené à beaucoup se perfectionner, mais il marche parfaitement chez moi.

Utlisation :

Préparer deux partitions, éditer l'en-tête du script pour y mettre leur nom.

Lancer le script depuis le Linux hôte en tant que root (par sudo ou directement sous root). A la fin, entrer le mot de passe de root, le nom d'un utilisateur (obligatoire pour démarrer Gnome-Shell) et son mot de passe. Redémarrer, c'est prêt (ou ça devrait l'être).

Durée : 7'39 pour Gnome-Shell seul, 10' si on veut Cinnamon en plus.

Limitations connues :

- déconseillé aux débutants ;

- validé uniquement depuis ma LMDE (donc base Debian) ;

- pour l'instant, uniquement 64 bits. Il faut de toutes façons que les deux installations soient en 64 ou 32 bits ;

- / et /home. Il me sera facile de rajouter le swap, ou au contraire de tout installer sur / :

- français uniquement ;

- grub 2 seulement, installé sur le même disque que l'installation hôte ;

- actuellement, il n'y a que les bureaux Gnome-Shell et Cinnamon de préinstallés, mais ça évoluera. Pour les autres, ça n'installe que Xorg ;

- uniquement liaison directe pour l'instant. A voir pour le Wifi ;

- pilote Ati préinstallé, pas encore le Nvidia ;

- je n'ai mis ni gnome-extra, ni les polices Microsoft, mais ce serait très facile à rajouter si besoin.

Toute critiques, propositions d'amélioration sur le fond ou la forme, sont les bienvenues.



Modifié par Esclapion le 02/03/2012 23:56
Publicité
Esclapion
 Posté le 02/03/2012 à 23:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Contenu du script :

(s'il passe mal sur le forum, j'en ferai l'upload, ce n'est pas très gros)

#! /bin/bash
# Ecrit par : esclapion
# Version : 1.0
# Date : 2 Mars 2012

if [ `whoami` != root ]
then
echo Script à lancer en tant que root
exit 1
fi

# ***************************************************
# *
# Variables globales à paramétrer par l'utilisateur *
# *
# ***************************************************

export Mount=/mnt/arch
export Root=/dev/sda7
export Home=/dev/sda8
# Pas encore de swap suporté

# Architecture 64 bits, doit être la même que celle de la machine hôte.
# Pour l'instant, le 32 bits n'est pas supporté.
export Arch=x86_64

# Miroir utilisé pour l'installation
export Miroir=http://mir.archlinux.fr

# Nom de la machine cible. Par défaut, celui de la machine hôte.
export Host=`hostname`

# Emplacement du Grub, par défaut sur la machine hôte. Mettre à blanc pour éviter son installation
export Grub=`df / | grep '/$' | sed 's/[0-9][0-9]*.*//'`

# Bureau par défaut. Doit valoir GNOME ou CINNAMON, sinon, pas de bureau installé.
export Bureau=CINNAMON

# Fin paramètrage
# ---------------


mkfs.ext4 $Root
mkfs.ext4 $Home

mkdir -p $Mount
mount $Root $Mount
mkdir -p $Mount/home
mount $Home $Mount/home

echo -e '\n\E[37;44m'"\033[1m Debut de l'installation \033[0m\n"

cd $Mount
[ -e tmp ] || mkdir tmp
chmod 1777 tmp

# Téléchargement du chroot minimal
# --------------------------------
echo
cd tmp
echo -e '\E[37;44m'"\033[1m Téléchargement du chroot minimal... \033[0m"
Minichrooturl="$Miroir/~tuxce/chroot"
Minichrootarchive="archlinux.chroot.${Arch}.tgz"
if [ -e "${Minichrootarchive}" ]
then
echo "Archive trouvée dans $Mount/tmp"
else
if wget -q "${Minichrooturl}/${Minichrootarchive}";then
echo "$Minichrootarchive : téléchargée."
else
echo "Erreur lors du téléchargement de ${Minichrooturl}/${Minichrootarchive} !"
exit 1
fi
fi
cd ..

echo
echo -e '\E[37;44m'"\033[1m Décompression... \033[0m"
tar xf "tmp/${Minichrootarchive}" && echo "${Minichrootarchive} : fait." || exit

# Appliquer le miroir
# -------------------
[ -e "$Mount/etc/pacman.d" ] || mkdir -p "$Mount"/etc/pacman.d
echo "Server = $Miroir/\$repo/os/$Arch/" > "$Mount"/etc/pacman.d/mirrorlist

## C'est reparti
echo -e '\E[37;44m'"\033[1m Installation du système de base... \033[0m"
echo
# Montage des dossiers système pour chrooter
mount -o bind /proc "$Mount"/proc || (echo "Ne peut pas monter /proc";exit 1) && echo "/proc montée."
mount -o bind /dev "$Mount"/dev || (echo "Ne peut pas monter /dev";exit 1) && echo "/dev montée."
mount -o bind /sys "$Mount"/sys || (echo "Ne peut pas monter /sys";exit 1) && echo "/sys montée."
echo
#DNS
cp /etc/resolv.conf "$Mount"/etc/

chroot "$Mount" pacman -Syf base --noconfirm || exit 1
cp /etc/resolv.conf "$Mount"/etc/
echo
echo -e '\E[37;44m'"\033[1m Système de base installé. \033[0m"

# Traitement rc.conf
# ------------------
echo
echo -e '\E[37;44m'"\033[1m Traitement rc.conf \033[0m"
sed -i "
/^HARDWARECLOCK=$/s/$/localtime/
/^TIMEZONE=$/s/$/Europe\/Paris/
/^KEYMAP=$/s/$/fr-pc/
/^CONSOLEFONT=$/s/$/lat9w-16/
/^LOCALE=$/s/$/fr_FR.utf8/
/^HOSTNAME=$/s/$/$Host/
/^interface=$/s/$/eth0/
" $Mount/etc/rc.conf
# Rajout nom du PC dans /etc/hosts
sed -i "/localhost$/s/$/ $Host/" $Mount/etc/hosts


# Traitement locale.gen
# ---------------------
echo
echo -e '\E[37;44m'"\033[1m Traitement locale.gen \033[0m"
sed -i '
/^#fr_FR.UTF-8/s/#//
' $Mount/etc/locale.gen
chroot "$Mount" locale-gen # || exit 1

# Traitement fstab et mtab
# ------------------------
echo
echo -e '\E[37;44m'"\033[1m Traitement fstab et mtab \033[0m"
echo "
$Root / ext4 rw,errors=remount-ro 0 1
$Home /home ext4 rw,errors=remount-ro 0 1
" >> $Mount/etc/fstab

# Traitement mirrorlist
# ---------------------
echo
echo -e '\E[37;44m'"\033[1m Traitement mirrorlist \033[0m"
tmp=`basename $Miroir`
sed -i /$tmp/s/^#// $Mount/etc/pacman.d/mirrorlist

# Installation de yaourt
# ----------------------
echo
echo -e '\E[37;44m'"\033[1m Installation de yaourt \033[0m"
# rajout de réference à AUR pour installation yaourt
echo '
[archlinuxfr]
# SigLevel = PackageOptional
Server = http://repo.archlinux.fr/x86_64
' >> $Mount/etc/pacman.conf
chroot $Mount pacman -Sy
chroot $Mount pacman -S yaourt --noconfirm
# suppression référence directe à AUR (dangereux, sinon)
sed -i '/^\[archlinuxfr\]/,+2s/^/# /' $Mount/etc/pacman.conf
chroot $Mount yaourt -Suy

# Installation pilote carte graphique
# -----------------------------------
echo
echo -e '\E[37;44m'"\033[1m Installation carte Graphique \033[0m"
lspci | grep VGA
tmp=`lspci | grep VGA | egrep -o 'ATI|NVIDIA' | head -1`
echo $tmp
if [ "$tmp" ]
then
if [ $tmp == ATI ]
then
echo Pilote ATI détecté.
echo Ajout du module radeon à mkinitcpio.conf.
sed -i /^MODULE/s/\"\"/\"radeon\"/ $Mount/etc/mkinitcpio.conf
echo Installation du pilote libre.
chroot $Mount pacman -S xf86-video-ati --noconfirm
chroot $Mount pacman -S linux-firmware --noconfirm
chroot $Mount mkinitcpio -p linux
else
echo Cas pilote $tmp pas encore traité.
fi
else
echo Type de carte graphique non traité
fi

# Installation interface graphique Xorg
# --------------------------------------
echo
echo -e '\E[37;44m'"\033[1m Installation interface graphique Xorg \033[0m"
chroot $Mount pacman -Syu xorg-server xorg-xinit xorg-utils xorg-server-utils --noconfirm

# OPTIONNEL, A REVOIR
# Permet un test autonome de Xorg
chroot $Mount pacman -S xorg-twm xorg-xclock xterm --noconfirm
# Ajout de polices bien lissées
chroot $Mount pacman -S xorg-fonts-type1 ttf-dejavu artwiz-fonts font-bh-ttf \
font-bitstream-speedo gsfonts sdl_ttf ttf-bitstream-vera \
ttf-cheapskate ttf-liberation --noconfirm
# Configuration du clavier
ex $Mount/etc/X11/xorg.conf.d/10-evdev.conf <<=
/MatchIsKeyboard/+2a
Option "XkbLayout" "fr"
Option "XkbVariant" "latin9"
Option "XkbOptions" "compose:menu,terminate:ctrl_alt_bksp"
.
wq
=

# Installation environnement graphique
# ------------------------------------
if [ "$Bureau" == "GNOME" -o "$Bureau" == "CINNAMON" ]
then
echo
echo -e '\E[37;44m'"\033[1m Installation bureau $Bureau \033[0m"
# Installation paquet gnome
chroot $Mount pacman -Syu gnome --noconfirm
# Ajout de gdm pour avoir une interface graphique de connexion
chroot $Mount pacman -S gdm --noconfirm
# Ajout de DBus et gdm aux services dans /etc/rc.conf
sed -i '/^DAEMONS=/s/)/ dbus gdm)/' $Mount/etc/rc.conf
if [ "$Bureau" == "CINNAMON" ]
then
# Ajout de base-devel, nécessaire pour compiler muffin
chroot $Mount pacman -Sf base-devel --noconfirm
# Installation de Cinnammon (y compris muffin)
chroot $Mount yaourt -Sf cinnamon --noconfirm
fi

else
echo
echo -e '\E[37;44m'"\033[1m Pas de bureau installé. \033[0m"
fi

# Déclaration des utilisateurs
# ---------------------------
echo
echo -e '\E[37;44m'"\033[1m Déclaration des utilisateurs \033[0m"
echo "'(entrer le mot de passe de root)"
chroot $Mount passwd root
tmp=""
while [ ! $tmp ]
do
echo -n "Taper le nom d'un nouvel utilisateur :"
read tmp
done
echo $tmp
chroot $Mount useradd -m $tmp
chroot $Mount passwd $tmp

# Installation de grub2 si demandé
# -------------------------------------

if [ "$Grub" ]
then
echo
echo -e '\E[37;44m'"\033[1m Installation de Grub 2 \033[0m"
# Suppression du paquet Grub Legacy
chroot $Mount pacman -R grub --noconfirm
# Installation paquet Grub 2
chroot $Mount pacman -S grub2-bios --noconfirm
# Installation os-prober (pour récupérer un boot Windows"
chroot $Mount pacman -S os-prober --noconfirm
# Ajout du système hôte au menu du Grub
sed '
1,/10_linux/d
/10_linux/,$d
' /boot/grub/grub.cfg >> $Mount/etc/grub.d/40_custom
# Installation du Grub
chroot $Mount grub-install $Grub
# Créer fichiers de configuration du Grub
chroot $Mount grub-mkconfig -o /boot/grub/grub.cfg

fi

umount $Mount/sys && echo "/sys démontée."
umount $Mount/dev && echo "/dev démontée."
umount $Mount/proc && echo "/proc démontée."

umount $Home
umount $Root

exit 0



Modifié par Esclapion le 02/03/2012 23:44
IceF0x
 Posté le 03/03/2012 à 14:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci :) à exploiter

Esclapion
 Posté le 03/03/2012 à 21:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Version suivante.

Améliorations :

  1. Un peu plus lisible () ;
  2. /home et swap supportés ;
  3. bureaux possibles : Gnome-Shell, Cinnamon, Xfce ou Lxde ;
  4. navigateur Chromium ou Firefox.

#! /bin/bash
shopt -s expand_aliases # Active l'expansion d'alias.
alias Chroot='chroot $Mont'

# Ecrit par : esclapion
# Version : 1.1
# Date : 3 Mars 2012

if [ `whoami` != root ]; then
echo Script à lancer en tant que root
exit 1
fi

# ***************************************************
# *
# Variables globales à paramétrer par l'utilisateur *
# *
# ***************************************************

Mont=/mnt/arch
Root=/dev/sda7
Home=/dev/sda8
Swap=

# Architecture 64 bits, doit être la même que celle de la machine hôte.
# Pour l'instant, le 32 bits n'est pas supporté.
Arch=x86_64

# Miroir utilisé pour l'installation
Miroir=http://mir.archlinux.fr

# Nom de la machine cible. Par défaut, celui de la machine hôte.
Host=`hostname`

# Emplacement du Grub, par défaut sur la machine hôte. Mettre à blanc pour éviter son installation
Grub=`df / | grep '/$' | sed 's/[0-9][0-9]*.*//'`

# Bureau par défaut. Doit valoir Gnome, Cinnammon,ou Xfce. Sinon, pas de bureau installé.
Bureau=Lxde

# Navigateur par déFaut. Peut être vide, contenir Chromium ou Firefox
Navig=

# Fin paramètrage
# ---------------


echo -e '\n\E[37;44m'"\033[1m Début de l'installation \033[0m\n"

# Formatage et montage des partitions
# -----------------------------------
echo -e '\n\E[37;44m'"\033[1m Formatage de la partition système ($Root) \033[0m"
mkfs.ext4 -q $Root
[ $Swap ] && mkswap $Swap
mkdir -p $Mont
mount $Root $Mont
cd $Mont
mkdir -p home
[ $Home ] && mount $Home home
mkdir -p tmp
chmod 1777 tmp

# Téléchargement du chroot minimal
# --------------------------------
cd tmp
echo -e '\n\E[37;44m'"\033[1m Téléchargement du chroot minimal... \033[0m"
Minichrooturl="$Miroir/~tuxce/chroot"
Minichrootarchive="archlinux.chroot.${Arch}.tgz"
if [ -e "${Minichrootarchive}" ]; then
echo "Archive trouvée dans $Mont/tmp"
else
if wget -q "${Minichrooturl}/${Minichrootarchive}"; then
echo "$Minichrootarchive : téléchargée."
else
echo "Erreur lors du téléchargement de ${Minichrooturl}/${Minichrootarchive} !"
exit 1
fi
fi
cd ..

echo -e '\n\E[37;44m'"\033[1m Décompression... \033[0m"
tar xf "tmp/${Minichrootarchive}" && echo "${Minichrootarchive} : fait." || exit

# Appliquer le miroir
# -------------------
[ -e "$Mont/etc/pacman.d" ] || mkdir -p "$Mont"/etc/pacman.d
echo "Server = $Miroir/\$repo/os/$Arch/" > "$Mont"/etc/pacman.d/mirrorlist

# Installation système de base
# ----------------------------
echo -e '\n\E[37;44m'"\033[1m Installation du système de base... \033[0m"

# Montage des dossiers système pour chrooter
mount -o bind /proc "$Mont"/proc || (echo "Ne peut pas monter /proc";exit 1) && echo "/proc montée."
mount -o bind /dev "$Mont"/dev || (echo "Ne peut pas monter /dev";exit 1) && echo "/dev montée."
mount -o bind /sys "$Mont"/sys || (echo "Ne peut pas monter /sys";exit 1) && echo "/sys montée."
echo
#DNS
cp /etc/resolv.conf "$Mont"/etc/

Chroot pacman -Syf base --noconfirm || exit 1
cp /etc/resolv.conf "$Mont"/etc/
echo
echo -e '\E[37;44m'"\033[1m Système de base installé. \033[0m"

# Traitement rc.conf
# ------------------
echo -e '\n\E[37;44m'"\033[1m Traitement rc.conf \033[0m"
sed -i "
/^HARDWARECLOCK=$/s/$/localtime/
/^TIMEZONE=$/s/$/Europe\/Paris/
/^KEYMAP=$/s/$/fr-pc/
/^CONSOLEFONT=$/s/$/lat9w-16/
/^LOCALE=$/s/$/fr_FR.utf8/
/^HOSTNAME=$/s/$/$Host/
/^interface=$/s/$/eth0/
" $Mont/etc/rc.conf
# Rajout nom du PC dans /etc/hosts
sed -i "/localhost$/s/$/ $Host/" $Mont/etc/hosts


# Traitement locale.gen
# ---------------------
echo -e '\n\E[37;44m'"\033[1m Traitement locale.gen \033[0m"
sed -i '
/^#fr_FR.UTF-8/s/#//
' $Mont/etc/locale.gen
Chroot locale-gen # || exit 1

# Traitement fstab et mtab
# ------------------------
echo -e '\n\E[37;44m'"\033[1m Traitement fstab et mtab \033[0m"
echo "$Root / ext4 rw,errors=remount-ro 0 1" >> $Mont/etc/fstab
if [ $Home ]; then
echo "$Home /home ext4 rw,errors=remount-ro 0 1">>$Mont/etc/fstab
fi
if [ $Swap ]; then
echo "$Swap swap swap defaults 0 0">>$Mont/etc/fstab
fi

# Traitement mirrorlist
# ---------------------
echo
echo -e '\E[37;44m'"\033[1m Traitement mirrorlist \033[0m"
tmp=`basename $Miroir`
sed -i /$tmp/s/^#// $Mont/etc/pacman.d/mirrorlist

# Installation de yaourt
# ----------------------
echo -e '\n\E[37;44m'"\033[1m Installation de yaourt \033[0m"
# rajout de réference à AUR pour installation yaourt
echo '
[archlinuxfr]
# SigLevel = PackageOptional
Server = http://repo.archlinux.fr/x86_64
' >> $Mont/etc/pacman.conf
Chroot pacman -Sy
Chroot pacman -S yaourt --noconfirm
# suppression référence directe à AUR (dangereux, sinon)
sed -i '/^\[archlinuxfr\]/,+2s/^/# /' $Mont/etc/pacman.conf
Chroot yaourt -Suy

# Installation pilote carte graphique
# -----------------------------------
echo -e '\n\E[37;44m'"\033[1m Installation carte Graphique \033[0m"
lspci | grep VGA
tmp=`lspci | grep VGA | egrep -o 'ATI|NVIDIA' | head -1`
echo $tmp
if [ "$tmp" ]; then
if [ $tmp == ATI ]; then
echo Pilote ATI détecté.
echo Ajout du module radeon à mkinitcpio.conf.
sed -i /^MODULE/s/\"\"/\"radeon\"/ $Mont/etc/mkinitcpio.conf
echo Installation du pilote libre.
Chroot pacman -S xf86-video-ati --noconfirm
Chroot pacman -S linux-firmware --noconfirm
Chroot mkinitcpio -p linux
else
echo Cas pilote $tmp pas encore traité.
fi
else
echo Type de carte graphique non traité
fi

# Installation interface graphique Xorg
# --------------------------------------
echo -e '\n\E[37;44m'"\033[1m Installation interface graphique Xorg \033[0m"
Chroot pacman -Syu xorg-server xorg-xinit xorg-utils xorg-server-utils --noconfirm

# OPTIONNEL, A REVOIR
# Permet un test autonome de Xorg
Chroot pacman -S xorg-twm xorg-xclock xterm --noconfirm
# Ajout de polices bien lissées
Chroot pacman -S xorg-fonts-type1 ttf-dejavu artwiz-fonts font-bh-ttf \
font-bitstream-speedo gsfonts sdl_ttf ttf-bitstream-vera \
ttf-cheapskate ttf-liberation --noconfirm
# Configuration du clavier
ex $Mont/etc/X11/xorg.conf.d/10-evdev.conf <<=
/MatchIsKeyboard/+2a
Option "XkbLayout" "fr"
Option "XkbVariant" "latin9"
Option "XkbOptions" "compose:menu,terminate:ctrl_alt_bksp"
.
wq
=

# Installation d'un Navigateur
# ----------------------------
echo -e '\n\E[37;44m'"\033[1m Installation navigateur $Navig \033[0m"
case $Navig in

Chromium)
Chroot pacman -S chromium --noconfirm
;;
Firefox)
Chroot pacman -S firefox firefox-i18n-fr --noconfirm
;;
*)
echo "Pas de navigateur défini."
;;
esac

# Déclaration des utilisateurs
# -- -------------------------
echo -e '\n\E[37;44m'"\033[1m Déclaration des utilisateurs \033[0m"
echo "'(entrer le mot de passe de root)"
Chroot passwd root
User=""
while [ ! $User ]
do
echo -n "Taper le nom d'un nouvel utilisateur : "
read User
done
echo $User
Chroot useradd -m $User
Chroot passwd $User

# Installation environnement graphique
# ------------------------------------
case $Bureau in
Gnome|Cinnamon)
echo -e '\n\E[37;44m'"\033[1m Installation bureau $Bureau \033[0m"
# Installation paquet gnome
Chroot pacman -S gnome --noconfirm
# Ajout de gdm pour avoir une interface graphique de connexion
Chroot pacman -S gdm --noconfirm
# Ajout de DBus et gdm aux services dans /etc/rc.conf
sed -i '/^DAEMONS=/s/)/ dbus gdm)/' $Mont/etc/rc.conf
if [ $Bureau == Cinnamon ]; then
# Ajout de base-devel, nécessaire pour compiler muffin
Chroot pacman -Sf base-devel --noconfirm
# Installation de Cinnmmon (y compris muffin)
Chroot yaourt -Sf cinnamon --noconfirm
fi
;;
Xfce)
echo -e '\n\E[37;44m'"\033[1m Installation bureau $Bureau \033[0m"
# Installation paquet xfce
Chroot pacman -S xfce4 --noconfirm
# Optionnel
Chroot pacman -S xfce4-goodies --noconfirm
# Ajout de DBus aux services dans /etc/rc.conf
sed -i '/^DAEMONS=/s/)/ dbus)/' $Mont/etc/rc.conf
# Optionnel : lancement automatique de Xfce au démarrage
echo '
# Démarrer Xfce automatiquement
if [ "$(tty)" = "/dev/tty1" -o "$(tty)" = "/dev/vc/1" ];
then startxfce4
fi' > $Mont/home/$User/.bashrc
;;
Lxde)
echo -e '\n\E[37;44m'"\033[1m Installation bureau $Bureau \033[0m"
# Installation paquet xfce
Chroot pacman -S lxde --noconfirm
# Optionnel : installer lxdm
Chroot pacman -S lxde --noconfirm
sed -i '/^DAEMONS=/s/)/ lxdm)/' $Mont/etc/rc.conf
# Optionnel : ouverture session automatique
sed -i "/^# auto/s/.*/autologin=$User/" $Mont/etc/lxdm/lxdm.conf
;;
*)
echo -e '\n\E[37;44m'"\033[1m Pas de bureau installé. \033[0m"
;;
esac

# Installation du Grub 2 si demandé
# ---------------------------------
if [ "$Grub" ]; then
echo -e '\n\E[37;44m'"\033[1m Installation de Grub 2 \033[0m"
# Suppression du paquet Grub Legacy
Chroot pacman -R grub --noconfirm
# Installation paquet Grub 2
Chroot pacman -Sf grub2-bios --noconfirm
# Installation os-prober (pour récupérer un boot Windows)
Chroot pacman -S os-prober --noconfirm
# Ajout du système hôte au menu du Grub
sed '
1,/10_linux/d
/10_linux/,$d
' /boot/grub/grub.cfg >> $Mont/etc/grub.d/40_custom
# Installation du Grub
Chroot grub-install $Grub
# Créer fichiers de configuration du Grub
Chroot grub-mkconfig -o /boot/grub/grub.cfg

fi

umount $Mont/sys && echo "/sys démontée."
umount $Mont/dev && echo "/dev démontée."
umount $Mont/proc && echo "/proc démontée."
[ $Home ] && umount $Home
umount $Root

exit 0

Logicien
 Posté le 04/03/2012 à 05:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Je te félicite Esclapion. Ce n'est pas tous les jours qu'on voit un script aussi évolué être affiché sur le forum Linux de PCAstuces. La preuve, je ne peux que faire quelques remarques partielles pour le moment. Je devrai le relire encore si je veux t'aider à l'améliorer.

Côté syntaxe de Bash, tu es loin en avant de moi. Je comprend à la lecture, mais ne je pourrais pas facilement en faire autant sans me plonger dans l'étude de Bash et des commandes. J'ai lu un peu sur Sed, sans retenir. Je ne sais rien sur Awk.

J'ai un faible pour le montage par LABEL, surtout si on déplace une partition plus tard. Elle pourra toujours être montée sans modifier /etc/fstab. Donc

mkfs.ext4 -L Arch -q $Root

mkfs.ext4 -L Home -q $Home

[ $Swap ] && mkswap -L Swap $Swap

Dans /etc/rc.conf, la ligne

/^interface=$/s/$/eth0/

est acceptée. C'est à peu près tout ce qu'on peut faire pour le réseau dans ce fichier.

La configuration du réseau a été déplacée et se fait maintenant avec le démon Netcfg , paquet qu'il faut installer (pacman -s netcfg) . Ce qui est remarquable dans le développement de ArchLinux, c'est que le réseau reste assez facile à configurer avec Netcfg. Je me comprend. Cela se compare à Debian avec /etc/network/interfaces. La méthode de configuration du réseau diffère beaucoup d'une distribution Linux à une autre.



Modifié par Logicien le 04/03/2012 06:04
Esclapion
 Posté le 04/03/2012 à 12:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Côté syntaxe de Bash, tu es loin en avant de moi. Je comprend à la lecture, mais ne je pourrais pas facilement en faire autant sans me plonger dans l'étude de Bash et des commandes. J'ai lu un peu sur Sed, sans retenir. Je ne sais rien sur Awk.

Là, j'apprends au fur et à mesure avec le Web. Il m'est arrivé de passer plus d'une heure sur une ligne. J'ai des touts petits programmes d'essais ou je rode mes expressions en local, avant de toucher à la machine cible. Et même là, c'est pas évident...

J'ai notamment cherché hier pendant un bon moment le "goto" en bash, mais pas trouvé. Apparemment, il n'y en a pas ? Je voulais faire un démontage de mes partitions en cas d'erreur. Peut-être par un sous-programme...

J'ai un faible pour le montage par LABEL, surtout si on déplace une partition plus tard.

Je voulais d'abord passer et réussir d'un coup une installation. Je sais que j'ai une faiblesse au niveau des montages, mais par /dev c'était le plus simple. Je n'arrive pas à me focaliser sur plusieurs trucs à la fois. Je pensais aller vers l'UUID, mais ça change à chaque mkfs. Quand au Label, pas facile de l'automatiser, il faut déjà que l'utilisateur en ait mis (?).*

Je vais regarder ton mkfs, je ne connaissais pas cette syntaxe. Pour le reste, je me suis lourdement inspiré des deux derniers sujets sur lesquels tu es intervenu, notamment sur le Grub.

Sur ce point, j'ai pas mal souffert, car apparemment Arch reconnaît mal le système hôte. A la base, il ne détecte même pas Windows. Avec os-prober, si, mais pas la LMDE. J'ai essayé d'exécuter 10_linux & co, mais ça ne me donne rien. J'ai fini par l'extraire, mais c'est pas très solide.

La configuration du réseau a été déplacée et se fait maintenant avec le démon Netcfg , paquet qu'il faut installer (pacman -s netcfg) . Ce qui est remarquable dans le développement de ArchLinux, c'est que le réseau reste assez facile à configurer avec Netcfg.

Pour le réseau, oui, j'ai sabré cette partie dans une première étape. J'ai pensé à Netcfg, mais je croyais ça un peu dépassé, et j'hésitais entre Wicd et network-manager (avec une préférence pour wicd, sans vraiment de bonne raison). Ou alors, une config directe, en repêchant celle du hôte. Par contre, il y a des problème d' IPs non fixes (mon cas).

Je suis sinon toujours gêné par les fontes, mais ça, c'est une tâche d'arrière-fond qui n'aboutira sans doute pas. En Gnome, j'ai repéré Gnome-Tweak-tool, mais ça n'améliore qu'un tout petit peu. Elles sont pourtant en 96 dpi, j'ai vérifié hier. J'ai les bonnes, mais tout se passe comme si elles ne correspondaient pas exactement au masque de l'écran. les petites restent trop pâles, surtout sur PCA. Par contre, les grosses sont très contrastées (presque trop, avec mes réglages). Je ne sais pas comment Mint et Ubuntu font.

Merci de ton aide, en tout cas. Il faudrait que je rajoute le Canadien, d'ailleurs. Sur ce point, il serait sans doute possible de le repêcher sur le hôte, mais je ne voudrais pas être trop dépendant de celui-ci (ni avoir un script trop long). Je vais regarder.

(edit)

* Autant pour moi, c'est toi qui les mets.

(re)

mkfs.ext4 -L Home -q $Home

Ça, j'y pensais, mais si l'utilisateur désire conserver le contenu de son Home d'une installation sur l'autre ? Je ne le fais plus dans la deuxième version.



Modifié par Esclapion le 04/03/2012 13:06
Esclapion
 Posté le 04/03/2012 à 16:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bon, j'ai fait la modif pour le label. Dis-moi si j'ai bien compris.

more /etc/fstab
#
# /etc/fstab: static file system information
#
#


tmpfs /tmp tmpfs nodev,nosuid 0 0
LABEL=RootArch / ext4 rw,errors=remount-ro 0 1
LABEL=HomeArch /home ext4 rw,errors=remount-ro 0 1
LABEL=SwapArch swap swap defaults

blkid /dev/sda7 /dev/sda8 /dev/sdb3
/dev/sda7: LABEL="RootArch" UUID="a1e47c0d-5c60-4ff3-bf5a-6904b3cf7a0a" TYPE="ext4"
/dev/sda8: UUID="b1cb879f-99ce-4535-9767-f6035295ddac" TYPE="ext4" LABEL="HomeArch"
/dev/sdb3: UUID="98ac8d9c-69ca-4f9a-9d5d-94e938801206" TYPE="swap" LABEL="SwapArch"

J'ai généré un système complet, ça marche toujours. A suive, le réseau ?

Les modifs :

# Labels servant au montage des partitions
LabelRoot=RootArch
LabelHome=HomeArch
LabelSwap=SwapArch

(...)

mkfs.ext4 -q -L $LabelRoot $Root
mkdir -p $Mont
mount $Root $Mont
mkdir -p $Mont/home
# Si une partition home séparée a été déclarée
if [ $Home ]; then
e2label $Home $LabelHome # Etiqueter cette partition
mount $Home $Mont/home # La monter sur /home
fi
# Si une partition de swap a été déclarée
[ $Swap ] && mkswap -L $LabelSwap $Swap # Etiqueter cette partition et la préparer

(...)

# Traitement fstab et mtab
# ------------------------
echo -e '\n\E[37;44m'"\033[1m Traitement fstab et mtab \033[0m"
echo "LABEL=$LabelRoot / ext4 rw,errors=remount-ro 0 1" >> $Mont/etc/fstab
if [ $Home ]; then
echo "LABEL=$LabelHome /home ext4 rw,errors=remount-ro 0 1">>$Mont/etc/fstab
fi
if [ $Swap ]; then
echo "LABEL=$LabelSwap swap swap defaults 0 0">>$Mont/etc/fstab
fi

(edit)

Pour la connexion filaire, ça marche déjà : le réseau s'établit instantanément.

Par contre, LMDE n'utilise pas netcfg. Elle passe par network-manager.



Modifié par Esclapion le 04/03/2012 17:36
Esclapion
 Posté le 04/03/2012 à 19:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

J'ai créé un sujet spécifique sur netcfg ICI.

Apparemment, pas très dur à intégrer au script.



Modifié par Esclapion le 04/03/2012 19:01
Esclapion
 Posté le 11/03/2012 à 17:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour,

Je viens d'installer Archlinux sur un autre portable, et ça a marché du premier coup.

Si ça intéresse quelqu'un le script peut être visionné/récupéré ICI.

Comme amélioration, j'ai surtout rajouté le Wifi, Nvidia, Intel (pas vérifié) et le support SSD.

Exemple pour un SSD :



Modifié par Esclapion le 12/03/2012 12:38
Esclapion
 Posté le 12/03/2012 à 18:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Version 1.5 utilisant un cache local pour pacman et yaourt, de façon à minimiser les accès réseau.

Accélère la installation (avec quand même formatage), qui ne dure plus que :

real 3m44.306s
user 2m12.412s
sys 0m16.185s

Ça comprend :

- base ;

- base-devel ;

- pilote libre ATI ;

- Xorg ;

- les fontes True type supplémentaires pour Xorg ;

- Chromium + le plugin Flash ;

- Gnome et gdm ;

- Gnome-extra ;

- les plugins Gstreamer ;

- les fontes Microsoft ;

- netcfg et la configuration Wifi ;

- Grub 2 et son installation.

A suivre : installation complètement sans réseau.



Modifié par Esclapion le 12/03/2012 19:27
GolMut
 Posté le 14/03/2012 à 20:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

Bonne idée ce script et joli travail!

J'ai donc voulu l'essayer (je l'ai appelé arch):

# sh arch

arch: 2: arch: shopt: not found

: not foundch:

: not foundch:

arch: 243: arch: Syntax error: word unexpected (expecting "in")

il doit me manquer qque chose: shopt?

et apparement une Syntax error...

Esclapion
 Posté le 14/03/2012 à 20:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Un peu normal, c'est du bash et tu le lances en sh.

Rends simplement le script exécutable et lance-le tel quel.

J'espère que tu sais dépanner un grub, au cas où ?

GolMut
 Posté le 14/03/2012 à 20:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ok, maintenant voilà ce que j'ai quand je lance le script:

# arch

x86_64

#

??

Esclapion
 Posté le 14/03/2012 à 21:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Tu as édité ce script et mis les paramètres demandés (nom de partition, etc) .?

Si oui, rajoute un -x sur la première ligne du script (bash -x), voir où il s'arrête. Ton Linux actuel est en 64 bits ?

Draleg
 Posté le 15/03/2012 à 10:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour, je lis dans le premier post:

# Bureau par défaut. Doit valoir GNOME ou CINNAMON, sinon, pas de bureau installé.
export Bureau=CINNAMON

Pourtant je vois dans les posts précédents: # Installation paquet xfce

Donc script compatible pour l'installation de XFCE ?
La version full et complète est disponible ou ?

Bonne journée

Esclapion
 Posté le 15/03/2012 à 12:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

C'est le commentaire qui n'a pas suivi. Perso, je suis plutôt sous Cinnamon, mais j'ai écrit (et testé) la base pour Xfce.

Si tu regardes la 1.5 :

  1. Xfce)
  2. echo -e '\n\E[37;44m'"\033[1m Installation bureau $Bureau \033[0m"
  3. # Installation paquet xfce
  4. Chroot pacman -S xfce4 --noconfirm
  5. # Optionnel
  6. Chroot pacman -S xfce4-goodies --noconfirm
  7. # Ajout de DBus aux services dans /etc/rc.conf
  8. sed -i '/^DAEMONS=/s/)/ dbus)/' $Mont/etc/rc.conf
  9. # Optionnel : lancement automatique de Xfce au démarrage
  10. echo '
  11. # Démarrer Xfce automatiquement
  12. if [ "$(tty)" = "/dev/tty1" -o "$(tty)" = "/dev/vc/1" ];
  13. then startxfce4
  14. fi' > $Mont/home/$User/.bashrc
  15. ;;
  16. *)
  17. echo -e '\n\E[37;44m'"\033[1m Pas de bureau installé. \033[0m"
  18. ;;
    J'attends pour améliorer les commentaires que des gens s'en servent.
    Mais il faut quand même des rudiments de connaissance de scripts, pour pouvoir l'améliorer petit à peit.


Modifié par Esclapion le 15/03/2012 12:49
Esclapion
 Posté le 15/03/2012 à 12:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Re,

Je viens de regarder pour changer le commentaire, et il est déjà OK. C'est toi qui n'a pas pris la dernière version.

GolMut
 Posté le 15/03/2012 à 19:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Je retente de lancer le script avec l'option -x sur la 1ere ligne du script:

#! /bin/bash -x

et tjs le même résultat.

Quelques précisions: je lance le script depuis une debian 64 virtualisée

j'ai partitionné mon disque virtuel ainsi:

sda1: /

sda5: swap

sda6: /home

sda7: / pour arch

sda8: /home pour arch

Esclapion
 Posté le 15/03/2012 à 19:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

debian 64 virtualisée


Woula, ça va loin, là. A part ça, si tu ne vois pas les commandes se dérouler, c'est qu'il y a déjà un problème de bash à la base.


Est-ce que tu as un bash ? (which bash) et est-il dans /bin ?

Essaie aussi d'enlever l'espace entre ! et la suite, de manière à obtenir #!/bin/bash collé.

Tu peux aussi mettre un set -x dans le fichier pour tracer l'exécution. Mais si rien ne s'exécute...


De toutes façons, le paquet base des dépôts a un problème aujourd'hui, je viens de le signaler sur le forum Arch.

GolMut
 Posté le 15/03/2012 à 19:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

j'ai bien bash d'installé, mais si j'avais un problème de bash, le script me renverrai une erreur voir rien du tout? Or là, il me renvoie juste 'X86_64'.

Edit: je prérère en virtuel... moins de risques...



Modifié par GolMut le 15/03/2012 20:01
Esclapion
 Posté le 15/03/2012 à 20:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

GolMut a écrit :

j'ai bien bash d'installé, mais si j'avais un problème de bash, le script me renverrai une erreur voir rien du tout? Or là, il me renvoie juste 'X86_64'.

Si tu as un bash et si tu mets un set -x, tu dois voir les commandes s'exécuter. Tant qu'on n'en arrive pas là, même pas la peine d'aller plus loin.

Un essai, quand même : essaie de renommer ton script toto, et de lancer par ./toto.



Modifié par Esclapion le 15/03/2012 20:04
GolMut
 Posté le 15/03/2012 à 20:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

tiens tiens... j'ai changé de nom au script: toto

et maintenant il me renvoit une erreur:

bash: toto : commande introuvable

y'a du progrès...

Esclapion
 Posté le 15/03/2012 à 20:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Tape ./toto . Ta variable PATH ne doit pas inclure le répertoire courant.

Je suppose que tu as fait un chmod +x toto, avant ?

GolMut
 Posté le 15/03/2012 à 20:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

oui, mon script est bien exécutable:

# ls -l toto
-rwxrwxrwx 1 root root 15548 mars 15 20:18 toto

et quand je le lance avec ./ il me dit que c'est le mauvais interpréteur...

Esclapion
 Posté le 15/03/2012 à 20:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

et bash toto , ça donne quoi ?

GolMut
 Posté le 15/03/2012 à 20:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

#bash toto

toto: ligne4: $'\r' : commande introuvable

toto: ligne8: $'\r' : commande introuvable

toto: ligne243: Erreur de syntaxe près du symbole inattendu " $'in\r' "

'oto: ligne243: 'case $Carte in

Esclapion
 Posté le 15/03/2012 à 20:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Là, il semble avoir des problèmes avec les retours ligne.

Comment as-tu récupéré le fichier ?

Essaie de te faire un petit programme bash, pour t'entraîner, parce que là, on part de trop loin.

GolMut
 Posté le 16/03/2012 à 19:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

salut,

c'est bon, le script fonctionne!

apparement j'ai téléchargé le script en fichier txt windows qu'il a fallut que je convertisse vers unix, pourtant j'ai téléchargé ton script avec la commande wget...

j'ai donc juste fait un petit:

# dos2unix toto

et c'est parti... il est en train de travailler...

je donnerais les résultats dans un prochain post.

Esclapion
 Posté le 16/03/2012 à 19:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Au moins, ça progresse. Mais sinon, actuellement, je suis bloqué par une modification dans les dépôts qui fait que "blkid" ne fonctionne plus avec ce script.

J'en ai discuté sur le forum Archlinux cet après-midi.

Je doute donc que ça marche, je suis en train de le modifier pour le rendre moins sensible à ça.

Esclapion
 Posté le 18/03/2012 à 13:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Toute nouvelle version, mais en deux fichiers. J'ai complètement viré leur Minichroot et j'en ai réécrit un plus solide (mais plus gros, 200 Mo).

Cette version est à télécharger ICI, et mon Chroot ICI. Les deux fichiers sont à placer dans le même répertoire.



Modifié par Esclapion le 18/03/2012 13:51
takycard
 Posté le 26/03/2012 à 15:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Question à la con, le script marche via un CDLIVE? Car devoir installer un système pour en installer un autre. Alors oui je pourrais l'installer à l'ancienne, mais bon moi j'aime bien ce genre de script :) J'aime archlinux, mais je ne suis pas fan du tripotage de fichier de conf pour son installation.

Esclapion
 Posté le 26/03/2012 à 15:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Question à la con, le script marche via un CDLIVE?


Question très pertinente, au contraire. Pas essayé. Il faudra bricoler un peu, probablement.


J'aime archlinux, mais je ne suis pas fan du tripotage de fichier de conf pour son installation.


Moi itou. C'est pourquoi je préfère investir du temps dans un script qui, une fois mis au point, fait le boulot pour moi.


Actuellement, je l'ai validé depuis une Arch et une LMDE. Peut-être depuis un live de LMDE (ou d'un Debian, donc) ?



Modifié par Esclapion le 26/03/2012 15:48
takycard
 Posté le 26/03/2012 à 18:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

je dis toujours question à la con, en espérant qu'on me dise qu'elle est pertinante.

Alors que je si je commence par question pertinante, on risque de me dire que c'est une question à la con :)

Je vais faire un test demain si je ne suis pas trop occupé, j'ai longtemps été sur Ubuntu, donc je vais utiliser un live ubuntu.

Je te dirais ce qu'il en est.

Esclapion
 Posté le 26/03/2012 à 18:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

OK. Prends bien la dernière.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Support ErGear articulé pour deux écrans PC 13 à 32 pouces à 39,52 €
39,52 € 66 € -40%
@Amazon
Processeur AMD Ryzen 9 7900X (12 coeurs, 24 threads, 4,7 GHz / 5,6 GHz, DDR5, PCIe 5.0) à 338,98 €
338,98 € 410 € -17%
@Amazon
Rasoir à barbe sans fil Philips OneBlade QP2724 + 2 lames + sabot réglable 5 en 1 à 34,99 €
34,99 € 52,99 € -34%
@Amazon
Casque gamer sans fil Logitech G735 Lightspeed (microphone détachable, RGB, repose casque) à 129,99 €
129,99 € 199 € -35%
@Amazon
Carte mémoire Samsung 256 Go MicroSDXC Evo Select U3 (130 Mo/s) à 22,66 €
22,66 € 32 € -29%
@Amazon Allemagne
Casque sans fil à réduction de bruit Anker SoundCore Q30 (bluetooth, NFC, multipoint) à 55,09 €
55,09 € 79,99 € -31%
@Amazon

Sujets relatifs
[TUTO]Installer VISIONNEUSE POWERPOINT, sur LinuxMint17.
[TUTO]Installer Captvty, sur LinuxMint17, et autres Ubuntu...
Archlinux : installer les polices Windows ?
installer un fichier .jar
Archlinux : l'activation du pavé numérique ne se fait plus
installer homeplayer sur ubuntu 14.04.2
Archlinux : mise à jour foireuse - merci chroot !
Installer Mint 17.1
Problème pour installer fichier msi. avec Wine
[TUTO]Script, pour Notification de Réponse.
Plus de sujets relatifs à Tuto : installer ArchLinux en 10'' chrono
 > Tous les forums > Forum Linux