|
Posté le 02/03/2012 @ 23:23 |
| 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
|
|
|
|
|
|
Posté le 02/03/2012 à 23:28 |
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 |
|
Posté le 03/03/2012 à 14:13 |
| |
|
Posté le 03/03/2012 à 21:58 |
Grand Maître astucien | Version suivante.
Améliorations :
- Un peu plus lisible () ;
- /home et swap supportés ;
- bureaux possibles : Gnome-Shell, Cinnamon, Xfce ou Lxde ;
- 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
|
|
Posté le 04/03/2012 à 05:48 |
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 |
|
Posté le 04/03/2012 à 12:43 |
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 |
|
Posté le 04/03/2012 à 16:12 |
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 |
|
Posté le 04/03/2012 à 19:00 |
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 |
|
Posté le 11/03/2012 à 17:03 |
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 |
|
Posté le 12/03/2012 à 18:57 |
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 ré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 |
|
Posté le 14/03/2012 à 20:44 |
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... |
|
Posté le 14/03/2012 à 20:48 |
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ù ? |
|
Posté le 14/03/2012 à 20:57 |
Petit astucien
| ok, maintenant voilà ce que j'ai quand je lance le script:
# arch
x86_64
#
?? |
|
Posté le 14/03/2012 à 21:04 |
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 ? |
|
Posté le 15/03/2012 à 10:23 |
| 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
|
|
Posté le 15/03/2012 à 12:00 |
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 :
-
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
-
;;
-
*)
-
echo -e '\n\E[37;44m'"\033[1m Pas de bureau installé. \033[0m"
-
;;
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 |
|
|
Posté le 15/03/2012 à 12:59 |
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. |
|
Posté le 15/03/2012 à 19:38 |
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
|
|
Posté le 15/03/2012 à 19:52 |
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. |
|
Posté le 15/03/2012 à 19:59 |
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 |
|
Posté le 15/03/2012 à 20:03 |
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 |
|
Posté le 15/03/2012 à 20:11 |
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... |
|
Posté le 15/03/2012 à 20:14 |
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 ? |
|
Posté le 15/03/2012 à 20:21 |
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... |
|
Posté le 15/03/2012 à 20:25 |
Grand Maître astucien | et bash toto , ça donne quoi ? |
|
Posté le 15/03/2012 à 20:33 |
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
|
|
Posté le 15/03/2012 à 20:38 |
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.
|
|
Posté le 16/03/2012 à 19:33 |
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. |
|
Posté le 16/03/2012 à 19:37 |
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. |
|
Posté le 18/03/2012 à 13:47 |
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 |
|
Posté le 26/03/2012 à 15:44 |
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. |
|
Posté le 26/03/2012 à 15:48 |
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 |
|
Posté le 26/03/2012 à 18:05 |
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.
|
|
Posté le 26/03/2012 à 18:11 |
Grand Maître astucien | OK. Prends bien la dernière. |
|