Ich versuche, es zerofree
unter Ubuntu 11.04 auszuführen, damit ich das VirtualBox-VDI-Image mit folgendem komprimieren kann:
VBoxManage modifyhd Ubuntu.vdi --compact
Um zerofree
das Disk-Image ausführen zu können, muss es schreibgeschützt gemountet werden. Ich folgediese AnweisungenDarin steht, dass dies zum erneuten Bereitstellen im schreibgeschützten Zustand aus dem Wiederherstellungsmodus (Zur Root-Shell-Eingabeaufforderung wechseln) verwendet werden soll:
mount -n -o remount,ro -t ext2 /dev/sda1 /
Aber wenn ich das mache, erhalte ich die Fehlermeldung:
mount: / is busy
Irgendwelche Ideen, wie das geht?
Nachverfolgen: Nach Jaris Antwort unddieser BeitragDurch Ausführen dieser Befehle wird das Problem behoben.
service rsyslog stop
service network-manager stop
killall dhclient
Antwort1
Einige Prozesse halten Dateien zum Schreiben geöffnet. Dies können beispielsweise Programme sein, die Protokolle schreiben, wie rsyslogd
, Netzwerktools, wie dhclient
oder etwas anderes. Das Herunterfahren dieser Programme nacheinander und der erneute Versuch, sie erneut zu mounten, könnte funktionieren.
Mit dem Programm können Sie Prozesse finden, die bestimmte Dateien verwenden fuser
. Beispielsweise fuser -v -m /
gibt eine Liste der Prozesse zurück. Ich bin mir jedoch nicht sicher, ob es einer davon ist, der das Dateisystem beschäftigt.
Antwort2
Verbesserung von Peters Antwort:
Ich konnte Prozesse, die meinen Einhängepunkt verwenden, nicht beenden. Also habe ich Folgendes gemacht:
- Bearbeiten
/etc/fstab
, um beim nächsten Start schreibgeschützt zu starten. Beispiel:/dev/sda1 / ext2 ro 0 1
- Starten Sie neu und öffnen Sie eine Shell (z. B. Host-Taste + F2).
- Führen Sie zerofree aus
So „stellen“ Sie Ihr System wieder her:
- Mounten mit Lese-/Schreiboption:
$ mount -o remount,rw /dev/sda1
- Erneut bearbeiten
/etc/fstab
und den ursprünglichen Wert wiederherstellen
Extra: bei Bedarf öffnenWiederherstellungsmodusin jedem Schritt:
- Neustart
- Halten Sie die Umschalttaste gedrückt, während die VM geladen wird
- Erweiterte Optionen > Kernel-Option mit Wiederherstellungsmodus > Drop to Root Shell Prompt
Antwort3
Sie können das Dateisystem nur schreibgeschützt erneut mounten, wenn kein Prozess eine Datei zum Schreiben geöffnet hat. Führen Sie den Befehl aus, lsof /
um zu sehen, welche Prozesse Dateien im Root-Dateisystem geöffnet haben. Dateien, die zum Schreiben geöffnet sind, werden in der Spalte angezeigt FD
. Sie können diese filtern mit
lsof / | awk '$4 ~ /[0-9].*w/'
Um die Prozess-IDs automatisch zu filtern, analysieren Sie die Ausgabe von lsof -F pa
:
lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'
Antwort4
Manchmal ist das Mount durch so viele Prozesse ausgelastet, dass ein Neustart mit schreibgeschütztem Mount einfacher sein kann.
Ändern Sie den Eintrag für das Root-Dateisystem in /etc/fstab
beispielsweise:
/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1
wird:
/dev/sda1 / ext2 noatime,ro 0 1
Beim Neustart wird das Dateisystem schreibgeschützt gemountet, sodass Sie zerofree
darauf arbeiten können.
Wenn Sie fertig sind, mounten Sie das Dateisystem erneut schreibgeschützt ( mount -o remount,rw /
) und machen Sie Ihre Änderungen rückgängig /etc/fstab
.
Inspiriert vonhttps://wiki.debian.org/ReadonlyRoot#Enable_readonly_root