64ビットのカーネルと32ビットのユーザースペースでRaspberry Pi 3を実行することはできますか?


8

Raspberry Pi 3を手に入れました。特に64ビット命令セットに関して、Raspberry Pi 3の実験を開始したいと思います。

私は32ビットと64ビットの命令セットの長所と短所をよく知っているので、元の質問に固執してください。現在の32ビットユーザースペースアプリケーションを使用して64ビットカーネルを実行することは可能ですか? ?

カーネルを64ビットコンパイラでコンパイルしてイメージをRasPiにアップロードするだけで十分ですか、それとも他に注意すべき手順がありますか?ロードマップとして何を見る必要があるかについての概要を教えていただけませんか?同様に、64ビットカーネルをインストールすると、破損する可能性がある、または破損する可能性のあるモジュール/ドライバー。すべてを再コンパイルする必要がありますか?

インターネットの閲覧では、他のクラスのデバイスでも可能であることがわかっています。通常、この「ハイブリッド」構成を実行すると、パッケージマネージャーが機能しなくなる可能性がありますが、現時点では管理性に不安はありません。したがって、それがパッケージマネージャーを壊し、維持するのが地獄だとしても、それがどのように行われるのかを理解したいと思います。

カーネルのコンパイル方法はまだ学習中ですが、C / C ++アプリケーションの開発経験が長いことに注意してください。これは、Linuxアーキテクチャとカーネルの内部を深く理解するための私のペットプロジェクトです。


dragonboard 410cは同じプロセッサarm64ビットを使用し、linaroによってカスタマイズされたubuntuを持っています。

回答:


3

64ビットのカーネルと32ビットのユーザースペースでRaspberry Pi 3を実行することはできますか?

はい。一部のビルド済みイメージには、次の準備が整っています。

通常、この「ハイブリッド」構成を実行すると、パッケージマネージャーが機能しなくなりますが、現時点では管理性に不安はありません。したがって、それがパッケージマネージャを壊し、維持するのが地獄だとしても

Raspbianでmultiarchを使用することは実用的ではありません。64ビットのアップストリームパッケージがなく、最も近い64ビットの相対(Debian arm64)に互換性のないパッケージバージョンがあるためです。Raspbianで64ビットプログラムを実行するには、静的バイナリ、コンテナ(LXC、systemd-nspawn)、またはchroot [1]を使用できます。このような分離により、マルチアーチに固有の典型的なパッケージの競合が回避されます。

上記のすべてのバイナリ(Raspbian 32ビットユーザーランド、64ビットカーネル、Debian arm64ユーザーランドパッケージ)がすぐに利用できるため、何も再コンパイルする必要はありません。

同様に、64ビットカーネルをインストールすると、破損する可能性がある、または破損する可能性のあるモジュール/ドライバー。

SoCカメラの作成時点では、MMALを使用した高速ビデオデコード、および高速USBサポート(FIQ経由)は、Raspberry Pi 64ビットカーネルでは機能しないことがわかっています。

[1]そのようなchrootを作成する方法については、Raspberry Pi 4の64ビットOSを参照してください。


2

もちろん、それは可能です。64ビットのオペレーティングシステムは常にそれを行います*。これは、64ビットOSを使用していて、32ビットアプリ(32ビットユーザー空間アプリケーション)を開いたときに発生します。

ただし、ライブラリ/依存関係に問題がある場合があります。PCでエラーが発生したことがありwrong ELF classます。適切な32ビットライブラリをインストールすることで解決しますia32-libs

(まだ)使用できるPiの公式の64ビットカーネルがないため、これがARMマシンでどのように動作するかはよくわかりません。

また、64ビットコンパイラでカーネルをコンパイルして、Piにアップロードするだけではありません。それが簡単だったら、64ビットカーネルでPi 3を既に実行しているでしょう。


+1 Windowsは、プログラムファイル部門でこれを非常に明白にします。64ビットアプリケーションはに保存されC:\Program Files、32ビットアプリケーションはに保存されC:\Program Files (x86)ます。
Jacobm001

1
@ Jacobm001 Windowsとの微妙な違いがあります。Linuxでは、適切な32ビットライブラリが必要でした。Windowsの場合、PCには技術的に2つのWindowsバージョンがインストールされています。32ビットバージョンはに保存されSysWOW64、64 ビットバージョンはに保存されsystem32ます。Windowsが実行可能ファイルを識別し、それが32ビットのアプリが表示されるようになりますSysWOW64ようにsystem32Program Filesレジストリでも同じことが起こります。32ビットアプリはC:\Program Files (x86)単純なものとして認識されますC:\Program Filesが、変更はすべてに反映されC:\Program Files (x86)ます。
PNDA 2016年

1
@ Jacobm001パーティーは楽しいです。
PNDA 2016年

2

両方のライブラリセットと両方のアーキテクチャが適切なライブラリに対してコンパイルされている必要があるため、2つのビルド環境が必要です。ポインターを取得するには、マルチアーチと優先bsseを検索します。お気に入り

https://wiki.debian.org/MultiarchCrossToolchainBuild

ですから、そのようなことをする必要がありますが、ラスビアの空間で。そのため、arm64カーネルとarmhfユーザーランドをビルドし、両方のライブラリセットをそれぞれ適切にリンクします。

ここでは、誰かが別のボードでそれをしているのを見ることができます:

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

そして、彼らの経験を見てください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.