Postez ici vos trucs & astuces.

Os chroot (script) !

#1Messageil y a 9 ans

Salut,

Si vous "multibootez", le script suivant (nommé crooty "voul'voul", placé dans /usr/bin & rendu éxècutable) lance un chroot sur la partition d'un système en lui donnant le n° (sdX dans blkid) & dit quoi faire si on lui donne rien en paramètre:

#!/bin/bash

if [ -z $1 ] ;then
   echo "Taper crooty XY avec X comme lettre du disque et Y comme n° de la partition du système à chrooter (sdXY -> blkid) "
else
sudo mount /dev/sd$1 /mnt && sudo mount --bind /dev /mnt/dev && sudo mount -t proc /proc /mnt/proc && sudo mount -t sysfs /sys /mnt/sys && sudo chroot /mnt
fi

Edit: if [ -z $1 ] à la ligne 3 marchera de façon + cohérente & correction multi-disques !
Par contre, j'en sors (du chroot) comme un sauvage par un simple <exit> puis en redémarrant (bon, c'est ce que l'on fait assez souvent après un "chrootage" en règle pour aller mesurer l'ampleur du sauvetage...)
C'est grâve (de rien démonter), Doc ?
Dernière modification par fassilil y a 9 ans, modifié au total 3 fois.

Os chroot (script) !

#2Messageil y a 9 ans

:salut: fassil,
Merci pour cette astuce, ce script peut effectivement simplifier la vie. Je garde sous le coude en cas de besoin :bien

Os chroot (script) !

#3Messageil y a 9 ans

Salut Erwan

De rien.
Sinon, ca se démonte tout seul pendant le reboot, mais est-ce bien dans les règles ?
Si oui, je vais le coller dans tous mes rebuild(iso) à partir de désormais...

Os chroot (script) !

#4Messageil y a 9 ans

petite question idiote
a quel point ma destination (ma manjaro) doit être compatible avec la distribution de boot ?
si j'ai une manjaro 32 bit vers 64 ?
boot d'une manjaro mais autre noyaux linux, autre version 3.10 -> 3.13 ?
Dernière modification par papajokeil y a 9 ans, modifié au total 1 fois.

Os chroot (script) !

#5Messageil y a 9 ans

En gros, si après avoir fait le exit du chroot tu fais un umount /mnt tu devrais avoir une erreur de système occupé. Voir aved lsof.
Donc procéder au démontage des bind puis du /mnt

Attention aussi le script échouera si on tente un chroot de 32 vers un système 64 bits et inversement.

Os chroot (script) !

#6Messageil y a 9 ans

#!/bin/bash

if [ -f $1 ] ;then #si le premier argument donné est un fichier existant, alors
   echo "Taper crooty X avec X comme n° (sdaX -> blkid) de la partition du système à chrooter" #dire un truc, fin
else #sinon
   sudo mount /dev/sda$1 /mnt #monter une partition du premier HDD (sda) de la partition n°$1, dans mnt
   sudo mount --bind /dev /mnt/dev #subtituer son /dev à la place du dev de cette autre partition.
   sudo mount -t proc /proc /mnt/proc #subtituer son /proc à la place du proc de cette autre partition
   sudo mount -t sysfs /sys /mnt/sys #subtituer son /sys  à la place du sys de cette autre partition
   sudo chroot /mnt  #chrooter dans cette autre partition
fi


Alors. Quelques choses me chiffonnent :
*"--bin" sert à monter quelque chose de déjà monté ; c'est le cas de /dev, mais de /proc et de /sys aussi, non ? Pourquoi l'enlever ?

*Pourquoi tu spécifies le type de /proc et de /sys pour ne pas le faire pour /dev ?

*Pourquoi "si $1 = fichier existant, s'arrêter" ? $1 on s’attend à ce que ce soit un nombre. Donc si je comprends bien, si je veux faire "./lescript 3" et que j'ai un fichier nommé "3" dans mon répertoire actuel, le script m'enverra un message informatif ?
Mhm, ça me semble bizarre.

Os chroot (script) !

#7Messageil y a 9 ans

fassil a écrit :Taper crooty X avec X comme n°

