Okay, wenn jemand Gott spielen und Wunder wirken will, bin ich am Boden.
Also wurde mir die Aufgabe übertragen, ein Skript zu erstellen, das Dateien findet, die älter als 6 Monate sind, sie komprimiert und dann gelöscht hat. Auf dem Weg zu diesem Skript habe ich Folgendes ausgeführt:
find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla
Und das gab JEDER EINZELNEN DATEI eine .gz-Erweiterung. Jetzt habe ich es rückgängig gemacht, sobald ich es bemerkt habe, aber es war irgendwie zu spät. Nach Abschluss des Befehls würde keiner meiner Bash-Befehle funktionieren, da sich die Variable $ PATH selbst geleert hat. Ich habe viele Dinge ausprobiert, bevor mir klar wurde, was das Problem war.
Nachdem ich alles entpackt habe, kann ich immer noch nicht booten. Ich habe es geschafft, es zu retten, nachdem ich die Online-Anweisungen befolgt habe für:
root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]
Danach bootet mein Linux teilweise aber gibt mir folgende Fehler:
Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.
Ich habe versucht, das Dateisystem zu reparieren. Ich habe von 3 verschiedenen LiveCDs / Rescue-Festplatten gebootet. Ich habe die Boot-Reparatur von 2 verschiedenen Dicsc ausgeführt. Ich habe fscks gezwungen ...
Ich habe wirklich keine Ideen mehr und ich MUSS diesen Server zumindest zum Booten bringen, damit ich meine SQL-Datenbanken wiederherstellen kann. Ich bin verzweifelt nach Hilfe, ich werde sogar bezahlen, wenn es sein muss.
Ich habe den ganzen Tag 3 Tage lang in Foren gelauert, um eine mögliche Lösung zu finden, und ich bin immer noch am selben Punkt ... Hilfe bitte?
because of version differences,
Neuinstallation mit genau der gleichen Version.we have corruption issues,
Ihre Daten sind möglicherweise beschädigt. Das Reparieren des Systems, damit es bootfähig ist, hilft Ihnen nicht, wenn die Daten in den Papierkorb verschoben wurden. Wenn Ihr Befehl gzip Ihre Datenbankdateien komprimiert hat, während die Datenbank verwendet wurde, ist eine Beschädigung unvermeidlich.Antworten:
Dies hängt davon ab, ob die Dateisysteme so repariert sind, dass Sie diese Partitionen von einer LiveCD mounten können. Versuchen Sie noch nicht, das System zu starten. Hängen Sie zuerst die Partitionen ein und entpacken Sie alle .gz-Dateien. Auf diese Weise erhalten Sie Arbeitskopien der Init- und System-Binärdateien. Dann können Sie grub verwenden, um den Bootsektor zu reparieren. Starten Sie dann im Einzelbenutzermodus und überprüfen Sie das Dateisystem erneut. Wenn das funktioniert, haben Sie ein laufendes System. Sie haben auch eine Reihe von entpackten Dateien (wie Manpages), die wirklich komprimiert werden sollten, aber es ist besser als ein nicht bootfähiges System.
Wenn Sie die Partitionen nicht von einer LiveCD mounten können, haben Sie leider kein Glück. Zu diesem Zeitpunkt wird Ihr System durch nichts wiederhergestellt.
quelle
Das erste, was ich versuchen würde, ist eine LiveCD-Umgebung auszuführen und einfach zu versuchen, alles zu entpacken, in der Hoffnung, dass das System wieder in einen bootfähigen Zustand versetzt wird. Hinweis: Ich wäre besorgt über eine mögliche Datenbeschädigung, wenn der ursprüngliche gzip-Prozess unterbrochen würde.
Andernfalls würde ich versuchen, die Datenbank auf ein neues System zu migrieren, wie andere vorgeschlagen haben. Wie Sie jedoch festgestellt haben, kann es zu arbeitsintensiven Abhängigkeits- und Konfigurationsproblemen kommen, die einzeln gelöst werden müssen.
quelle
Der allgemeine Konsens hier, dass Sie nur die Festplatte in ein funktionierendes System einbinden und Ihre Dateien retten sollten, ist nicht falsch. Es ist die vernünftige Sache zu tun. Aber der andere Weg macht mehr Spaß und ist sehr lehrreich. Ich habe viel gelernt, als ich mich aus chaotischen Situationen herausgekämpft habe, in denen andere Leute einfach aufgegeben und von Grund auf neu installiert hätten. (Nicht auf einem Server, von dem andere abhängig sind ...)
Sowieso haben Sie bisher ein initramfs (initrd), das ausgeführt wird. Das ist ein guter Anfang. Aber es kann die Übergabe an init nicht abschließen, weil init jetzt
init.gz
vielleicht ist? Um Fortschritte zu erzielen, ist es hilfreich, genau zu wissen, über welche Linux-Distribution Sie verfügen, damit wir nachschlagen können, welche Tools in den Initramfs für den Notfall verfügbar sind.Die von Ihnen präsentierten Fehlermeldungen scheinen von Debians initramfs zu stammen. Wenn es Debian ist, sollten Sie
(initramfs)
in der nächsten Zeile nach dem letzten Fehler eine Shell-Eingabeaufforderung erhalten haben. Wenn Sie dies getan haben, sollten Sie untersuchen, was mit diesen ausgefallenen Reittieren los ist. ist/root/dev
fehlt? (/root
Hier sollten Ihre normalen Root-Fs während der Ausführung von initramfs gemountet werden.)Wenn Sie die Shell-Eingabeaufforderung nicht erhalten haben, ist das, was danach kam
No init found. Try passing init= bootarg.
, interessant. Auch wenn es nur ein blinkender Cursor war, ist das ein Hinweis. Wenn es völlig eingefroren erscheint, versuchen Sie, mithilfe von Magic Sysrq oder Strg + ScrollLock Informationen darüber zu erhalten, welche Prozesse noch laufen.Mit dem Debian-Initramfs können Sie auch eine Shell an einigen speziellen Orientierungspunkten anfordern, indem Sie
break=
der Kernel-Befehlszeile einen Parameter hinzufügen .Running /scripts/init-bottom
Verwenden Sie beispielsweise, um eine Shell vor der Zeile abzurufenbreak=bottom
.Nebenbei: Ich weiß nicht, wie der
find
Befehl jede Datei komprimiert haben könnte ... er sieht für mich richtig aus, um Dateien zwischen 180 und 400 Tagen alt auszuwählen.quelle
break=bottom
?) ... ja, bis es versucht zu mounten/root/dev
und/root/proc
und/root/sys
,/root
sollte das echte Root-Dateisystem sein. Es muss früher eine Fehlermeldung aufgetreten sein, dass das Mounten fehlgeschlagen ist. Haben Sie einenroot=
Parameter in die Kernel-Befehlszeile aufgenommen? Mein Gedächtnis ist in diesem Punkt etwas verschwommen, aber ich denke, dasroot (hd0,0)
sagt grub nur, wo sich seine Unterstützungsdateien befinden, und Sie müssen dem Kernel immer noch separat mitteilen, wo sich das Stammverzeichnis befindet.(initramfs)
Eingabeaufforderung aus montieren , so etwas wiemount -r /dev/sda1 /root
?cat /proc/partitions
um zu sehen, welche Festplatten verfügbar sind.