• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Teile von /usr versehentlich gelöscht!

testit

Well-Known Member
Themenstarter #1
Guten Abend,

ich habe auf einem PC noch ein FreeBSD 8.4-RELEASE-p16 (GENERIC) #0 laufen.

Leider habe ich eben versehentlich (Ich wollte /usr in einem alten Backup-Verzeichnis löschen) mittels "rm -rf usr" einen Teil meines usr-Verzeichnisses gelöscht, bspw. das /bin. Befehle wie top, find, ps, grep etc. funktionieren nun nicht mehr. Glücklicherweise sind die /usr/home-Verzeichnisse alle noch intakt.

Frage:

Kann ich die Inhalte von /usr/bin wieder rekonstruieren / neu bauen?
Wo befinden sich eigentlich Befehle wie top, grep, locate usw?

Ich stelle diese Frage, weil ich unter o. a. FreeBSD 8.4 p16 eine VM mit FreeBSD 8.3-RELEASE-p11 (GENERIC) #0 laufen habe und dort unter /bin die o.a. Befehle nicht finde.

Kann ich notfalls versuchen, das FreeBSD 8.3-RELEASE-p11 auf p16 upzudaten und dann den Inhalt des /bin zu kopieren?

Danke im voraus und viele Grüße
testit
 

lme

FreeBSD Committer
#2
Du hast die wichtigsten Programme immer noch unter /rescue statisch gelinkt. Damit kannst du auf jeden Fall alles wieder beheben. Falls du unter /usr/src bzw. /usr/obj noch die Quellen und Binarys von 8.4 liegen hast, ist es am einfachsten, nach /usr/src zu gehen und ein "make installworld" auszuführen.
Ansonsten lädst du dir das 8.4er ISO runter, mountest das mit /rescue/mdconfig und mount nach /mnt und entpackst dann den Base-Tarball unter /mnt/usr/release oder so ähnlich. Aber wichtig: auf jeden Fall vorher ein Backup von /etc anlegen!
 

testit

Well-Known Member
Themenstarter #5
Du hast die wichtigsten Programme immer noch unter /rescue statisch gelinkt. Damit kannst du auf jeden Fall alles wieder beheben. Falls du unter /usr/src bzw. /usr/obj noch die Quellen und Binarys von 8.4 liegen hast, ist es am einfachsten, nach /usr/src zu gehen und ein "make installworld" auszuführen.
Ansonsten lädst du dir das 8.4er ISO runter, mountest das mit /rescue/mdconfig und mount nach /mnt und entpackst dann den Base-Tarball unter /mnt/usr/release oder so ähnlich. Aber wichtig: auf jeden Fall vorher ein Backup von /etc anlegen!

Hallo,

vielen Dank für Deinen Hinweis!

In meinem /rescue-Verzeichnis liegen in der Tat mehrere Programme, deren Größe bei ALLEN mit 5011464 angegeben wird. Diese Dateien einfach in /usr/bin zu kopieren, scheint ja nicht auszureichen. Zumindest hatte ich das mal mit SED gemacht und konnte SED danach im /usr/bin nicht aufrufen. Auch im /rescue-Verzeichnis selbst führt bspw. ein "tail" zur Ausgabe "command not found".

/usr/ob ist leer, aber /usr/src scheint offenbar noch alles vorzuhalten.

Liege ich richtig in der Annahme, dass ich daher vor "make installworld" noch ein "make buildworld" starten muss?


Viele Grüße
testit
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#9
Das Problem ist, dass "make buildworld" am Anfang 'clang' und 'make' aus dem Host braucht. Und beide liegen unter /usr/bin. Du kannst es probieren, aber die Chancen, dass noch genug da ist, sind vielleicht 50:50. Alternativ könntest du dir das fertige System aus dem Archiv laden: http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.4-RELEASE/base/ Und dann entpacken, aber nicht und auf gar keinen Fall über /:

Code:
cat base.a* base.b* | tar xfvp -
Dann das Heraussuchen was du brauchst. Das ist nun aus vager Erinnerung geschrieben, 8.x ist lange her. Müsste aber so ähnlich gehen.
 
#10
Hallo,