je préfère chrooty mais pas contre chrootage :siffle, voir frooty pour faire ton Frotti-frotta entre tes 2 manjaro

Os chroot (script) !

#8Messageil y a 9 ans

cep a écrit :En gros, si après avoir fait le exit du chroot tu fais un umount /mnt tu devrais avoir une erreur de système occupé. Voir aved lsof.
Donc procéder au démontage des bind puis du /mnt

Attention aussi le script échouera si on tente un chroot de 32 vers un système 64 bits et inversement.


Exactement, mais redémarrer sans rien démonter, est-ce grâve ? (à terme, ce sera intégré dans un live, donc grâve/pas grâve, pfuuu...)
J'ai arrêté le 32, pas assez fort :clindoeil: (merci pour l'info)

@Otyugh
Pour le if, il y'a un truc qui m'échappe aussi un poil, mais ça marche...(si + cohérent se présente, preneur :clindoeil: )

Os chroot (script) !

#9Messageil y a 9 ans

Sans rien tester, (j'espère n'avoir jamais besoin d'un tel script :p), j'aurais plutôt fait ça :

#!/bin/bash
if [ ! -z $1 ] && [ -a /dev/sda${1} ] ;then
   echo "Taper crooty X avec X comme n° (sdaX -> blkid) de la partition du système à chrooter"
else
   sudo mount /dev/sda$1 /mnt
   sudo mount -t dev --bind /dev /mnt/dev
   sudo mount -t proc --bind /proc /mnt/proc
   sudo mount -t sysfs --bind /sys /mnt/sys
   sudo chroot /mnt 
fi


C'est surtout pour le "if" que j'insisterai : autant ne pas l'utiliser : après une petite recherche "-f $1" ne fait que vérifier s'il y a un fichier "classique" au chemin donné par $1. Donc en fait ça fait pas ce qui était imaginé, je pense. /dev/sdX n'étant pas des fichiers normaux.
Pour ce qui est de la syntaxe de mount, j'ai pas essayé, mais ça me semble plus logique écrit ainsi, d'après le man.

Traduit en langage humain en imaginant $1 = "2":
-> [ -f $1 ] : si $1 (./2) est un fichier, alors vrai, sinon faux.

-> [ -z $1 ] : si $1 est vide, alors vrai ("2" c'est pas "vide", donc vrai)
-> [ ! -z $1 ] : si $1 n'est pas vide alors vrai ("2" c'est pas "vide", donc faux)
-> && : et (vrai et vrai = vrai ; vrai et faux = faux, faux et vrai = faux, faux et faux = faux)
-> [ -a /dev/sda$1 ] : si /dev/sda$1 existe (on cherche pas un fichier normal, comme avec -f), alors vrai, sinon faux. (ici on demande si /dev/sda2 existe)

:dormir:
J'écris un peu ça pour moi-même, je me rafraîchis la mémoire ; je comprends tout à fait que ce soit du chinois ^^ (moi-même, j'ai du mal à me relire T_T)

Os chroot (script) !

#10Messageil y a 9 ans

fassil a écrit :Exactement, mais redémarrer sans rien démonter, est-ce grâve ? (à terme, ce sera intégré dans un live, donc grâve/pas grâve, pfuuu...)

S'il y a extinction il y a de toute manière démontage de l'ensemble.

Regarde ton /etc/mtab et autres pour voir la présence du bind et donc le comportement propre lors de l'extinction.

Os chroot (script) !

#11Messageil y a 9 ans

@Otyugh
Cool, avec <if [-z $1]> qui vérifie l'existence du paramètre, ça va tout de suite mieux, niveau cohérence. :bien

Sinon, "déchrooter" comme un sauvage via exit & reboot, problème ?

