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 ?
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
Dernière modification par fassilil y a 9 ans, modifié au total 3 fois.
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...
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
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 ?
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.
Mon Seen This : http://seenthis.net/people/cepcasa
Diaspora*: http://www.cyrille-borne.com/ Desktop Manjaro-Xfce x86_64 et Gnome-Shell Matériel full Intel
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.
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 (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 )
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
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)
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)
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.
Mon Seen This : http://seenthis.net/people/cepcasa
Diaspora*: http://www.cyrille-borne.com/ Desktop Manjaro-Xfce x86_64 et Gnome-Shell Matériel full Intel
@Otyugh Cool, avec <if [-z $1]> qui vérifie l'existence du paramètre, ça va tout de suite mieux, niveau cohérence.
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...)
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
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...
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).
Asus AIO - AMD E2 - Radeon HD 7340 - Manjaro 64 + Kf5 + Linux 3.14
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
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...
Asus AIO - AMD E2 - Radeon HD 7340 - Manjaro 64 + Kf5 + Linux 3.14
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
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...
Asus AIO - AMD E2 - Radeon HD 7340 - Manjaro 64 + Kf5 + Linux 3.14
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 ?
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!
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 ?
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
Yo Fassil 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 Commençons par collecter des idées d'outils de dépannage .On construira selon.
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!