スキップしてメイン コンテンツに移動

投稿

dpkg-buildpackage にて distcc をつかい arm64 から amd64 に分散クロスコンパイル

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...
最近の投稿

arm64 kernel device tree で特定範囲のメモリ領域をマッピングさせない様にする

以前に入手した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; ...

Android TV Box X96Q Pro Plus にて a527 向けBSP 5.15カーネルを使いDebianのGNOMEをWaylandで実行:その4

今回は sunxi-fel を使い usb ブートで起動する方法です。まず、最初に用意するものは、USB Type A オス Tyep A オスケーブルです。筆者はアマゾンで購入したのですが、参考までに リンクはこちら になります。次に fel モードでブートさせるためにイヤホンジャック奥のスイッチを押すための爪楊枝などの非導電性の棒を用意してください。あとは8GB以上のUSBメモリで物理的に必要なものは以上です。 続いて u-boot をコンパイルします。 前回 とほぼ同じなのですが、USBの差し替えができるようにusbをresetするまで10秒待つようにさせます。以下、おさらいの意味も兼ねて修正・再掲しました。 mkdir -P /usr/src/h728usb chown YourUserID /usr/src/h728 git clone https://github.com/jernejsk/arm-trusted-firmware -b a523 git clone https://github.com/u-boot/u-boot -b v2025.10 cd arm-trusted-firmware make PLAT=sun55i_a523 DEBUG=0 bl31 cp build/sun55i_a523/release/bl31.bin ../u-boot cd ../u-boot.c cat > wait-for-10seconds-befoer-starting-usb.patch #include #include +#include #ifdef CONFIG_USB_STORAGE static int usb_stor_curr_dev = -1; /* current device */ @@ -610,6 +611,8 @@ if (strncmp(argv[1], "start", 5) == 0) { if (usb_started) return 0; /* Already started */ + printf("wait for 10 seconds before starting USB...\n"); + udelay...

Android TV Box X96Q Pro Plus にて a527 向けBSP 5.15カーネルを使いDebianのGNOMEをWaylandで実行:その3

前回 とほぼ同じなんですが、今回はブートローダを ストックロムから抜き出したものではなく、h728(a523)向けのu-bootをコンパイルし、これを使ってSDカードからブートさせる方法です。注意点としては今回の方法だとPSCIチェッカーが通らないのですが、サスペンドおよびサスペンドからの復帰は背面イーサネットコネクタの横のボタンで可能でした。その他は変わりません。 さっそくですが、設定です。まず ATF(arm-trusted-firmware)とu-boot のビルドからです。以下のようにしました。 sudo mkdir -P /usr/src/h728 sudo chown YourUserID /usr/src/h728 cd /usr/src/h728 git clone https://github.com/jernejsk/arm-trusted-firmware -b a523 git clone https://github.com/u-boot/u-boot -b v2025.10 cd arm-trusted-firmware make PLAT=sun55i_a523 DEBUG=0 bl31 cp build/sun55i_a523/release/bl31.bin ../u-boot cd ../u-boot make CROSS_COMPILE=aarch64-linux-gnu- x96q_pro_plus_defconfig make CROSS_COMPILE=aarch64-linux-gnu- -j 40 これでブートローダー (u-boot-sunxi-with-spl.bin)は生成できました。続いて 前回 と同じように PhoenixCard用のイメージを作成しますが、今回のブートローダはカーネルのコンフィグを変えないとブートエラーが発生しますので、 こちらからコンフィグを変えた diana.01.tar.gz をダウンロードし以下のようにして、解凍してください。 cd /usr/src/h728/radxa/radxa.tina/repo/device/config/chips/a527 cp ~/Downloads/diana.01.tar.gz . tar xzpf diana.01.tar.gz ...

Android TV Box X96Q Pro Plus にて a527 向けBSP 5.15カーネルを使いDebianのGNOMEをWaylandで実行:その2

