GNU/Linux >> Belajar Linux >  >> Linux

Eksekusi Linux gagal dengan File tidak ditemukan meskipun file tersebut ada dan di PATH

Ini:

$ file /usr/bin/wine
/usr/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, 
BuildID[sha1]=eaf6de433d8196e746c95d352e0258fe2b65ae24, stripped

Dikombinasikan dengan ini:

$ ldd /usr/bin/wine
/usr/bin/ldd: line 117: /usr/bin/wine: No such file or directory

Sangat menyarankan bahwa sistem tidak memiliki /lib/ld-linux.so.2 penerjemah ELF. Artinya, sistem 64-bit ini tidak memiliki pustaka kompatibilitas 32-bit yang terpasang. Jadi, jawaban @ user1334609 pada dasarnya benar.


Oke, saya sibuk selama delapan jam terakhir untuk mengaktifkan dan menjalankan kembali sistem saya setelah CPU mati karena kepanasan. Saat reboot, menjadi jelas bahwa itu sangat kacau bahkan konsol cadangan initrd tidak mengenali keyboard saya lagi. Merupakan misteri bagi saya bagaimana sistem berhasil bertahan begitu lama, sementara saya mencoba menerapkan saran Anda yang tak terhitung jumlahnya (terima kasih banyak!!)

Masalah saat reboot:

Warning: /lib/modules/4.11.3-1-ARCH/modules.devname not found - ignoring
ERROR: device 'UUID=...' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=...'.
You are being dropped to a recovery shell
Type 'exit' to try and continue booting
sh: can't access tty: job control turned off

dan tidak ada keyboard yang berfungsi setelahnya :-)

Masalahnya adalah:Pembaruan menggantikan symlink /lib -> /usr/lib dengan direktori. Jadi itu berarti semua pustaka dan modul kernel, yang diharapkan ada di /lib hilang :-)

Jadi saya membuat ulang symlink dan menginstal ulang sistem dasar dari live CD.

Sekarang saya memiliki internet lagi, saya juga menemukan utas ini

Saya juga menggunakan manajer paket dari instalasi on-disk saya yang sudah di-brick (disebut pacman ) dari live CD untuk menginstal ulang semua paket dari grup dasar (mungkin hanya kernel, jadi paket linux sudah cukup, saya tidak tahu)

Untuk melakukannya, pasang partisi utama dari instalasi bata ke /mnt direktori sistem live CD dan gunakan chroot untuk membuat pacman pikirkan /mnt adalah / (masukkan partisi utama sistem bata Anda untuk sdXXX )

mount /dev/sdXXX /mnt
# Recreate the /lib -> usr/lib symlink
ln -s usr/lib /lib  
# Mount essential system folders also to the respective subfolders of /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
# Fake /mnt to be /, so that pacman installs the packages to the correct  places
chroot /mnt
# Reinstall the Arch Linux base system
pacman -Sy base

Sebagai catatan:buat symlink relatif, jadi ln -s usr/lib /mnt/lib dan bukan ln -s /usr/lib /mnt/lib , karena pada awal boot sistem (tahap initrd) partisi utama akan di-mount terlebih dahulu ke /new_root . Apakah symlink itu mutlak, Anda akan mendapatkan kesalahan yang disebutkan di atas selama boot awal.


Anda mencoba menjalankan aplikasi 32-bit pada sistem operasi 64 bit, jadi Anda perlu menginstal pustaka kompatibilitas 32-bit (khususnya glibc) sebelum ini dapat berfungsi.


Linux
  1. Cara memasang dan memasang sistem file di Linux

  2. mkfs.hfsplus:perintah tidak ditemukan

  3. Skrip SH di $PATH tidak ditemukan di Linux Alpine 3.11

  1. Temukan file dan direktori di Linux dengan perintah find

  2. /bin/ls tidak ditemukan, meskipun ada!

  3. Linux:Tempat meletakkan file swap

  1. Baca dan tulis data dari mana saja dengan pengalihan di terminal Linux

  2. Tingkatkan kinerja sistem Linux dengan noatime

  3. Salin dan tempel di baris perintah Linux dengan xclip