In meinem /rescue-Verzeichnis liegen in der Tat mehrere Programme, deren Größe bei ALLEN mit 5011464 angegeben wird. Diese Dateien einfach in /usr/bin zu kopieren, scheint ja nicht auszureichen. Zumindest hatte ich das mal mit SED gemacht und konnte SED danach im /usr/bin nicht aufrufen. Auch im /rescue-Verzeichnis selbst führt bspw. ein "tail" zur Ausgabe "command not found".
Die sind alle gleich gross, weil es immer die gleiche Datei ist (siehe ls -li /rescue). Dahinter versteckt sich crunchgen(1).
Diese Dateien sind nicht zum rueberkopieren nach /usr/bin u.ae. gedacht, sondern MIT diesen einen restore oder was auch immer hinzubekommen.
Wenn Du in /rescue bist, musst du das mit ./ aufrufen, oder mit komplettem Pfad
Code:
[double-p@ns /rescue]$ ./whoami
double-p
[double-p@ns /usr/bin]$ /rescue/ls | /rescue/tail -1
ztest
 

testit

Well-Known Member
Themenstarter #11
Guten Abend,

Ich stelle diese Frage, weil ich unter o. a. FreeBSD 8.4 p16 eine VM mit FreeBSD 8.3-RELEASE-p11 (GENERIC) #0 laufen habe und dort unter /bin die o.a. Befehle nicht finde.

Kann ich notfalls versuchen, das FreeBSD 8.3-RELEASE-p11 auf p16 upzudaten und dann den Inhalt des /bin zu kopieren?

Danke im voraus und viele Grüße
testit
Hallo,

ich stelle gerade fest, dass ich bei meiner Eingangsfrage eine andere FreeBSD-Versionsnummer in der VM meinte:

"Kann ich notfalls versuchen, das FreeBSD 8.3-RELEASE-p11 auf FreeBSD 8.4-RELEASE-p16 upzudaten und dann den Inhalt des /bin zu kopieren?

Viele Grüße
testit
 

testit

Well-Known Member
Themenstarter #12
Die sind alle gleich gross, weil es immer die gleiche Datei ist (siehe ls -li /rescue). Dahinter versteckt sich crunchgen(1).
Diese Dateien sind nicht zum rueberkopieren nach /usr/bin u.ae. gedacht, sondern MIT diesen einen restore oder was auch immer hinzubekommen.
...
[/code]
Herzlichen Dank für die Erläuterungen!

Viele Grüße
testit
 

testit

Well-Known Member
Themenstarter #13
Hallo Yamagi,

vielen Dank für Deine Tipps!

Fragen:

Kann ich alternativ auch die ISO aus
http://ftp-archive.freebsd.org/pub/...AGES/8.4/FreeBSD-8.4-RELEASE-amd64-livefs.iso
mounten und mir die benötigten Sachen kopieren?

Welche Rolle spielen denn eigentlich die Patchlevel?
Vermutlich wird o. a. livefs.iso nicht ausgerechnet FreeBSD 8.4 p16 sein.

Viele Grüße
testit


Das Problem ist, dass "make buildworld" am Anfang 'clang' und 'make' aus dem Host braucht. Und beide liegen unter /usr/bin. Du kannst es probieren, aber die Chancen, dass noch genug da ist, sind vielleicht 50:50. Alternativ könntest du dir das fertige System aus dem Archiv laden: http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.4-RELEASE/base/ Und dann entpacken, aber nicht und auf gar keinen Fall über /:

Code:
cat base.a* base.b* | tar xfvp -
Dann das Heraussuchen was du brauchst. Das ist nun aus vager Erinnerung geschrieben, 8.x ist lange her. Müsste aber so ähnlich gehen.
 

testit

Well-Known Member
Themenstarter #15
Das Problem ist, dass "make buildworld" am Anfang 'clang' und 'make' aus dem Host braucht....
Dann das Heraussuchen was du brauchst. Das ist nun aus vager Erinnerung geschrieben, 8.x ist lange her. Müsste aber so ähnlich gehen.
Hi,

clang kam meines Wissens erst in FreeBSD => V10 auf. GCC und MAKE sind noch vorhanden.

Viele Grüße
testit
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#18
Ja, kannst du. Da sind allerdings auch keine anderen Dateien drin, als einzeln auf dem FTP-Server liegen.