表題の手順についてまとめておくことにしました。まず最初に、radxa社の cubie_a5e向けの tina(allwinner linux sdk)をダウンロードし、 こちらの設定ファイル を解凍し、以下の手順でPhoenixCard(allwinner向けのイメージ書き込みツール、Windows用)でSDカードに書き込むことができるイメージができます。 cubie a5e 向けのradxa社のtina linux sdk (約18GB)は こちら からダウンロードできますが、megaは5ギガ毎に無料転送枠が設定されているので全部で20時間ほど4回に渡って転送を再開させるとダウンロードが完了します。 ダウンロードが終わったらビルドマシン(Linux amd64機)で以下のようにします。 sudo mkdir -p /usr/src/h728/radxa/tina.radxa/repo sudo chown -R user1000 /usr/src/h728 cd /usr/src/h728/radxa/tina.radxa #ここにダウロードしたタール玉をコピー #コピーしたら以下のようにして解凍 cd repo tar xzvpf ../t527_tina5.0_aiot_sdk.repo.tar.gz #解凍が済んだら以下のようにしてソースを展開および取得 sudo apt -y install repo git repo sync -l mv target/a527 target/a527.tina.orig git clone https://github.com/radxa/allwinner-target -b target-a527-v1.4.6 target/a527 mv device/config/chips/a527 device/config/chips/a527.tina.orig git clone https://github.com/radxa/allwinner-device -b device-a527-v1.4.6 device/config/chips/a527 mv bsp bsp.tina.orig git clone https://github.com/radxa/allwinner-bsp -b cu...

Android TV Box X96Q Pro Plus にて a527 向けBSP 5.15カーネルを使いDebianのGNOMEをWaylandで実行:その1

そもそもこの機種はCPUがAlleinnert社のh728なのですが、ネット上にはh728向けの直接的なsdkは出回っていません。とはいうものの、h728のダイは a523/a527/t527と同じだということはわかっていたのでまず初めはOrange Pi 4a(t527)向けのSDKと以前に投稿したarmbianを走らす方法でつかったu-boot with spl で起動・画面出力できるところまでは行きました。ですがこの方法だと少しいじっただけでは音声が出ない上にXサーバのアクセラレーションが効かないうえ、動画再生支援機能がないため、実用的ではありませんでした。 そこでorange pi 4aにはandroid 13sdkがあるのでこちらのカーネルを使ってなんとかならないかと試行錯誤しようとしたのですが、そもそもアンドロイドの描画システムは、 Xorg serverで使うようにはなっていないので、こちらはそうそうに諦めました。 しかし、このアンドロイドsdKにはmali gpuドライバーのソースが含まれており、gpuを描画バックエンドにした方法はありだろうと漠然と思っていましたが、アンドロイドのSDKなのでDebianのシステムを構築するようにはなっていません。 そこで今度はRadxa社のCubie a5e(a527)向けのDebian11の既成イメージがあるので、ブートローダだけをストックロムに含まれているものに入れ替えたところ、GUIおよび音声出力ができました。しかし、Xサーバはアクセラレートされておらず、また動画再生支援(cedarx)は使えない上動画を再生しようとするとシステムごと落ちてしまうので、とりあえずソースコードをダウンロードしなんとかならないかと試行錯誤したのですが、既成のイメージと同じところまで来ましたが、相変らず動画のアクセラレーションは無論、ウィンドウの描画アクセラレーションは得られないのでgnomeの動きもカクカクしており実用的ではありませんでした。 そこでふと思いついたのがPCなどではGPUを描画バックエンドにしてXserverは起動しているよなと気がついたのですが、h728/a527向けのアクセラレーション付きのXサーバは調べたところ存在しませんでした。しかし、今一度考えMali GPU DRMは使えるようだったので、カーネル...

parted を使いコマンドラインのみで パーティションを拡大

今回も表題通りなのですが、コマンドラインのみでパーティションを拡大してみました。対象は /dev/sdc とすると以下のようになります。 # 現在のパーティション情報を得る $ sudo parted /dev/sdc print Model: Generic- SD/MMC (scsi) Disk /dev/sdc: 7819MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 37.7MB 71.3MB 33.6MB fat16 boot-resource msftdata 2 71.3MB 88.1MB 16.8MB env msftdata, no_automount 3 88.1MB 155MB 67.1MB boot msftdata, no_automount 4 155MB 4057MB 3901MB ext4 rootfs msftdata, no_automount 5 4057MB 7818MB 3761MB UDISK msftdata, no_automount # 不要なパーティションを削除 $ sudo parted /dev/sdc rm 5 # パーティションを拡大(7818MB を パーティション4の終わりに指定) $ sudo parted /dev/sdc resizepart 4 7818MB # 対象パーティションはext4でフォーマットされているので resize2fsで拡大 $ sudo resize2fs /dev/sdc4 簡単なことなんですが、備忘録として挙げてみました。今回は以上です。それでは。