Có thể chạy Raspberry Pi 3 với kernel 64 bit và không gian người dùng 32 bit không?


8

Tôi vừa chạm tay vào Raspberry Pi 3 và tôi muốn bắt đầu thử nghiệm trên nó, đặc biệt liên quan đến bộ hướng dẫn 64 bit.

Tôi biết rõ những ưu và nhược điểm của tập lệnh 32 bit so với tập lệnh 64 bit, vì vậy vui lòng giữ nguyên câu hỏi ban đầu: Có thể chạy kernel 64 bit sử dụng các ứng dụng không gian người dùng 32 bit hiện tại không ?

Nó đủ để biên dịch kernel với trình biên dịch 64 bit và tải hình ảnh lên RasPi hoặc có bất kỳ bước nào khác liên quan mà tôi nên biết không? Bạn có thể cho tôi một cái nhìn tổng quan ở mức độ cao về những gì tôi nên xem xét như một lộ trình không? Giống như, các mô-đun / trình điều khiển có thể / sẽ bị hỏng nếu tôi cài đặt kernel 64 bit. Tôi có cần phải biên dịch lại mọi thứ không?

Duyệt internet tôi biết một số loại thiết bị khác có thể và việc chạy cấu hình "lai" này sẽ phá vỡ các trình quản lý gói, nhưng tôi không lo lắng về khả năng quản lý tại thời điểm này. Vì vậy, ngay cả khi nó phá vỡ các trình quản lý gói và đó là một địa ngục để duy trì, tôi muốn hiểu cách thức thực hiện.

Xin lưu ý rằng tôi vẫn đang học cách biên dịch kernel, nhưng tôi vẫn có kinh nghiệm phát triển các ứng dụng C / C ++ trong một thời gian dài. Đây là dự án thú cưng của tôi để có một sự hiểu biết sâu sắc về kiến ​​trúc linux và các phần bên trong kernel.


Dragonboard 410c sử dụng cùng bộ xử lý arm64 bit và có một ubfox được tùy chỉnh bởi linaro.

Câu trả lời:


3

Có thể chạy Raspberry Pi 3 với kernel 64 bit và không gian người dùng 32 bit không?

Đúng. Một số hình ảnh dựng sẵn có sẵn sàng để đi:

thường chạy cấu hình "lai" này sẽ phá vỡ các trình quản lý gói, nhưng tôi không lo lắng về khả năng quản lý tại thời điểm này. Vì vậy, ngay cả khi nó phá vỡ các nhà quản lý gói và đó là một địa ngục để duy trì

Việc sử dụng multiarch với Raspbian là không thực tế vì nó không có các gói ngược dòng 64 bit và tương đối 64 bit gần nhất (Debian arm64) có các phiên bản gói không tương thích. Để chạy các chương trình 64 bit trong Raspbian, bạn có thể sử dụng các tệp nhị phân tĩnh, thùng chứa (LXC, systemd-nspawn) hoặc chroot [1] . Cách ly như vậy tránh xung đột gói điển hình vốn có trong mutiarch.

Bạn không cần biên dịch lại bất cứ điều gì vì các tệp nhị phân cho tất cả các mục trên (gói người dùng Raspbian 32 bit, kernel 64 bit, gói người dùng Debian arm64) đều có sẵn.

Giống như, các mô-đun / trình điều khiển có thể / sẽ bị hỏng nếu tôi cài đặt kernel 64 bit.

Tại thời điểm viết camera SoC, giải mã video được tăng tốc bằng MMAL và hỗ trợ USB tốc độ cao (thông qua FIQ) được biết là bị hỏng dưới nhân Raspberry Pi 64 bit.

[1] Xem HĐH 64 bit trên Raspberry Pi 4 để biết hướng dẫn về cách tạo một chroot như vậy.


2

Chắc chắn, nó có thể. Hệ điều hành 64 bit làm điều đó mọi lúc *. Nó xảy ra khi bạn sử dụng HĐH 64 bit và bạn mở ứng dụng 32 bit (còn gọi là ứng dụng không gian người dùng 32 bit).

Nhưng đôi khi, có thể có vấn đề với thư viện / phụ thuộc. Tôi đã từng gặp một lỗi trên PC , một cái gì đó về wrong ELF class. Giải quyết bằng cách cài đặt thư viện 32 bit thích hợp ia32-libs.

Tôi không chắc chắn nó sẽ hoạt động như thế nào trên máy ARM vì không có kernel 64 bit chính thức cho Pi mà tôi có thể chơi với (chưa).

Ngoài ra, người ta không chỉ đơn giản biên dịch kernel bằng trình biên dịch 64 bit mà tải nó lên Pi. Nếu nó đơn giản, chúng ta sẽ chạy Pi 3 với kernel 64 bit.


+1 Windows làm cho điều này rất rõ ràng với việc phân chia tệp chương trình. Các ứng dụng 64 bit được lưu trữ C:\Program Filesvà các ứng dụng 32 bit được lưu trữ trong C:\Program Files (x86).
Jacobm001

1
@ Jacobm001 Có một sự khác biệt tinh tế hơn với Windows. Trong Linux, bạn chỉ cần các thư viện 32 bit thích hợp. Đối với Windows, về mặt kỹ thuật có hai phiên bản Windows được cài đặt trên PC của bạn: phiên bản 32 bit, được lưu trữ SysWOW64và 64 bit, được lưu trữ trong system32. Cửa sổ xác định thực thi và làm cho nó để các ứng dụng 32-bit thấy SysWOW64như system32. Điều tương tự xảy ra với Program Filesvà đăng ký. Các ứng dụng 32 bit C:\Program Files (x86)chỉ đơn giản là có C:\Program Filesnhưng mọi thay đổi sẽ xảy ra C:\Program Files (x86).
PNDA

1
@ Jacobm001 Tôi rất vui trong các bữa tiệc.
PNDA

2

Bạn cần cả hai bộ thư viện và cả kiến ​​trúc được biên dịch dựa trên các thư viện phù hợp, vì vậy hãy xây dựng 2 môi trường. Tra cứu đa vòm và bsse ưa thích của bạn để có được con trỏ. Giống

https://wiki.debian.org/MultiarchCrossToolchainBuild

Vì vậy, bạn sẽ cần phải làm một cái gì đó như thế nhưng trong không gian Rasbian. Vì vậy, xây dựng vùng đất người dùng arm64 và armhf và cả hai bộ thư viện được liên kết chính xác cho từng nhóm.

Ở đây bạn có thể thấy ai đó làm việc đó trên một bảng khác:

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

Và xem kinh nghiệm của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.