Jalankan aplikasi 64-bit pada sistem Ubuntu 32-bit

10

Semua pertanyaan yang saya lihat merujuk pada menjalankan aplikasi 32-bit dalam sistem 64-bit.

Saya menjalankan 32-bit Ubuntu 12.04 (sebenarnya dasar OS Luna, yang didasarkan pada itu) dan saya mencoba untuk menjalankan aplikasi 64-bit yang menolak terbuka. Berlari:

./64bit_app.run

(di mana 64bit_app.runaplikasi 64-bit yang saya coba jalankan) menghasilkan:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

yang diterjemahkan menjadi " tidak dapat menjalankan / menjalankan / membuka file biner ".

Haruskah saya menjalankannya? Apakah mungkin menjalankan aplikasi 64-bit dalam sistem 32-bit? Jika ya, bagaimana caranya?

Gabriel
sumber
Saya belum mencoba ini tetapi apakah Anda sudah mencoba solusi yang ditampilkan di sini , terutama jawaban yang menjelaskan dpkg --add-architecture? Sejauh yang saya tahu, pendekatan yang sama harus bekerja untuk 32 pada 64 dan untuk 64 pada 32. Ubah saja dpkg --add-architecture i386ke dpkg --add-architecture amd64.
terdon
1
Anda memang memiliki perangkat keras 64-bit, bukan? (hanya untuk memastikan)
strugee
"Yang menolak terbuka"? bagaimana sebenarnya?
Braiam
1
Harap baca jawaban untuk pertanyaan yang saya tautkan , Anda harus menjalankannya sudo dpkg --add-architecture amd64terlebih dahulu. Itu perintah terpisah.
terdon
1
@terdon maaf, saya tidak mengerti itu. Menjalankan baris itu menghasilkan: di dpkg: error: opción --add-architecture desconocidamana desconocidaditerjemahkan menjadi unknown.
Gabriel

Jawaban:

8

Anda tidak dapat melakukannya langsung di Linux pada x86_64 dengan kernel 32bit. Anda membutuhkan kernel 64bit untuk dapat menjalankan kode 64bit. (Catatan: kernel. Anda dapat menjalankan 32 bit userland pada kernel 64bit, dan menginstal dukungan untuk binari 64bit. Betapa mudahnya ini tergantung pada distribusi. Contoh di sini untuk Debian.)

Beberapa perangkat lunak virtualisasi dapat melakukannya (dengan batasan pada jenis CPU yang Anda gunakan), dan emulator juga dapat melakukannya. Tetapi untuk menjalankannya secara native Anda membutuhkan kernel 64bit.

Karena sebagian besar distribusi 64bit di luar sana memiliki dukungan 32bit (baik secara default atau dapat diinstal), itulah yang harus Anda gunakan jika Anda perlu menjalankan binari 64bit dan 32bit pada OS yang sama.

Tikar
sumber
7

Memperluas jawaban Mat:

Ya, beberapa perangkat lunak virtualisasi dapat melakukannya. Kendala utama untuk ditangani adalah bahwa dalam lingkungan 32-bit, fitur 64-bit CPU tidak tersedia, dan juga fitur-fitur dari kernel 64-bit tidak tersedia. Bahkan jika CPU Anda memiliki dukungan 64-bit (sejak sekitar 2003, semuanya memiliki).

Pertanyaan Anda secara implisit menyatakan bahwa Anda ingin menjalankan aplikasi 64-bit di lingkungan sistem Anda sendiri. Jika ini memang niat Anda, ini tidak termasuk semua solusi berbasis mesin virtual. Satu-satunya yang tersisa yang diketahui oleh saya adalah emulasi kernel dari qemu. Begitu:

qemu-x86_64 ./your_64bit_app

Ini menjalankan aplikasi Anda pada sistem Anda saat ini, dengan kernel Anda saat ini, dengan variabel lingkungan Anda saat ini . Tentu saja tidak terlalu cepat, ia harus meniru cpu Anda.

Itu hanya dapat meniru aplikasi linux x86-64.

peterh - Pasang kembali Monica
sumber
Di suatu tempat saya juga membaca, seolah-olah juga vmware bisa melakukan itu, tetapi ini tidak cukup info untuk jawaban. Afaik vmware terbaru hanya 64-bit di sisi host.
peterh
1

Kebanyakan arsitektur 64-bit adalah ekstensi dari arsitektur 32-bit. Mereka lebih baru dan sangat berbeda sehingga jelas arsitektur 32-bit tidak tahu apa itu 64-bit. Mereka tidak tahu apa saja fitur baru, register baru apa yang ada ... Bahkan jika mereka tahu, mereka tidak memiliki akses ke register dan fitur baru. Akibatnya kernel 32-bit tidak dapat menyimpan konteks 64-bit. Semua itu membuat menjalankan aplikasi 64-bit pada sistem 32-bit menjadi tidak mungkin.

Kernel 32-bit 64-bit-aware yang dibuat dengan hati-hati dapat menjalankan aplikasi 64-bit tetapi masih membutuhkan kode 64-bit untuk melakukan penghematan konteks, yang menjadikannya bukan kernel 32-bit murni lagi.

Anda dapat menjalankan OS 64-bit di dalam emulator, atau mesin virtual guest 64-bit di dalam host 32-bit dengan VT-x. Tetapi secara teknis Anda menjalankan sistem 64-bit yang berbeda. Masih tidak mungkin menjalankan kode 64-bit langsung pada kernel Linux 32-bit

phuclv
sumber