Ps; Ca ira bien dans un live pour la "dépanne", mais sur un même DD d'un Os sur l'autre, un alias de chaque côté, ça va aussi bien (& c'est + simple, pfuuu...)

Os chroot (script) !

#12Messageil y a 9 ans

L'idéal, il me semble, c'est de faire un "sync" avant l'umount.
Pour les cartes SD, où la corruption est courante, sur leqeul on fait tourner un système régulièrement, on m'a bien signalé que c'était une garantie. Après je sais pas ce qu'il en est pour les périphériques lors de l'éteignage de la machine...

Os chroot (script) !

#13Messageil y a 9 ans

ne pas démonter n'est pas grave si on reboot après: l'arrêt de la machine va tout démonter, quoiqu'il arrive...

par contre, je suis assez de l'avis général: le if est bancal...
il aurait fallu juste envoyer le "echo "Taper crooty X avec X comme n° (sdaX -> blkid) de la partition du système à chrooter" " au cas où $1 est inexistant (pour indiquer à l'utilisateur qu'il faut un argument).

Os chroot (script) !

#14Messageil y a 9 ans

C'est fait, chef "Doc" :clindoeil:

Os chroot (script) !

#15Messageil y a 9 ans

j'aurais plutôt fait comme ça:

#!/bin/bash

case "$1" in
      /dev/sd*)
              sudo mount $1 /mnt
              sudo mount -t dev --bind /dev /mnt/dev
              sudo mount -t proc --bind /proc /mnt/proc
              sudo mount -t sysfs --bind /sys /mnt/sys
              sudo chroot /mnt
             ;;
       *)
             echo "vous devez donner le nom de la partition à chrooter comme argument"
             echo "ce nom doit être sous la forme /dev/sdXY où X est une lettre et Y un chiffre"
             echo "vous trouverez ce nom avec blkid"
             ;;
esac

pourquoi obligatoirement sda ? ça peut être sdb s'il y a plusieurs disques dans la machine...

Os chroot (script) !

#16Messageil y a 9 ans

O_ops, c'est la pratique du laptop...

Ha, quand les gros "basheurs" s'y mettent, ça rigole + :bien

Os chroot (script) !

#17Messageil y a 9 ans

enfin, ça reste pas très pro (si tu veux inclure ça dans un live); déjà, y a du sudo partout, et c'est pas top.
en plus, si tu envisages de partager, ce serait mieux que les messages soient en anglais (je pourrais te montrer après comment on fait un script en plusieurs langues).

#!/bin/bash

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

case "$1" in
      /dev/sd*)
              mount $1 /mnt
              mount -t dev --bind /dev /mnt/dev
              mount -t proc --bind /proc /mnt/proc
              mount -t sysfs --bind /sys /mnt/sys
              chroot /mnt
             ;;
       *)
             echo "You must give the partition name of the system to chroot"
             echo "it must be like /dev/sdXY where X is a letter and Y a number"
             echo "you can find it with blkid"
             ;;
esac

du coup tu le lances en root ou avec sudo, sinon tu as un message qui te le dit...

après, tu peux aussi faire une fonction qui recherche les partitions où il y a des Linux installés, et les propose avec un numéro... :siffle

Os chroot (script) !

#18Messageil y a 9 ans

après, tu peux aussi faire une fonction qui recherche les partitions où il y a des Linux installés, et les propose avec un numéro..

Il y a pas mal de temps que je m'étais fais un script plus ou moins adapté à mon pc ,mais c'est surtout cette détection numérotée un peu comme le fait yaourt qui manque...
L'idée d’intégrer un tel script dans une live usb était en fait ce que je cherchais à faire ,car ça deviendrait un outils essentiel pour réparer un système en vrac sans recopier les commandes à la main depuis un autre PC , mais je ne parviens pas à rendre la clé persistante .
On pourrait peut être reflechir ensemble d'une Iso "Couteau suisse" avec des outils spécifiques de réparation qu'on mettrait sur une clé.
Qu'en pensez-vous ?

Os chroot (script) !

#19Messageil y a 9 ans

Salut lemust83,

Que du bien, & amha une net-édition est une bonne base pour le "Victorinux". J'en ai rebuildé une allégée, farcie d'alias & dans laquelle on pourrait rajouter 2/3 scripts mais je ne comprends pas bien pourquoi tu as besoin de persistance ?

A suivre

Os chroot (script) !

#20Messageil y a 9 ans

Yo Fassil :bjr:
Soit on rend une clé persistante et on y rajoute un script "Chrooteur" ,soit on repart d'une iso basée Net'Edition ,ce qui me semble plus adapté.
Victorinux est excellent comme nom :clap
Commençons par collecter des idées d'outils de dépannage .On construira selon.
Répondre