Ich habe auf einem meiner Server eine wirklich schlechte Entscheidung getroffen.
Ich habe gelöscht /bin/sh
. Ich habe den Server neu gestartet und der Server wird nicht ausgeführt, da er /bin/sh
die RC-Skripte starten muss. Ich kann auch nicht auf den Einzelbenutzermodus zugreifen, da sh benötigt wird.
Gibt es eine einfache Möglichkeit, die Bourn-Shell neu zu installieren?
Ich habe versucht, sh von einer Live-CD zu kopieren. Dies ist in der Bibliothek ld-elf.so.1 fehlgeschlagen. Also habe ich das von der livecd nach / libexec auf meine / partition kopiert. Es braucht dann die Bibliothek libedit.so und ich habe sie nach / libexec kopiert, aber diesmal funktioniert es nicht.
Ich habe versucht, einen Symlink zu zu erstellen, /usr/local/bin/bash
aber das zeigt immer noch den Fehler "kann sh nicht finden" an. Ich gehe davon aus, dass dies daran liegt, dass /usr
es noch nicht gemountet ist, weil es über ein RC-Skript erstellt wurde.
Jede Hilfe wird sehr geschätzt.
Antworten:
Sie müssen / bin / sh durch etwas ersetzen ; Das ist der Schlüssel. Wenn Sie während des Startvorgangs (mit der Aufforderung "OK") in den FreeBSD-Loader gelangen können, versuchen Sie Folgendes:
Ich habe diese Informationen von Loader (8) aus den FreeBSD-Handbuchseiten (online) erhalten. Ich habe dies nicht getan, aber es sollte funktionieren (vorausgesetzt, / bin / csh ist vorhanden und ausführbar).
Wenn Sie einen FreeBSD 8.2-Server haben, der an einem anderen Ort ausgeführt wird, können Sie versuchen, / bin / sh von dieser Quelle zu stehlen und bei Bedarf in das System zu integrieren.
Alternativ können Sie auch ein statisch erstelltes / bin / sh abrufen und dieses stattdessen eingeben. Bei einer statisch erstellten Binärdatei treten keine Bibliotheksprobleme auf.
EDIT: Ich hätte beachten sollen: Wenn Sie in / bin / csh booten, müssen Sie immer noch etwas anstelle von / bin / sh verwenden. Sie können es über das Internet herunterladen oder von einer anderen CD oder einem Paket oder etwas anderem kopieren. Wenn Sie zum Starten / bin / csh verwenden, gelangen Sie in den Computer. Für das Kopieren über das Netzwerk müssen Sie das Netzwerk aufrufen. Andernfalls kopieren Sie von einer CD-ROM.
Die besten Möglichkeiten, dies in Zukunft zu vermeiden:
Mach alle drei.
quelle
OK, zuerst die Vorlesung:
Verwirren Sie nicht mit Systembinärdateien
Alleswas in
/bin
,/sbin
und/rescue
auf FreeBSD sollteRuhe gelassen werden. Selbst wenn Sie wissen, was Sie tun (wenn Sie wissen, was Sie tun, wissen Sie auch, dass diese in Ruhe gelassen werden sollten. Sie sind wirklich wichtig - alle!)NICHT löschen
/bin/sh
. JE. Auf jedem * NIX-System, das es hat.Ja wirklich. Tu es nicht. A LOT von Skripten stützen sich auf
/bin/sh
eine BourneShellsein. Es bricht das Universum.Wenn Sie WIRKLICH möchten, können Sie es wahrscheinlich sicher durch eine Kopie von
bash
Adam Zersetzen, aber wenn Sie dies tun, möchtenSiediese Kopiemöglicherweise statisch verknüpfenbash
- Sie zieht viele Bibliotheken ein, und Sie Möglicherweise haben Sie diese erst, wenn das System hochgefahren und/usr/local
montiert ist.Wie kann man das Chaos beheben? Zwei Optionen:
Option 1: Etwas schmerzhaft
Kopf auf mehr als auf http://www.freesbie.org/ (oder FreeBSD LiveCD Ihrer Wahl - Sie könnenwahrscheinlich auch die RecoveryCD verwendenvon http://www.freebsd.org für diese). Holen Sie sich die LiveCD, brennen Sie sie und starten Sie sie.
Sobald Sie sich in der LiveCD-Umgebung befinden, mounten Sie die Root-Partition Ihres kaputten Systems, kopieren Sie die
/bin/sh
von der LiveCD auf Ihren Computer und starten Sie sie neu.Dies sollte Sie wieder zum Laufen bringen - Möglicherweise möchten Sie den Anweisungen zum Neuerstellen von "World" folgen oder zumindest
/bin/sh
aus einem Quellbaum neu kompilieren , der Ihrem laufenden System entspricht.Option 2: Weniger schmerzhaft, keine
Live-CD Wenn Sie eine andere FreeBSD-Box in der Nähe haben, von der Sie abheben können (oder auf andere Weise, um eine Kopie davon zu erhalten)
/bin/sh
,rufen SieIhren FreeBSD-Computer im Einzelbenutzermodus auf. Konfigurieren Sie das Netzwerk (oder mounten Sie es) Auf jedem Medium befindet sich die Ersatzhülle. Kopieren Sie sie an die Stelle, an der sie sich befinden soll.Starten Sie neu und Sie sollten in Ordnung sein - die gleichen Einschränkungen wie bei der LiveCD, wenn
/bin/sh
Sie sie jedoch nicht von einem annähernd identischen Computer beziehen.quelle
/bin
ist nicht mehr statisch verknüpft. Ich denke, die Rescue-CDs für die entsprechende Version von FreeBSD haben eine verwendbare Shell (dh eine, die einfach an Ort und Stelle abgeladen werden kann), aber es ist schon eine Weile her, seit ich eine gebootet habe ...Anstatt zu verknüpfen, kopieren Sie Ihre
bash
in/bin/sh
. Verwenden Sie denldd
Befehl, um Bibliotheken zu finden, die sich möglicherweise auf anderen Dateisystemen als rootfs befinden, und kopieren Sie sie auch in rootfs.quelle