On 03/27/2016 07:30 PM, Francois Lafont wrote:
On 27/03/2016 18:10, mireero wrote:
Tu pourrais pas faire simplement un:
# mount -o remount,ro /dev/sda1 && zerofree /dev/sda1
Oui j'avais tenté cela déjà mais la commande « mount -o remount,ro /dev/sda1 »
ne fonctionne pas. J'ai un message qui me dit que /dev/sda1 est occupé.
J'ai aussi tenté la commande alors que j'avais rebooté en mode recovery et
j'avais le même message d'erreur.
Je pensais que tu voulais peut-être protéger certains fichiers/dossiers contre
l'écriture/écrasement en passant tout en ro
Ah ok. Non, effectivement je ne suis pas dans ce cas. J'ai une commande à
lancer (une seule fois) et qui nécessite que / soit en read-only (temporairement
donc). Le mode recovery de Trusty répond parfaitement à mes besoins donc
mais pas celui de Jessie.
Quelques idées/pistes:
/var (ex: /var/run/*, var/log/*), /etc (ex: /etc/udev/rules.d/70*) et
/tmp vont poser problème.
Déjà, tu peux mettre /tmp en tmpfs dans /etc/fstab
Utiliser 'noatime' dans /etc/fstab
# mount -no remount,ro /dev/sda1
// l'option 'n' pour ne pas toucher à /etc/mtab qui va se trouver du
coup sur un système ro
$ fuser -v -m /
// Pour avoir une idée des processus qui utilisent le système de fichier /
$ lsof / | awk '$4 ~ /[0-9].*w/'
// Processus qui ont un fichier en cours d'écriture
// Chez moi, en mode single, je n'en ai que 2, hwdb et dhclient, si je
les tue, ça marche.
Tuer des services susceptibles d'écrire, par exemple:
# service rsyslog stop
# service network-manager stop
# killall dhclient
# systemctl stop systemd-journald.socket
# systemctl stop systemd-journald.service
Ou tu peux essayer simplement:
# telinit 1
# mount -no remount,ro /
Ça fonctionne chez moi, cela peut sembler curieux.
J'ai regardé un peu, c'est "/lib/init/mount-functions.sh" qui positionne
une variable $rootmode en la lisant dans 'fstab'. Ce fichier est sourcé
par "/etc/init.d/checkroot.sh" qui, après avoir vérifié le système de
fichier et s'être assuré qu'il est bien en read-only (on se demande un
peu à quoi sert l'option du kernel), le bascule en rw le cas échéant.
C'est donc checkroot.sh notre cible, et tu pourrais écraser la variable
$rootmode, mais il te faudrait une condition, du genre si j'ai démarré
en mode rescue, t'es à ro, sinon tu restes à rw.
En tout cas, il y a bien une différence booter directement en "single"
ou booter en "multi" puis basculer en "single".
D'ailleurs, on peut noter que checkroot.sh et dans le niveau d'exécution
S (pour start), donc qu'il n'est pas ré-exécuté quand on passe de 5 à 1.
Update: il est plus probable que ce script est ignoré et que le travail
est fait par systemd-remount-fs.service.
Dans fstab, on a par défaut l'option "errors=remount-ro", j'ai une idée
bête, créer une erreur délibérément (bon, je sais, no comment!).
Virtualbox ne fournirait-il pas des outils pour accéder/monter la
partition à partir de l'hôte (sans booter la VM donc)? C'est possible
avec VMWare par exemple.
Booter sur une iso Trusty en mode recovery, faire la manip.
Comparer les configurations de Trusty et Jessie et comprendre.
Voilà, bon courage (surtout si tu te lances dans le dernier point ;) )