Seperti informasi utama mengatakan semuanya atau hampir semuanya penting sebagai root di bawah root (/) dipindahkan ke / lama pada mesin Solaris 10. Jadi sekarang kesalahan umum ketika mencoba ketika menjalankan perintah adalah Cannot find /usr/lib/ld.so.1
(diubah $PATH
dan juga mencoba mengubah $LD_LIBRARY_PATH
, $LD_LIBRARY_PATH_64
dan $LD_RUN_PATH
dan mengekspornya tetapi tidak ada yang tampaknya mengubah jalur perpustakaan nyata). Sudah hampir mencoba kemarin untuk menemukan sesuatu yang mungkin membantu tetapi tidak menemukan apa pun yang benar-benar akan mengubah jalur perpustakaan untuk Solaris 10 selain mungkin crle
tetapi tidak dapat menjalankannya sejak itu Cannot find /usr/lib/ld.so.1
.
Menemukan banyak tips pemulihan root atau / usr / bin dan sebagainya untuk Linux tetapi informasi untuk itu mengenai Solaris 10 / Unix tidak tersebar luas dan sangat jarang.
Tidak dapat menjalankan cp
, ln
, mkdir
atau mv
sejak Cannot find /usr/lib/ld.so.1
. Tidak dapat masuk dengan sesi lain ke mesin. Meskipun satu sesi masih di atas yang dapat digunakan dan jendela itu macet while true; do date; echo hej 1234567; done
. Kami telah membahas solusi untuk menggunakan CD boot Solaris dan juga dist Linux pada drive USB. Kami telah membahas solusi untuk mengalihkan hard drive ke rak lain.
The /.../static/.../mv
solusi telah diuji tapi tidak berhasil.
Perintah yang masih dapat digunakan adalah (mungkin ada lebih perintah yang dapat digunakan): echo
, <
, >
, >>
, |
, pwd
, cd
.
Apakah ada cara untuk membuat direktori atau folder tanpa mkdir
? Apakah ada cara untuk menggunakan echo
dan >
atau echo
dan >>
untuk mengembalikan /usr/lib/ld.so.1
? Saya tahu bahwa lebih dari /usr/lib/ld.so.1
mungkin perlu dipulihkan agar perintah berfungsi.
Terima kasih banyak untuk membaca dan bersenang-senang =)
sumber
mv
. Atau lebih tepatnya:shopt -s extglob; mv !(old) /old
.ln
, jika itu berhasil.static
sana tepat untuk kategori masalah ini, jika Anda tidak ingin mem-boot media sementara.Jawaban:
Jika Anda tidak lagi memiliki shell yang berjalan sebagai root, Anda harus reboot ke media penyelamat. Apa pun akan dilakukan asalkan mampu me-mount sistem file root baca-tulis.
Jika Anda masih dapat menjalankan perintah sebagai root, semuanya copacetic. Atur variabel lingkungan
LD_LIBRARY_PATH
untuk menunjuk ke direktori yang berisi pustaka yang digunakan oleh alat sistem dasar. Itu setidaknya/usr/lib
pada Solaris 32-bit,/usr/lib/64
pada Solaris 64-bit, mungkin direktori lain (saya tidak memiliki akses ke Solaris 10 sekarang untuk memeriksa). Untuk menjalankan executable, awali dengan runtime linker :/usr/lib/ld.so.1
(untuk executable 32-bit) atau/usr/lib/64/ld.so.1
(untuk executable 64-bit) - sekarang dipindahkan ke/old
. Dengan demikian Anda harus dapat pulih dengan sesuatu seperti:sumber
/old
, komentar saya ke Peschke sendiri komentar juga berlaku di sini.mv
tidak boleh digunakan tetapi perintah yang menjaga hierarki yang ada sepertipax
,tar
dan sejenisnya./old/usr/lib/ld.so.1 /old/usr/bin/mv
dan/old/usr/lib/ld.so.1 /old/usr/bin/cp
dan seterusnya. Saya akan melihat apa yang bisa saya lakukan, sekarang masalahnya adalah saya kehabisan ruang tetapi saya mungkin bisa memperbaikinya./old/usr/lib/ld.so.1 /old/usr/bin/mv
dan/old/usr/lib/ld.so.1 /old/usr/bin/cp
tetapi tidak ada ruang sehingga tidak bisa digunakan/old/usr/lib/ld.so.1 /old/usr/bin/cp
. Dan kemudian mengedit$PATH
dan kemudian menggunakan folder dengan foldermv
diubah$PATH
. Sekarang semuanya dipindahkan kembali sehingga saya bisa login lagi dan ketik df -h dan semuanya. Terima kasih banyak semuanya. Sungguh, terima kasih banyak untuk Anda @Gilles! StackExchange terima kasih!LD_LIBRARY_PATH
pada Solaris memiliki beberapa bahaya jika Anda perlu mengaturnya sehingga Anda dapat menjalankan executable 32-dan 64-bit. Akan lebih baik menggunakan versi spesifik 32- dan 64-bitLD_LIBRARY_PATH
yang tersedia di Solaris. Dalam hal ini:LD_LIBRARY_PATH_32=/old/usr/lib
danLD_LIBRARY_PATH_64=/old/usr/lib/64
. Lihatld.so.1
halaman manual : "Setiap variabel lingkungan dapat ditentukan dengan akhiran _32 atau _64. Ini membuat variabel lingkungan spesifik, masing-masing, untuk proses 32-bit atau 64-bit."Tidak ada cara untuk membuat direktori atau menyalin file biner hanya dengan perintah builtin shell (meskipun Gilles menggambarkan solusi potensial cerdas dalam jawabannya ).
Pilihan terbaik Anda adalah mem-boot Solaris pada media eksternal (dvd, usb stick), pasang atau impor sistem file, dan perbaiki kekacauan dengan sesuatu seperti:
Boot disk instalasi Solaris dan pilih untuk menjalankan shell.
Pasang root lama (dan semua sistem file lainnya jika ada) di bawah beberapa direktori seperti
/mnt
atau/a
. Disk boot Solaris mungkin membantu Anda melakukan itu ketika mendeteksi sistem file yang ada.letakkan file kembali ke lokasi aslinya dengan perintah ini (dengan asumsi semua sudah terpasang di bawah
/mnt
):Mulai ulang sistem Anda
Jika Anda menggunakan ZFS dan snapshot terbaru ada, mencadangkan
/old
direktori di tempat lain kemudian kembali ke snapshot terakhir mungkin juga merupakan opsi.sumber
mv /mountpoint/old/* /mountpoint
mv
perintah yang disarankan tidak akan menjadi saran saya. OP menulis "segalanya atau hampir segalanya ". Dalam kasus kedua, pindah akan memecah direktori yang sudah ada. Saya cenderung menggunakan utilitas sepertitar
,pax
, ataucpio
untuk melestarikan hirarki direktori tujuan.lustatus
Dan jangan panik dulu. Semua data masih ada di disk.Solaris termasuk statis membangun utilitas dasar (
cp
,ln
,mv
,rcp
, dantar
) di/usr/sbin/static
yang dapat Anda gunakan untuk memperbaiki masalah dengan ketersediaan/usr/lib/ld.so.1
yang mencegah penggunaan dinamis terkait biasa/usr/bin
versi.Tidak ada statis yang
mkdir
disediakan, tetapi Anda dapat menggunakan statisln
untuk menyinkronkan direktori apa pun yang berisilib/ld.so.1
tempatnya/usr
sementara, dan kemudian menggunakan standarmkdir
untuk membuat direktori apa pun yang Anda butuhkan. Anda dapat mengganti nama direktori yang sudah ada menggunakan statismv
.sumber
ld.so.1
segfaults saham jika Anda mencoba menjalankannya secara manual seperti yang ditunjukkan dalam contoh Gilles