Ich versuche zerofree
unter Ubuntu 11.04 zu laufen, damit ich das VirtualBox-VDI-Image komprimieren kann:
VBoxManage modifyhd Ubuntu.vdi --compact
Zum Ausführen muss zerofree
das Disk-Image als schreibgeschützt gemountet sein. Ich folge diesen Anweisungen, die besagen, dass diese verwendet werden müssen, um die Bereitstellung im Wiederherstellungsmodus als schreibgeschützt wieder aufzunehmen (Aufforderung "In Root-Shell ablegen"):
mount -n -o remount,ro -t ext2 /dev/sda1 /
Aber wenn ich das tue, bekomme ich den Fehler:
mount: / is busy
Irgendwelche Ideen, wie das geht?
Follow-up : Das Befolgen der Antwort von Jari und dieses Posts durch Ausführen dieser Befehle behebt das Problem.
service rsyslog stop
service network-manager stop
killall dhclient
ubuntu
mount
virtualbox
Wellenförmige Krabbe
quelle
quelle
telinit 1
und das hat das Problem für mich gelöst.Antworten:
Einige Prozesse halten Dateien zum Schreiben offen. Dies können zum Beispiel Programme sein, die Protokolle schreiben, wie zum Beispiel
rsyslogd
Netzwerktoolsdhclient
oder ähnliches . Das Herunterfahren nacheinander und das Ausprobieren des Remounts könnten funktionieren.Sie können Prozesse finden, die bestimmte Dateien verwenden, indem Sie das Programm verwenden
fuser
. Beispielsweisefuser -v -m /
wird eine Liste von Prozessen zurückgegeben. Ich bin mir jedoch nicht sicher, ob es einer davon ist, der das Dateisystem beschäftigt.quelle
F
die Zugriffsflags in derfuser
Ausgabe groß geschrieben.Sie können das Dateisystem nur dann schreibgeschützt erneut bereitstellen, wenn kein Prozess vorhanden ist, bei dem eine Datei zum Schreiben geöffnet ist. Führen Sie
lsof /
den Befehl aus, um festzustellen, für welche Prozesse Dateien im Root-Dateisystem geöffnet sind. Zum Schreiben geöffnete Dateien werden in derFD
Spalte angezeigt . Sie können diese mit filternUm die Prozess-IDs automatisch zu filtern, analysieren Sie die Ausgabe von
lsof -F pa
:quelle
u
), und es wird weiterhin "beschäftigt" angezeigt.Peter Antwort verbessern:
Ich konnte keine Prozesse beenden, die meinen Bereitstellungspunkt verwenden. Also habe ich das gemacht:
/etc/fstab
, um beim nächsten Start schreibgeschützt zu starten. Ex:/dev/sda1 / ext2 ro 0 1
So stellen Sie Ihr System wieder her:
$ mount -o remount,rw /dev/sda1
/etc/fstab
erneut und stellen Sie Ihren ursprünglichen Wert wieder herExtra: Öffnen Sie ggf. den Wiederherstellungsmodus in einem beliebigen Schritt:
quelle
/dev/sda1 / ext2 ro 0 1
Eintrag ganz oben auf der Liste stand. Als ich es zum ersten Mal als letzten Eintrag eingegeben habe, hatte ich immer noch den Fehler "Bereitstellungspunkt belegt".Es gibt manchmal so viele Prozesse, die den Mount beschäftigen, dass es einfacher sein kann, einfach mit dem Mount-Schreibschutz neu zu starten.
Ändern Sie den Eintrag für das Root-Dateisystem in
/etc/fstab
, zum Beispiel:wird:
Beim Neustart wird das Dateisystem schreibgeschützt bereitgestellt, sodass Sie es ausführen
zerofree
können.Wenn Sie fertig sind, hängen Sie das Dateisystem mit Lese- / Schreibzugriff erneut ein (
mount -o remount,rw /
) und machen Sie Ihre Änderungen an rückgängig/etc/fstab
.Inspiriert von https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root
quelle
/dev/sda1 / ext2 ro 0 1
Ihrer Information , ich habe genau das verwendet und konnte im schreibgeschützten Modus booten.Wenn Sie Ihr Gerät nach dem Beenden aller Dienste und Prozesse mit geöffneten Dateien immer noch nicht trennen oder erneut bereitstellen können, ist möglicherweise eine Auslagerungsdatei oder eine Auslagerungspartition vorhanden, die Ihr Gerät beschäftigt. Dies wird nicht mit
fuser
oder angezeigtlsof
. Swap deaktivieren mit:Sie könnten vorher prüfen und eine Zusammenfassung aller Swap-Partitionen oder Swap-Dateien anzeigen mit:
oder:
Alternativ zur Verwendung des Befehls
sudo swapoff -a
können Sie den Swap möglicherweise auch deaktivieren, indem Sie einen Dienst oder eine Systemeinheit stoppen . Beispielsweise:oder:
In meinem Fall war das Deaktivieren von Swap erforderlich, zusätzlich zum Stoppen aller Dienste und Prozesse mit zum Schreiben geöffneten Dateien, damit ich meine Root-Partition erneut als schreibgeschützt bereitstellen konnte, um sie
fsck
auf meiner Root-Partition ohne Neustart auszuführen . Dies war auf einem Raspberry Pi mit Raspbian Jessie notwendig.quelle
Wenn Sie systemd verwenden, werden die Schreibvorgänge auf der Festplatte durch Stoppen von systemd-journald gestoppt.
quelle
Ok, da ist was ich getan habe
Zunächst war mein Ziel , meine
/
(ROOT
) -Partition zu verkleinern , um eine weitere auf meiner Festplatte hinzuzufügen.Nach dem Ausführen der Sitzung wird alles gesäubert und gesichert:
Mein Desktop verschwindet und ich bin jetzt auf der Linux-Konsole ...
Versuchen Sie nun,
/
im schreibgeschützten Modus bereitzustellen:Ok, von jetzt an bin ich dabei theoretisch im Einzelbenutzermodus ,
ps ax
zeige aber eine Menge anderer Prozesse !!Sie alle zu töten ist nicht wirklich möglich oder gefährlich ... (
kill 1
ist verboten ... Ich habe keine Zeit zum Spielen psdoom :-)Das Einzige, was ich tun kann, ist
System Request
, dass ich zwei Möglichkeiten kenne: (sieheDocumentation/sysrq.txt
Datei in den Kerneldokumenten):Verwenden Sie zuerst den
magic SysRq key
Tastaturkernel-Trap:Emergency sync
Anfrage an den Kernel und gesendetUmount all
Anfrage senden , dies wird alle eingebundenen Dateisysteme wieder einbinden,Oder über die Befehlszeile:
Dann könnte ich jetzt
....
...
quelle
fsck
erfolgreich war, habe ich ein Live-USB gebootet, um laufen zu könnenresize2fs
... Diese Funktion ist nicht bereits implementiert ...fsck
weiß es nicht-f
; Was würde das tun, null nicht referenzierte Blöcke?ext2
, auch wenn das Dateisystem sauber zu sein scheint.fsck
-f
Für alle, die nur nach einer schnellen Lösung suchen, um sie in Ihr Terminal einzufügen ...
(Bevor Sie die folgenden Befehle ausführen, stellen Sie sicher, dass Sie die anderen Schritte wie ausgeführt haben
telinit 1
.)Fand dies :
Befehle können Ihre Sitzung beenden, aber nachdem Sie zurückgekehrt sind, kann Ihre Partition erneut bereitgestellt werden.
quelle
Hängen Sie die VDI-Datei als zusätzliches und systemfremdes Volume an eine andere VirtualBox an. Dort können Sie es nach Bedarf (neu) mounten und die Nullung durchführen.
Angenommen , Sie möchten die VDI-Festplatte von VM1 (Virtual Machine 1) komprimieren . Dann brauchst du eine zweite VM2 . Das ist, :
Vom VirtualBox Manager aus:
"Einstellungen" -> "Storage" -> "Add Hard Disk": ,
Wählen Sie die VDI-Datei von VM1 aus, die Sie komprimieren möchten. Tipp: Stellen Sie sicher, dass die gerade zu VM2 hinzugefügte Festplatte in der Startreihenfolge nach der Originalfestplatte von VM2 an zweiter Stelle steht.
mount -l
zu ermitteln, welches_Device_
im Befehl enthalten istsudo mount -o remount,ro _Device_
. In meinem Fall war das / dev / sdb1 . Der Befehl lautete also (1)sudo mount -o ro,remount /dev/sdb1
und dann (2)sudo zerofree /dev/sdb1
.Anstelle von VM2 sollte man in der Lage sein, von einer Installationsdiskette wie einem .iso-Image zu booten und dies zu erreichen, ABER ich habe es nicht ausprobiert.
quelle
Ich gehe davon aus, dass Sie versuchen, den
mount
Befehl in der VM auszuführen . Wie auch immer, Sie haben wahrscheinlich eine andere Root-Partition als der Autor des Forumsbeitrags.Versuchen:
Was nicht von der Option fs oder mount abhängt. Wenn dies nicht funktioniert, können Sie auch versuchen, Ihre Root-Fs mit
grep " / " /proc/mounts
oder zu ermittelncat /proc/cmdline
. Wenn Ihr Root-Dateisystem beispielsweise / dev / mapper / system-rootfs ist, können Sie Folgendes verwenden:quelle
Ich hatte dieses Problem, das mich davon abhielt, meinen Computer in den schreibgeschützten Modus zu versetzen. Die Lösung des Problems hat länger gedauert, als ich zugeben wollte ... Ich glaube, mein Problem war, dass ich Apache-Zeppelin am Laufen gelassen und vergessen habe. Stellen Sie sicher, dass Sie nicht dasselbe mit einem anderen Hosting-Dienst tun. Um das Problem zu lösen
fuser -kill /
, beendete ich alle Prozesse, die das Problem verursachen könnten, und konnte in den Ro-Modus zurückkehren.quelle
Die Lösung für mich war, das Betriebssystem neu zu starten und "Wiederherstellungsmodus" aus dem GRUB-Startmenü zu wählen. Ab dem "Wiederherstellungsmodus" werden weniger Prozesse ausgeführt, und das erneute Bereitstellen mit Lesezugriff funktioniert einwandfrei.
Verfügt das System über eine Auslagerungsdatei im Root-Dateisystem (anstelle einer Auslagerungspartition), muss die Auslagerungsdatei auch vorübergehend mit ausgeschaltet werden
swapoff -a
.quelle