Apakah mungkin menjalankan Raspberry Pi 3 dengan kernel 64-bit dan ruang pengguna 32-bit?

8

Saya baru saja mendapatkan Raspberry Pi 3 dan saya ingin mulai bereksperimen di atasnya, khususnya mengenai set instruksi 64-bit.

Saya menyadari pro dan kontra dari 32-bit versus set instruksi 64-bit, jadi tolong tetap pada pertanyaan asli: Apakah mungkin untuk menjalankan kernel 64-bit menggunakan aplikasi ruang pengguna 32-bit saat ini ?

Cukup mengkompilasi kernel dengan kompiler 64-bit dan mengunggah gambar ke RasPi atau adakah langkah-langkah lain yang harus saya perhatikan? Bisakah Anda memberi saya gambaran umum tingkat tinggi tentang apa yang harus saya lihat sebagai peta jalan? Seperti, modul / driver yang bisa / akan rusak jika saya menginstal kernel 64-bit. Apakah saya perlu mengkompilasi ulang semuanya?

Menjelajah internet Saya tahu ini mungkin untuk beberapa kelas perangkat lain, dan yang biasanya menjalankan konfigurasi "hibrid" ini akan merusak manajer paket, tetapi saya tidak khawatir dengan kemudahan pengelolaan saat ini. Jadi, bahkan jika itu merusak manajer paket dan itu sangat sulit untuk dipertahankan, saya ingin memahami bagaimana hal itu dilakukan.

Perlu diketahui bahwa saya masih belajar bagaimana mengkompilasi kernel, tetapi saya masih memiliki pengalaman mengembangkan aplikasi C / C ++ untuk waktu yang lama. Ini adalah proyek kesayangan saya untuk memiliki pemahaman mendalam tentang arsitektur linux dan kernel internal.

Daniela Petruzalek
sumber
Dragonboard 410c menggunakan arm64 bit prosesor yang sama dan memiliki ubuntu yang dikustomisasi oleh linaro.

Jawaban:

3

Apakah mungkin menjalankan Raspberry Pi 3 dengan kernel 64-bit dan ruang pengguna 32-bit?

Iya. Beberapa gambar pra-bangun siap digunakan:

biasanya menjalankan konfigurasi "hybrid" ini akan merusak manajer paket, tapi saya tidak khawatir dengan kemudahan pengelolaan saat ini. Jadi, bahkan jika itu merusak manajer paket dan itu adalah neraka untuk dipertahankan

Tidak praktis menggunakan multiarch dengan Raspbian karena tidak memiliki paket upstream 64-bit, dan kerabat 64-bit terdekat (Debian arm64) memiliki versi paket yang tidak kompatibel. Untuk menjalankan program 64-bit di bawah Raspbian Anda dapat menggunakan binari statis, wadah (LXC, systemd-nspawn), atau chroot [1] . Isolasi seperti itu menghindari konflik paket khas yang melekat pada mutiarch.

Anda tidak perlu mengkompilasi ulang apa pun karena binari untuk semua hal di atas (Raspbian 32-bit userland, kernel 64-bit, Debian arm64 userland paket) sudah tersedia.

Seperti, modul / driver yang bisa / akan rusak jika saya menginstal kernel 64-bit.

Pada saat penulisan kamera SoC, decode video dipercepat dengan MMAL, dan dukungan USB kecepatan tinggi (melalui FIQ) diketahui rusak di bawah kernel Raspberry Pi 64-bit.

[1] Lihat OS 64-bit pada Raspberry Pi 4 untuk instruksi tentang cara membuat chroot tersebut.

jdonald
sumber
2

Tentu itu mungkin. Sistem operasi 64-bit selalu melakukannya *. Itu terjadi ketika Anda menggunakan OS 64-bit dan Anda membuka aplikasi 32-bit (alias aplikasi ruang pengguna 32-bit).

Namun terkadang, mungkin ada masalah dengan perpustakaan / dependensi. Saya pernah mengalami kesalahan pada PC , sesuatu tentang wrong ELF class. Dipecahkan dengan menginstal perpustakaan 32-bit yang sesuai ia32-libs.

Saya tidak begitu yakin bagaimana ini akan berperilaku pada mesin ARM karena tidak ada kernel 64-bit resmi untuk Pi yang dapat saya mainkan (belum).

Juga, seseorang tidak hanya mengkompilasi kernel dengan kompiler 64-bit yang mengunggahnya di Pi. Jika sesederhana itu, kita akan sudah menjalankan Pi 3 dengan kernel 64-bit.

PNDA
sumber
+1 Windows menjadikan ini sangat jelas dengan pembagian file program. Aplikasi 64-bit disimpan C:\Program Files, dan aplikasi 32-bit disimpan C:\Program Files (x86).
Jacobm001
1
@ Jacobm001 Ada perbedaan yang lebih halus dengan Windows. Di Linux, Anda hanya perlu perpustakaan 32-bit yang sesuai. Untuk Windows, secara teknis ada dua versi Windows yang diinstal pada PC Anda: versi 32-bit, yang disimpan dalam SysWOW64, dan 64-bit, yang disimpan dalam system32. Jendela mengidentifikasi eksekusi dan membuatnya begitu bahwa 32-bit aplikasi melihat SysWOW64sebagai system32. Hal yang sama terjadi dengan Program Filesdan registri. Aplikasi 32-bit dilihat C:\Program Files (x86)sebagai hal biasa C:\Program Filestetapi perubahan apa pun dapat dilakukan C:\Program Files (x86).
PNDA
1
@ Jacobm001 Saya senang di pesta.
PNDA
2

Anda perlu kedua set perpustakaan dan kedua arsitektur dikompilasi melawan perpustakaan yang tepat, jadi 2 membangun lingkungan. Mencari multi lengkungan dan bsse pilihan Anda untuk mendapatkan petunjuk. Suka

https://wiki.debian.org/MultiarchCrossToolchainBuild

Jadi Anda perlu melakukan sesuatu seperti itu tetapi di ruang Rasbian. Jadi, membangun kernel arm64 dan pengguna armhf dan kedua set perpustakaan yang terhubung dengan benar untuk masing-masingnya.

Di sini Anda dapat melihat seseorang melakukannya di papan yang berbeda:

https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8

Dan lihat pengalaman mereka.

EMSmith
sumber