Jak mówi nagłówek, wszystko lub prawie wszystko ważne, ponieważ root w root (/) został przeniesiony do / old na komputerze z systemem Solaris 10. Więc teraz, gdy próbuje typowe usterki podczas uruchamiania polecenia są Cannot find /usr/lib/ld.so.1
(zmieniła $PATH
i również próbował zmianie $LD_LIBRARY_PATH
, $LD_LIBRARY_PATH_64
a $LD_RUN_PATH
ich i eksportu, ale nic z tego zdaje się zmienić ścieżkę biblioteki Real). Próbowałem wczoraj znaleźć coś, co może pomóc, ale nie znalazłem niczego, co faktycznie zmieni ścieżkę biblioteki dla Solaris 10, niż być może, crle
ale od tego czasu nie można uruchomić Cannot find /usr/lib/ld.so.1
.
Znalazłem wiele porad dotyczących odzyskiwania roota / / usr / bin i tak dalej dla Linuksa, ale te informacje na temat Solaris 10 / Unix nie są powszechne i bardzo rzadkie.
Nie można uruchomić cp
, ln
, mkdir
lub mv
od Cannot find /usr/lib/ld.so.1
. Nie można zalogować się przy użyciu innych sesji na komputerze. Chociaż jedna sesja jest nadal aktywna, z której można korzystać, a okno jest zablokowane while true; do date; echo hej 1234567; done
. Omówiliśmy rozwiązanie polegające na użyciu rozruchowej płyty CD Solaris, a także dystrybucji Linux na dysku USB. Omówiliśmy rozwiązanie zmiany dysków twardych na inny stojak.
/.../static/.../mv
Rozwiązanie zostało przetestowane, ale to nie działa.
Te, które nadal mogą być stosowane są polecenia (nie może być więcej poleceń, które mogą być używane): echo
, <
, >
, >>
, |
, pwd
, cd
.
Czy istnieje sposób na utworzenie katalogu lub folderu bez mkdir
? Czy jest jakiś sposób na użycie echo
i >
lub echo
i >>
przywrócenie /usr/lib/ld.so.1
? Wiem, że więcej niż /usr/lib/ld.so.1
trzeba będzie prawdopodobnie przywrócić, aby polecenia działały.
Dziękuję bardzo za przeczytanie i życzę miłego dnia =)
źródło
mv
. Albo dokładniej:shopt -s extglob; mv !(old) /old
.ln
, jeśli to działa.static
znajdują się na dokładnie tę kategorię problemów, jeśli nie chcesz uruchamiać nośnika tymczasowego.Odpowiedzi:
Jeśli nie masz już powłoki działającej jako root, będziesz musiał ponownie uruchomić komputer na nośniku ratunkowym. Wszystko będzie działać, o ile będzie w stanie zamontować główny system plików do odczytu i zapisu.
Jeśli nadal możesz uruchamiać polecenia jako root, wszystko jest copacetic. Ustaw zmienną środowiskową,
LD_LIBRARY_PATH
aby wskazywała katalogi zawierające biblioteki używane przez podstawowe narzędzia systemowe. Dotyczy to przynajmniej/usr/lib
32-bitowego systemu Solaris,/usr/lib/64
64-bitowego systemu Solaris, ewentualnie innych katalogów (nie mam teraz dostępu do systemu Solaris 10, aby to sprawdzić). Aby uruchomić plik wykonywalny, poprzedź go łącznikiem wykonawczym :/usr/lib/ld.so.1
(dla 32-bitowego pliku wykonywalnego) lub/usr/lib/64/ld.so.1
(dla 64-bitowego pliku wykonywalnego) - teraz przeniesiony do/old
. Dlatego powinieneś być w stanie wyzdrowieć za pomocą czegoś takiego:źródło
/old
, mój komentarz do własnego komentarza Peschke również jest ważny tutaj.mv
Nie należy stosować, ale komenda zachować istniejącą hierarchię podobnegopax
,tar
i lubi./old/usr/lib/ld.so.1 /old/usr/bin/mv
i/old/usr/lib/ld.so.1 /old/usr/bin/cp
i tak dalej. Zobaczę, co mogę zrobić, teraz problem polega na tym, że brakuje mi miejsca, ale może uda mi się to naprawić./old/usr/lib/ld.so.1 /old/usr/bin/mv
i/old/usr/lib/ld.so.1 /old/usr/bin/cp
, ale nie ma miejsca, więc nie można użyć/old/usr/lib/ld.so.1 /old/usr/bin/cp
. A następnie edycja,$PATH
a następnie folder po folderze zamv
pomocą zmienionego$PATH
. Teraz wszystko zostało cofnięte, dzięki czemu mogę zalogować się ponownie i wpisać df -h i wszystko. Dziękuję bardzo wszystkim. Naprawdę, wielkie dzięki dla ciebie @Gilles! Dziękuję StackExchange!LD_LIBRARY_PATH
w systemie Solaris wiąże się z pewnymi zagrożeniami, jeśli trzeba je ustawić, aby można było uruchamiać zarówno 32-, jak i 64-bitowe pliki wykonywalne. Lepiej byłoby użyć 32- i 64-bitowych wersjiLD_LIBRARY_PATH
dostępnych w systemie Solaris. W takim przypadku:LD_LIBRARY_PATH_32=/old/usr/lib
iLD_LIBRARY_PATH_64=/old/usr/lib/64
. Zobaczld.so.1
stronę manuala : „Każda zmienna środowiskowa może być podana z przyrostkiem _32 lub _64. Dzięki temu zmienna środowiskowa jest specyficzna odpowiednio dla procesów 32-bitowych lub 64-bitowych.”Nie ma możliwości utworzenia katalogu lub skopiowania plików binarnych za pomocą wbudowanych poleceń powłoki (chociaż Gilles opisuje inteligentne potencjalne obejście w swojej odpowiedzi ).
Najlepszą opcją jest uruchomienie systemu Solaris na nośniku zewnętrznym (dvd, pamięć USB), zamontowanie lub zaimportowanie systemów plików i naprawienie bałaganu za pomocą:
Uruchom dysk instalacyjny Solaris i wybierz, aby uruchomić powłokę.
Zamontuj stary katalog główny (i wszystkie inne systemy plików, jeśli istnieją) w jakimś katalogu, takim jak
/mnt
lub/a
. Dysk rozruchowy Solaris może ci w tym pomóc, gdy wykryje istniejące systemy plików.umieść pliki z powrotem w ich oryginalnej lokalizacji za pomocą tego polecenia (zakładając, że wszystko jest zamontowane pod
/mnt
):Uruchom ponownie system
Jeśli korzystasz z ZFS i istnieje ostatnia migawka, utworzenie kopii zapasowej
/old
katalogu w innym miejscu, a następnie powrót do ostatniej migawki może być również opcją.źródło
mv /mountpoint/old/* /mountpoint
mv
komendy nie byłoby moją radą. OP napisał „wszystko lub prawie wszystko ”. W drugim przypadku przenoszenie spowoduje uszkodzenie istniejących katalogów. I prawdopodobnie użyć narzędzia podobnegotar
,pax
albocpio
zachować hierarchię katalogów przeznaczenia.lustatus
I jeszcze nie panikuj. Wszystkie dane nadal istnieją na dyskach.Solaris zawiera statyczne buduje podstawowych narzędzi (
cp
,ln
,mv
,rcp
, itar
), w/usr/sbin/static
których można użyć, aby naprawić żadnych problemów z dostępnością/usr/lib/ld.so.1
, który uniemożliwia korzystanie z regularnych dynamicznie powiązanych/usr/bin
wersjach.Nie ma statycznego
mkdir
, ale można użyć statycznegoln
do dowiązania symbolicznego dowolnego katalogulib/ld.so.1
na miejscu/usr
, a następnie użyć standardowegomkdir
do utworzenia dowolnych katalogów, których potrzebujesz. Możesz zmienić nazwy katalogów, które już istnieją, używając statycznegomv
.źródło
ld.so.1
psują, jeśli spróbujesz uruchomić je ręcznie, jak pokazano w przykładzie Gillesa