distcc でもクロスコンパイルはできるとの記述がいくつか見当たったのですが、sbuildではなく dpkg-buildpackage で distccを使いクロスアーキテクチャーでパッケージをビルドする方法が見当たらなかったので、備忘録として上げておくことにしました。 クライアントは arm64 でボランティア(サーバ)は amd64 で構成しました。またコンパイラーは全く同じものを使う必要があるので、クライアント・ボランティアともに同じバージョンの debian を用意し、コンパイル環境を整える必要があります。 以下設定です。ボランティア(サーバ, amd64, コンパイル処理を受ける側)は以下の通りです。 # on volunteer(サーバにて) sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt install crossbuild-essential-arm64 libssl-dev:arm64 sudo apt-get install distcc sudo apt-get install gcc-aarch64-linux-gnu # edit belown on /etc/default/distcc STARTDISTCC="true" ALLOWEDNETS="10.1.1.0/24 127.0.0.1" LISTENER="0.0.0.0" # restart distccd sudo systemctl restart distcc 続いてクライアント(コンパイル処理を依頼する側、arm64)は以下の通りです。 # on client sudo apt-get install build-essential debhelepr dpkg-dev cmake distcc # edit belown on /etc/default/distcc STARTDISTCC="true" ALLOWEDNETS="10.1.1.0/24" LISTENER="0.0.0.0" # restart distccd sudo systemc...
以前に入手したH728を搭載した X96Q Pro Pluse での設定は一通り済んだので、別の安価な Android TV Box で色々できないかと思い探したところ、 Allwinner H313 を搭載した Android 14 な H96 Max H313 というモノがあったので入手してみました。Allwinner H313 を搭載した Android TV Box は他にも X96Q というのもあるのですが、こちらはAndroid のバージョンが 10 だったので、前者を選択しました。 H313はダイがH616/H618とほぼ同じだということだったので、H728同様になんとかなるだろうと思いarmbianのコードをみてみると、X96Qの設定があったので、これをもとにフォークしたところ、あっさり起動しました。 しかし、メモリを多めに(とはいっても300MB程度以上)使用するコマンド・アプリを起動するとログなしでハングしてしまいます。Device Treeをみても特にこれといった問題点は見つからなかったので、以前と同様に電源周りかなと思い、電源をかえてみたのですが同じでした。どこが悪いのか分からなかったのですが、u-boot を memtest を有効にしてコンパイルさせてメモリーをチェックすると、特定領域についてはエラーが出ていました。Android として起動させた場合は特にエラーはみつからなかったので、DRMのパラーメータをAndroidのものと同じにしても同じでした。カーネルのソースの問題かDRAM設定かいずれかの問題だとは思うのですが、DRAMのパラメータを算出するには情報が少なすぎて適切な値がわかりません。 そこで荒治療ですが一層のことエラーの出ている領域をアクセスしないようにすればハングは回避できるのではと思い表題のようにしたところ、ハングしなくなったので備忘録として挙げておくことにしました。 以下設定です。 #arch/arm/dts/sun50i-h313-h96-max-h313.dts # 前略 reserved-memory { #address-cells = ; #size-cells = ; ranges; ...