電子辞書Brainをいじる (10) Brainux 最新版(Trixieベース)をインストールして遊ぶ


Brainux 最新版(Trixieベース) が公開されました。

Release 2026-03-25-024518 · brain-hackers/buildbrain · GitHub

詳しくは、上記のリンクにも書かれていますが、
大きな変更は、以下の通りとのことです。

  • Debian 13.4 “Trixie”ベース にアップグレード
  • USB Ethernet Gadget を RNDIS から NCM に切り替え
  • USB Video Class (USBカメラ) のKernelドライバを有効化

 

インストールについて

私のBrainは、PW-SH3ですので、
sdimage-2026-03-25-024518.zip
をダウンロードして、microSDカードに書き込みしてインストールします。

インストール方法については、以前のバージョンとほとんど変わりません。
インストールするイメージファイルが違う以外には、以下のリンクの方法で
インストール&パーティション拡張まで可能です。

電子辞書Brainをいじる (1) Brainuxの環境を構築する

今回は、前回の利用状況を元に、32GBのmicroSD(実容量:29GB)を以下で設定しました。
(前回は、FAT32:16:ext4:13GBで割り振っていたのですが、既にext4利用率が95%利用済になってまして・・・)

FAT32(WindowsCE領域):10GB
ext4(Brainux領域):19GB
swap領域:1GB

 

さっそく動かしてみる

起動してみましたが、前バージョン(Debian 11 bullseyeベース)との見た目の変更はありませんでした(スクリーンショットはswap領域の確保前)。

 

次にOS状況を確認してみます。
debian 13.4 (trixie)ベースですね。linux Kernelは6.1.70です。

user@brain:~$ uname -a
Linux brain 6.1.70-ga9f534c7f53e #1 PREEMPT Tue Mar 24 17:57:31 UTC 2026 armv5tejl GNU/Linux
user@brain:~$ cat /etc/debian_version
13.4
user@brain:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
user@brain:~$

 

ちょっと触った感じでは、

改善
・aptのインストールのためにレポジトリの変更は不要で
 そのままインストールできることを確認しました。

・Debian11(bullseye)では,SDL2.0使っているアプリはそのままだと
 Illegal instuructionで異常終了しましたが、SDL2.0の自ビルドしなくても
 実行できることを確認しました。
 (動作はあいかわらず重いですが)

・デフォルトで、USB Video Class (USBカメラ)がBrainuxで認識されるようになりました。
 (詳細は後程)

変動なし
・SDカード内のパーティション容量変更は、
 Debian11(bullseye)と同じ方法で可能なことを確認しました。

・PW-SH3本体のキーボードで、記号の入力時の繰り返し入力されてしまうのは
 相変わらず。

・PW-SH3のタッチパネルで、右クリックのエミュレーション有効の設定
 をしてみたところ、有効にできることを確認。

・apt upgrade実行時に、毎回「x11-ico-dvd」が更新で引っかかってくる


要確認
・USBサウンドデバイスを追加で付けているので、ついでに確認したのですが、
 APT経由でmplayerをインストールして、wav,mp3ファイルを再生しようと
 すると、Illegal insturuction で落ちるのはちょっと気になります
 (Debian11(bullseye)では再生可能)。
 (aplayでwavファイルの再生はOKでした)

 →Debian13のmplayerパッケージでは、ARMv7 以降で追加された命令込で
  ビルドされているようで、mplayerの自ビルドすることで、
  pulseaudioを起動している状態であれば正常に再生されることを確認しています
  (詳細は後程)


・SDL1.2使っているアプリが、 既存の bullseyeベースだと早いんですが、
 新しいtrixie ベース のBrainuxだと 動作自体はするんですが、異常に遅い・・・

 →確認したら、 libsdl1.2debian (sdl1.2ライブラリ)が、
   bullseyeベースだと「libsdl1.2」 を元に作成されているのに対し、
  trixie ベースから「sdl12-compat」を元に作成されているので、
  実質SDL2へのラッパーになってしまっているようでした。
   https://packages.debian.org/ja/bullseye/libsdl1.2debian
    https://packages.debian.org/ja/trixie/libsdl1.2debian
  (bookwormまではlibsdl1.2ベースで、trixie からsdl12-compatベース)

 →検証の結果、bullseyeのlibsdl1.2のソースを取得して、
  trixie ベースの新Brainux上でビルドすることで、
  bullseyeベースBrainuxと同様にSDL1.2アプリが動作するようになりました。
  (詳細は後程)

・bullseyeとtrixie のライブラリ上の扱いの違いとして、
 t64ABIの採用があるようです。
 bullseye 非t64ABI time_tが32bit
 trixie    t64ABI time_tが64bit

 「旧ABI(非t64ABI)」と「t64 ABI」の違いは、
 日付用の型time_tを32bitか64bitに拡張したかどうかという点になります。
 time_tが32bitだと2038年1月19日以降の時刻が表現できない(Y2038問題)ので、
 このタイミングで変更になった模様。

 「旧ABI(非t64ABI)」と「t64 ABI」を利用したアプリはバイナリ互換がないので、
 両方を混在させると、aptでのパッケージ管理がめちゃくちゃになります。
 (整合性が崩れてまともにアプリが追加できなくなる)

 このため、既存のバイナリパッケージをインストールする際には、
 trixie上でのパッケージで依存パッケージ名にt64が含まれていないことを確認しましょう。

 最新パッケージに依存パッケージ名にt64が含まれていたら、
 以前のバージョンのバイナリパッケージではなく、ソースからのビルドを推奨します。
 (確実性で言えば、すべてソースからのビルドするのが理想ですが、これは大変なので)

 

USB Video Class (USBカメラ) の動作確認

今回のビルドで、デフォルトでUSB Video Classが認識されるようになりました。

USBカメラとか、HDMIキャプチャのUVCデバイスをUSB に接続するだけで、
ドライバまで適用されます。

Bus 001 Device 008: ID 298f:1996 MACROSILICON ShadowCast
|__ Port 003: Dev 008, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 003: Dev 008, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 003: Dev 008, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 003: Dev 008, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 003: Dev 008, If 4, Class=Human Interface Device, Driver=usbhid, 480M

user@brain:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 413c:301a Dell Computer Corp. Dell MS116 Optical Mouse
Bus 001 Device 004: ID 04d9:a01c Holtek Semiconductor, Inc. wireless multimedia keyboard with trackball [Trust ADURA 17911]
Bus 001 Device 006: ID 0b95:772b ASIX Electronics Corp. AX88772B
Bus 001 Device 008: ID 298f:1996 MACROSILICON ShadowCast
user@brain:~$
user@brain:~$ lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=ci_hdrc/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 002: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 002: Dev 004, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 003: Dev 008, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 003: Dev 008, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 003: Dev 008, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 003: Dev 008, If 3, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 003: Dev 008, If 4, Class=Human Interface Device, Driver=usbhid, 480M
        |__ Port 004: Dev 006, If 0, Class=Vendor Specific Class, Driver=asix, 480M
user@brain:~$

 

UVCを利用できるアプリケーションとして「V4L2 Test Bench(qvv4l2)」を試してみました。

$ sudo apt update
$ sudo apt install qv4l2

$ qv4l2

こんな感じで、USBHDMIキャプチャを使って、Brainをサブモニター化したり、
USBカメラを利用して、ストリーミングするような使い方ができるようになりました。
(ちょっと遅延は感じられますが、hdmiキャプチャ機器の遅延もあるかもしれません。)

なお、guvcviewも試してみましたがこちらは動作が重くて使うのは難しそうです。

 

APT経由でインストールしたmplayerがIllegal instuructionで落ちるのを対策する

USBサウンドデバイスを追加で付けているのですが、wavならaplayで再生できるけど、MP3はaplayでは再生できないので、APT経由でmplayerをインストールしてみました。
ただ、APTパッケージ版のmplayerは起動するだけでIllegal instuructionで落ちる現象が発生しました。

$ sudo apt install mplayer
$ mplayer
Illegal instruction

Debian11(bullseye)でのmplayerでは再生可能だったのは確認済。

 

では、どんな理由で落ちているかを確認します。

$ sudo apt install gdb
$ gdb mplayer
(gdb) handle SIGILL stop

(gdb) run
Program received signal SIGILL, Illegal instruction.
0x005425d4 in ?? ()

(gdb) disassemble $pc-16, $pc+16
Dump of assembler code from 0x5425c4 to 0x5425e4:
0x005425c4: str r3, [sp, #20]
0x005425c8: mov r3, #0
0x005425cc: bl 0x41c330 <__gettimeofday64@plt>
0x005425d0: ldr r0, [sp]
=> 0x005425d4: movw r2, #16960 @ 0x4240
0x005425d8: movt r2, #15
0x005425dc: ldr r3, [sp, #8]
0x005425e0: ldr r1, [pc, #64] @ 0x542628
End of assembler dump.
(gdb) exit

どうやらmovw命令を実行しようとして、Illegal instruction(未定義命令実行)で落ちているようです。

確認すると、movw命令は、ARMv7-A/Rアーキテクチャ以上でサポートされています。
BrainのCPUは、ARM926EJ-SでARMv5TEJでARM5系なので、エラーになります。
なので、新Brainuxで動かすには、自分でBrainに合わせたビルドをする必要があります。

APTパッケージから、バイナリの他にもソースパッケージも入手できるので、
その方法で、ビルドしていきます。

$ sudo apt update
$ sudo apt-get install g++ build-essential
$ cd
$ mkdir DPKG-BUILD
$ cd DPKG-BUILD
$ mkdir mplayer
$ cd mplayer

#ソースパッケージをインストールする
$ sudo apt source mplayer

#ビルドに必要なパッケージをインストールする
$ sudo apt-get build-dep mplayer
$ cd mplayer-1.5+svn38674

#もし、ビルド時のオプションを変更したいのであれば、
#以下のように変更します。
#(追加指定しなくても大丈夫です)
$ vi debian/rules

#!/usr/bin/make -f

#!/usr/bin/make -f
export DEB_CFLAGS_MAINT_APPEND = -O3 -march=native -msoft-float -fomit-frame-pointer
export DEB_LDFLAGS_MAINT_APPEND = -lX11 -lXext -lXinerama


CONFIGURE_FLAGS = \ の一部
–extra-ldflags=”${LDFLAGS}” \
$(archconf)

–extra-ldflags=”${LDFLAGS}” \
–disable-armv6 \
–disable-armv6t2 \
–disable-armvfp \
–disable-neon \
–disable-thumb \
–disable-sdl \
–enable-x11 \
–disable-gl \
–enable-alsa \
$(archconf)

 

#ビルドします(Brainでの自ビルドには7-8時間程度かかる模様)
$ sudo dpkg-buildpackage -us -uc

#debパッケージが作成されるので、個別インストールします。
#(dbgsymを含むパッケージ名のものは、デバック用なので通常はインストール不要です。)

$ cd ..
$ ls -al *.deb
$ sudo dpkg -i mplayer_1.5+svn38674-2_armel.deb
$ sudo dpkg -i mencoder_1.5+svn38674-2_armel.deb
$ sudo dpkg -i mplayer-doc_1.5+svn38674-2_all.deb
$ sudo dpkg -i mplayer-gui_1.5+svn38674-2_armel.deb

#ただ、手動でdebパッケージをインストールした場合、apt upgradeでaptレポジトリの
#パッケージが再導入されてしまうので、保留対象パッケージに指定します。

$ sudo apt-mark hold mplayer mencoder mplayer-doc mplayer-gui

(もし、ビルドしないでdebファイルだけ入手した場合は、dpkg -i でインストール時にパッケージが足りないというメッセージが出ることがあるので、その場合は手動で足りないパッケージをインストールしてから、再度dpkg -i でインストールしてみてください。
sudo apt –fix-broken install <パッケージ名>)

 

#これで、インストールできました。
#MP3ファイルを再生させてみます。

$ mplayer music.mp3

#すると最初の瞬間は音が出るのですが、その後無音になりました。
#ん?ということで、試しにpulseaudio をインストールして試してみます。

$ sudo apt install pulseaudio

#インストール直後はサービスが起動していないのですが、以下のコマンドで起動できます。
#(次回再起動時には、自動で起動します。)

#pulseaudio起動コマンド
$ pulseaudio –start

(その他詳しいpulseaudioの操作ついては、PulseAudio導入についてを参照してください。)

では再度MP3ファイルを再生させてみます。

$ mplayer music.mp3

ノイズも無くきれいに再生できました。成功ですね。

 

Bulleseye(Debian11ベース)やbookworm(Debian12)のパッケージをインストールする方法

新Brainuxはtrixie(Debian13ベース)なので、APTコマンドでインストールされるのもtrixie用のパッケージになります。

以前のBrainuxはBulleseye(Debian11ベース)ですので、
互換性などの理由で、以前のバージョンのアプリをインストールしたいといった状況になる場合があります。

この場合は、APTレポジトリリストにBulleseyeのレポジトリを追加することで、対応することができます(2026/3/27時点)。

$ sudo vi /etc/apt/sources.list.d/bullseye.list

deb http://archive.debian.org/debian bullseye main contrib non-free
deb-src http://archive.debian.org/debian bullseye main contrib non-free

$ sudo vi /etc/apt/preferences.d/bullseye.pref

Package: *
Pin: release n=bullseye
Pin-Priority: 50

これで、のように手動指定することで、
bullseyeのパッケージを手動導入できるようになります。

 

同じように、bookworm(Debian 12) の場合は、以下のように追加します。

$ sudo vi /etc/apt/sources.list.d/bookworm.list

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

$ sudo vi /etc/apt/preferences.d/bookworm.pref

Package: *
Pin: release n=bookworm
Pin-Priority: 50

 

また、bookworm の特定パッケージだけ使いたい場合は以下のようにします。
(SAMPLE-libsdl1.2debianというパッケージの場合)

$ sudo vi /etc/apt/preferences.d/bookworm-Packege.pref

Package: Packege-Name
Pin: release n=bookworm
Pin-Priority: 700

なお、pin-proprity(リポジトリの優先度)は以下のコマンドで表示できます。

$ apt-cache policy

user@brain:~$ apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 https://packagecloud.io/brainhackers/brainux/any any/main armel Packages
     release v=1,o=packagecloud.io/brainhackers/brainux,a=any,n=any,l=brainux,c=main,b=armel
     origin packagecloud.io
  50 http://archive.debian.org/debian bullseye/non-free armel Packages
     release v=11.11,o=Debian,a=oldstable,n=bullseye,l=Debian,c=non-free,b=armel
     origin archive.debian.org
  50 http://archive.debian.org/debian bullseye/contrib armel Packages
     release v=11.11,o=Debian,a=oldstable,n=bullseye,l=Debian,c=contrib,b=armel
     origin archive.debian.org
  50 http://archive.debian.org/debian bullseye/main armel Packages
     release v=11.11,o=Debian,a=oldstable,n=bullseye,l=Debian,c=main,b=armel
     origin archive.debian.org
 500 http://security.debian.org/debian-security bookworm-security/main armel Packages
     release v=12,o=Debian,a=oldstable-security,n=bookworm-security,l=Debian-Security,c=main,b=armel
     origin security.debian.org
 500 http://deb.debian.org/debian bookworm-updates/main armel Packages
     release v=12-updates,o=Debian,a=oldstable-updates,n=bookworm-updates,l=Debian,c=main,b=armel
     origin deb.debian.org
  50 http://deb.debian.org/debian bookworm/non-free-firmware armel Packages
     release v=12.13,o=Debian,a=oldstable,n=bookworm,l=Debian,c=non-free-firmware,b=armel
     origin deb.debian.org
  50 http://deb.debian.org/debian bookworm/non-free armel Packages
     release v=12.13,o=Debian,a=oldstable,n=bookworm,l=Debian,c=non-free,b=armel
     origin deb.debian.org
  50 http://deb.debian.org/debian bookworm/contrib armel Packages
     release v=12.13,o=Debian,a=oldstable,n=bookworm,l=Debian,c=contrib,b=armel
     origin deb.debian.org
  50 http://deb.debian.org/debian bookworm/main armel Packages
     release v=12.13,o=Debian,a=oldstable,n=bookworm,l=Debian,c=main,b=armel
     origin deb.debian.org
 500 http://deb.debian.org/debian-security trixie-security/updates/main armel Packages
     release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=armel
     origin deb.debian.org
 500 http://deb.debian.org/debian trixie-updates/main armel Packages
     release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=armel
     origin deb.debian.org
 500 http://deb.debian.org/debian trixie/non-free armel Packages
     release v=13.4,o=Debian,a=stable,n=trixie,l=Debian,c=non-free,b=armel
     origin deb.debian.org
 500 http://deb.debian.org/debian trixie/contrib armel Packages
     release v=13.4,o=Debian,a=stable,n=trixie,l=Debian,c=contrib,b=armel
     origin deb.debian.org
 500 http://deb.debian.org/debian trixie/main armel Packages
     release v=13.4,o=Debian,a=stable,n=trixie,l=Debian,c=main,b=armel
     origin deb.debian.org
Pinned packages:
     libsdl1.2debian -> 1.2.15+dfsg2-8 with priority 700
user@brain:~$

 

優先度(Pin-Priority)は、大体こんな感じで設定すればいいみたいです。

  • 1001→ダウングレード許可(手動設定)
  • 990 → Default-Release(trixie を優先したい時)
  • 700 → SDL1.2 のように個別 pinning を設定する場合に利用
  • 500 → 通常のリポジトリ(自動選択される)
  • 100 → インストール済みパッケージ
  • 50 → 手動指定ならインストール可(安全)
  • 0→ インストール不可
  • -1→ 依存関係でも絶対に使わない

 

以上のファイルを作成した後で
以下のコマンドで、各リポジトリのアプリリストを取得できます。

$ sudo apt update

user@brain:~$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
Get:3 http://deb.debian.org/debian-security trixie-security/updates InRelease [4                                            3.4 kB]
Get:4 http://deb.debian.org/debian bookworm InRelease [151 kB]
Get:5 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:6 http://security.debian.org/debian-security bookworm-security InRelease [48                                            .0 kB]
Get:7 http://archive.debian.org/debian bullseye InRelease [116 kB]
Get:9 http://deb.debian.org/debian-security trixie-security/updates/main Sources                                             [123 kB]
Hit:8 https://packagecloud.io/brainhackers/brainux/any any InRelease
Get:10 http://deb.debian.org/debian-security trixie-security/updates/main armel                                             Packages [106 kB]
Get:11 http://deb.debian.org/debian bookworm/main armel Packages [8,451 kB]
Get:12 http://security.debian.org/debian-security bookworm-security/main armel Packages [275 kB]
Get:13 http://security.debian.org/debian-security bookworm-security/main Translation-en [178 kB]
Get:14 http://security.debian.org/debian-security bookworm-security/contrib Translation-en [652 B]
Get:15 http://security.debian.org/debian-security bookworm-security/non-free-firmware Translation-en [472 B]
Get:16 http://deb.debian.org/debian bookworm/main Translation-en [6,108 kB]
Get:17 http://archive.debian.org/debian bullseye/non-free Sources [81.0 kB]
Get:18 http://archive.debian.org/debian bullseye/main Sources [8,500 kB]
Get:19 http://deb.debian.org/debian bookworm/contrib armel Packages [39.7 kB]
Get:20 http://deb.debian.org/debian bookworm/contrib Translation-en [48.4 kB]
Get:21 http://deb.debian.org/debian bookworm/non-free armel Packages [54.3 kB]
Get:22 http://deb.debian.org/debian bookworm/non-free Translation-en [68.1 kB]
Get:23 http://deb.debian.org/debian bookworm/non-free-firmware armel Packages [5,480 B]
Get:24 http://deb.debian.org/debian bookworm/non-free-firmware Translation-en [20.9 kB]
Get:25 http://deb.debian.org/debian bookworm-updates/main armel Packages [6,928 B]
Get:26 http://deb.debian.org/debian bookworm-updates/main Translation-en [5,448 B]
Get:27 http://archive.debian.org/debian bullseye/contrib Sources [43.2 kB]
Get:28 http://archive.debian.org/debian bullseye/main armel Packages [7,778 kB]
Get:29 http://archive.debian.org/debian bullseye/main Translation-en [6,235 kB]
Get:30 http://archive.debian.org/debian bullseye/contrib armel Packages [37.3 kB]
Get:31 http://archive.debian.org/debian bullseye/contrib Translation-en [46.9 kB]
Get:32 http://archive.debian.org/debian bullseye/non-free armel Packages [51.6 kB]
Get:33 http://archive.debian.org/debian bullseye/non-free Translation-en [92.5 kB]
Fetched 38.8 MB in 4min 40s (139 kB/s)
5 packages can be upgraded. Run 'apt list --upgradable' to see them.
user@brain:~$

レポジトリ指定でのアプリの導入などは、aptコマンド、apt-get コマンドで可能です。
-t オプションで、レポジトリを指定できます。

#パッケージ詳細表示
$ sudo apt -a show <パッケージ名>
#パッケージインストール
$ sudo apt -t bookworm install <パッケージ名>

#パッケージのソースをインストール
$ sudo apt -t bookworm source <パッケージ名>
#パッケージに必要な前提パッケージをインストール
$ sudo apt -t bookworm build-dep <パッケージ名>
# ソースパッケージの情報を表示します。
$ apt-cache -t bookworm showsrc <パッケージ名>

bullseyeとtrixie のライブラリ上の扱いの違いとして、
t64ABIの扱いがあるようです。
bullseye 非t64ABI time_tが32bit
trixie   非t64ABI time_tが64bit

「旧ABI(非t64ABI)」と「t64 ABI」を利用したアプリはバイナリ互換がないので、
両方を混在させると、aptでのパッケージ管理がめちゃくちゃになります。
(整合性が崩れてまともにアプリが追加できなくなる)

このため、既存のバイナリパッケージをインストールする際には、
trixie上でのパッケージで依存パッケージ名にt64が含まれていないことを確認しましょう。

最新パッケージに依存パッケージ名にt64が含まれていたら、
以前のバージョンのバイナリパッケージではなく、ソースからのビルドを推奨します。
(確実性で言えば、すべてソースからのビルドするのが理想ですが、これは大変なので)

 

SDL1.2使っているアプリが遅いのを対策する

SDL1.2使っているアプリが、
既存の bullseyeベースだと早いんですが、新しいtrixie ベースのBrainuxだと
動作自体はするんですが、異常に遅い・・・

確認したら、libsdl1.2debian (sdl1.2ライブラリ)が、
bullseyeベースだと、libsdl1.2 を元に作成されているのに対し、
trixie ベースから、sdl12-compatを元に作成されているので、SDL2へのラッパーになってしまっているようでした。

libsdl1.2debian (bullseye) [ ソース: libsdl1.2  ]  SDL1.2
https://packages.debian.org/ja/bullseye/libsdl1.2debian

libsdl1.2debian (trixie) [ ソース: sdl12-compat  ] SDL2へのラッパー
https://packages.debian.org/ja/trixie/libsdl1.2debian

bookwormはまだlibsdl1.2ベースでした。

なので、以下のどちらかが対策案になります
・bookwormのlibsdl1.2debian (libsdl1.2ベース)をインストールする(不採用)
 →結果、副作用が多く、断念
・libsdl1.2をtrixie用にビルドする(採用)
 →インストールに手間はかかるが、副作用が少ない

bookwormのlibsdl1.2debian (libsdl1.2ベース)をインストールする(副作用有で不採用)

レポジトリを追加していれば、以下で行けるはずとやってみた。
/etc/apt/preferences.d/bookworm-libsdl1.2.prefの指定で、
bookwormのものがインストールされます。
$ sudo apt update
$ sudo apt-get install –reinstall libsdl1.2debian

エラー
mplayer(mencoder)をインストールしていることで、一部ライブラリが競合してしまっているみたい
前提パッケージのほとんどがtrixie の “t64 ABI” と bookworm の “旧 ABI”が混じってしまっている。

以下で、sdl1.2をインストールはできましたが、その後のmplayerを入れる際に
別のt64 ABIライブラリと競合してしまっていて、インストールできない。

sudo apt remove mplayer mencoder mplayer-doc mplayer-gui
sudo apt install -t bookworm libpng16-16 libasound2 libglib2.0-0 libreadline8
sudo apt install -t bookworm libsdl1.2debian libsdl-mixer1.2 libsdl-image1.2
sudo apt install -t bookworm mplayer mencoder mplayer-doc mplayer-gui

他のaptレポジトリ登録アプリのgemdropxとかも、t64 ABI関係の競合でインストールできなくなってしまうので、trixieとしてのパッケージ整合性が完全に壊れてしまっている。

なお「t64 ABI」と「旧ABI」の違いは、日付用の型time_tを32bitか64bitに拡張したという点になります。
time_tが32bitだと2038年1月19日以降の時刻が表現できない(Y2038問題)ので、このタイミングで変更になった模様。

また「旧ABI」と「t64 ABI」を利用したアプリはバイナリ互換がないので
そのままのバイナリパッケージはインストールできない。
もし一部を「旧ABI」に戻してしますと、「t64 ABI」前提のtrixie 用パッケージもインストーるできなくなるということで、この方法はダメと判断しました。

元に戻せるかやってみる(面倒くさければ、brainuxの再展開でもいいかもしれません。)

$ sudo apt remove mplayer mencoder mplayer-doc mplayer-gui
$ sudo apt remove libsdl1.2debian libsdl-mixer1.2 libsdl-image1.2
$ sudo apt autoremove
$ sudo mv /etc/apt/preferences.d/bookworm-libsdl1.2.pref /etc/apt/preferences.d/bookworm-libsdl1.2.pref.disabled
$ sudo apt install linsdl1.2debian
$ sudo mv /etc/apt/preferences.d/bookworm-libsdl1.2.pref.disabled /etc/apt/preferences.d/bookworm-libsdl1.2.pref

一応これで戻ったっぽいです。

 

libsdl1.2をtrixie用にビルドする(採用)

libsdl1.2をビルドする方法です(20260405一部パラメータ変更)。

ソースをApt sourceでbookwormリポジトリから引っ張ってこれました。こようとしました。ただ、SDL1.2(1.2.15)は bullseye が最後のソースのため、bookwormリポジトリにあるのはそのパッチ版になります(-6->-8)。

$ sudo apt update
$ sudo apt-get install g++ build-essential
$ mkdir DPKG-BUILD
$ cd DPKG-BUILD
$ mkdir libsdl1.2debian
$ cd libsdl1.2debian
$ apt -t bookworm source libsdl1.2debian
$ sudo apt build-dep libsdl1.2debian
$ cd libsdl1.2-*

#(変更しなくてもビルドは通ります。いったん最適化の目的で以下の設定を追加しました。)
$ vi debian/rules

#!/usr/bin/make -f の下に、以下の行を追加します。

export DEB_CFLAGS_MAINT_APPEND = -march=armv5tej -marm -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-tree-vectorize -fno-aggressive-loop-optimizations -fno-strict-overflow

export DEB_CXXFLAGS_MAINT_APPEND = $(DEB_CFLAGS_MAINT_APPEND)

以下のように追記します。

confflags = –disable-rpath –enable-sdl-dlopen \
–disable-video-ggi –disable-video-svga –disable-video-aalib \

confflags = –disable-rpath –enable-sdl-dlopen \
–disable-assembly –disable-video-opengl –disable-video-x11-xrandr –disable-video-x11-xv –disable-nasm –enable-video-x11 –enable-video-fbcon –disable-video-dga –disable-video-directfb –enable-joystick –disable-cdrom \
–disable-video-ggi –disable-video-svga –disable-video-aalib \

#ビルドに必要なパッケージを導入(dpkg-buildpackageで足りないパッケージが表示されます。)
$ sudo apt install libcaca-dev

#ビルド(Brain自機ビルドでは、1.5時間くらいかかりました。)
$ dpkg-buildpackage -us -uc -b

#最適化の結果、symbolsエラーになる場合があるので、
#以下のファイルを編集して、再実行します。。
vi debian/libsdl1.2debian.symbols

以下の2行を削除します。
SDL_strlcat@Base 1.2.15
SDL_strlcpy@Base 1.2.15

$ dpkg-source –commit
fix-symbols

$ dpkg-buildpackage -us -uc -b -nc

 

$ cd ..
$ sudo dpkg -i libsdl1.2debian_1.2.15+dfsg2-8_armel.deb
$ sudo dpkg -i libsdl1.2-dev_1.2.15+dfsg2-8_armel.deb
$ sudo apt-mark hold libsdl1.2debian libsdl1.2-dev
$ sudo apt-mark showhold

これで、libsdl1.2debianがシステムに上書きインストールされました。
apt管理外の登録もしていますので、勝手に上書きされることもないはずです。

これで、trixieのレポジトリに登録しているSDL1.2を利用するようなアプリでも、
普通にapt install でインストールできることも確認しています。
これらのパッケージの依存要件としてはlibsdl1.2debianは>= 1.2.15で定義されていましたので、libsdl1.2からの自ビルドは想定されていたのかもしれません。。
(「gemdropx」,「pingus」で確認しました。)

$ apt show pingus
$ sudo apt install pingus

 

bullseyeではSDL1.2を使っていたアプリがtrixieではSDL2.0になっている場合の対応

bullseyeではSDL1.2を使っていたアプリがtrixieではSDL2.0になっている場合、
単純にapt installで導入するだけでは、今まで通りの速度では動作してくれません。
(brainでは、SDL2を使っているアプリでは、非常に低速になるため)

この場合は、以前のOS(Debian11,debian12)などで、sdl1.2を使っているバージョンを探して、
そのソースを入手して自ビルドする必要があります。

そのようにSDL1.2からSDL2へ移行しているアプリや、パッケージがなくなったアプリは、
以下のようなものがあります



https://nsb.homeip.net/wp/?p=4695https://nsb.homeip.net/wp/?p=4695
(見つけたもので、机上チェックのみしたもの多数なので、未確認なものを含みます)。

このあたりをベースに確認しました。

 

hannah の場合

(trixie 以降でSDL2に移行済。t64ABI未使用。bookwormからパッケージインストール可能)

hannahを例にとって、インストールしてみます。

まずは、SDL1.2依存のパッケージを探します。
もしあれば、trixie上でt64を含むパッケージ名のものに依存があるかどうかも確認してください。

trixieでのパッケージ情報
https://packages.debian.org/ja/trixie/hannah
→dep: libsdl2-2.0-0 (>= 2.0.12) となっているので、SDL2依存です。
→t64  : を含むパッケージ なし
 →バイナリパッケージを入れても危険性は少ないと思われます。

bookwormでのパッケージ情報
https://packages.debian.org/ja/bookworm/hannah
→dep: libsdl-image1.2 (>= 1.2.10) となっているので、SDL1.2依存です。

bullseyeでのパッケージ情報
https://packages.debian.org/ja/bullseye/hannah
→dep: libsdl-image1.2 (>= 1.2.10) となっているので、SDL1.2依存です。

これを見ると、bookwormのバージョンまではSDL1.2依存だったというのがわかります。
この情報はapt showで確認することも出来ます(-aで、全レポジトリの情報が表示されます)。
 apt -a show hannah

では、bookwormレポジトリから、インストールします。
通常実行パッケージをインストールする場合は、以下のように入力しますが
状況によっては依存関係でエラーになります(t64ABIに切り替わっているABIにリンクされていたらアウト)。
今回のようにtrixie版で、「t64」を含むパッケージが依存関係に含まれていないのであれば、
直接入れても危険性は少ないです(が、完ぺきではないでのであとで問題になる可能性はゼロではないです。このリスクを避けるにはソースからのインストールになります)。

$ sudo apt -t bookworm install hannah

今回は、特に依存エラーがなく、bookworm 版のhannahが入りました。
そのままインストールできて、プレイも出来ました。

あとは、勝手にアップグレードされないように aptでホールドもしておきます。
(専用データファイルがあればそれも追加)

$ sudo apt-mark hold hannah hannah-data

 

もし、既に最新版のhannahがはいっていた場合は、うまく入らない場合があるので、
以下のようにパッケージを削除してから再導入してみてください。
また、apt show -a で依存関係を見て、特定のバージョンに依存していて、
既にそれより高いバージョンが入っているような場合は、hannahをパッケージも削除します。

今回の場合、依存関係を確認してみます。

trixie
Depends: hannah-data (= 2.0.1+ds1-0.3), libc6 (>= 2.34), libgcc-s1 (>= 3.5), libsdl2-2.0-0 (>= 2.0.12), libsdl2-image-2.0-0 (>= 2.0.5), libsdl2-mixer-2.0-0 (>= 2.6.0), libsdl2-ttf-2.0-0 (>= 2.0.15), libstdc++6 (>= 13.1)

bookworm
Depends: hannah-data (= 1.0-3.3), libc6 (>= 2.34), libgcc-s1 (>= 3.5), libsdl-image1.2 (>= 1.2.10), libsdl-mixer1.2 (>= 1.2.12), libsdl-ttf2.0-0, libsdl1.2debian (>= 1.2.15), libstdc++6 (>= 11)

このように「hannah-data」もダウングレードする必要があることが判るので、
以下のようにいったんパッケージを削除してから、再導入します。

$ sudo apt remove hannah hannah-data
$ sudo apt -t bookworm install hannah

 

enigma の場合

(trixie以降でSDL2に移行済。t64ABI使用。bookwormからソースを入手してビルド可能)

enigmaを例にとって、ソースからインストールしてみます。

まずは、SDL1.2依存のパッケージを探します。
もしあれば、trixie上でt64を含むパッケージ名のものに依存があるかどうかも確認してください。

trixieでのパッケージ情報
https://packages.debian.org/ja/trixie/enigma
→dep: libsdl2-2.0-0 (>= 2.0.12) となっているので、SDL2依存です。
→t64  : を含むパッケージ あり(libcurl3t64-gnutls)
 →バイナリパッケージがもし入ってもt64 ABIの混在が発生する可能性
  があるので危険。ソースからの導入が安全

bookwormでのパッケージ情報
https://packages.debian.org/ja/bookworm/enigma
→dep: libsdl-image1.2 (>= 1.2.10) となっているので、SDL1.2依存です。

bullseyeでのパッケージ情報
https://packages.debian.org/ja/bullseye/enigma
→dep: libsdl-image1.2 (>= 1.2.10) となっているので、SDL1.2依存です。

これを見ると、bookwormのバージョンまではSDL1.2依存だったというのがわかります。
この情報はapt showで確認することも出来ます(-aで、全レポジトリの情報が表示されます)。
 apt -a show enigma

では、bookwormレポジトリから、インストールします。
通常実行パッケージをインストールする場合は、以下のように入力しますが
状況によっては依存関係でエラーになります(t64ABIに切り替わっているABIにリンクされていたらアウト)。
今回のようにtrixie版で、「t64」を含むパッケージが依存関係に含まれている場合は、
バイナリパッケージを入れるのは危険なので、ソースでインストールする必要があります。

$ cd
$ cd DPKG-BUILD
$ mkdir enigma
$ cd enigma
$ apt source -t bookworm enigma

Error: Can not find version ‘1.20-dfsg.1-2.2’ of package ‘enigma’
Error: Unable to find a source package for enigma

#エラーになりました。
#パッケージ状況を確認します。
$ apt-cache showsrc -t bookworm enigma

Package: enigma
Binary: enigma, enigma-doc, enigma-data
Version: 1.30+dfsg-3
~

Package: enigma
Binary: enigma, enigma-doc, enigma-data
Version: 1.20-dfsg.1-2.2
~

すると、bookworm に登録しているバージョンが1.30(デフォルト)と1.20と2つあり、
sudo apt source -t bookworm enigma では、1.20を要求してしまうのですが、
“存在するが、優先度が低い”という扱いになって、発見できなかったようです。

なので、バージョン指定も込みで指定してソースをダウンロードします。
(もしこれでもダメなら、bullseye のものをダウンロードするしかありません。)

$ apt source -t bookworm enigma=1.20-dfsg.1-2.2


#依存関係を解決します。
$ sudo apt -t bookworm build-dep enigma=1.20-dfsg.1-2.2

依存エラー発生しました。

エラーになった場合は、ダメもとでtrixie版としての依存関係の解決もしておきます。
(trixie版パッケージの前バージョンのビルドであれば、これで結構足りないパッケージが補完される場合が多いです)

$ sudo apt build-dep enigma

#ビルド準備。
$ cd enigma-*

#申し訳程度の最適化設定(有効になっているか未確認)
$ vi debian/rules

#!/usr/bin/make -f の下に、以下の行を追加します。

export DEB_CFLAGS_MAINT_APPEND = -march=armv5tej -marm -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-tree-vectorize -fno-aggressive-loop-optimizations -fno-strict-overflow

export DEB_CXXFLAGS_MAINT_APPEND = $(DEB_CFLAGS_MAINT_APPEND)


#ビルドします。
$ dpkg-buildpackage -us -uc -b

dpkg-source --before-build .
dpkg-checkbuilddeps: error: unmet build dependencies: libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-gfx1.2-dev libsdl-ttf2.0-dev quilt
dpkg-buildpackage: error: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: hint: satisfy build dependencies with your package manager frontend

#以下のパッケージが足りないって言われた。
libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-gfx1.2-dev libsdl-ttf2.0-dev quilt

#なので、trixie版の依存パッケージを入れる
$ sudo apt install libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-gfx1.2-dev libsdl-ttf2.0-dev quilt

#再度ビルドを開始します。(多分brain自ビルドで、11時間ぐらい?)
$ dpkg-buildpackage -us -uc -b

#パッケージをインストールして、依存無視も入れます。
#パッケージインストール時にもしパッケージが足りないようなメッセージが出たら、
#個別でインストールしてみてください。($ sudo apt install fonts-dejavu-extra)

$ cd..
$ sudo dpkg -i enigma_1.20-dfsg.1-2.2_armel.deb enigma-data_1.20-dfsg.1-2.2_all.deb enigma-doc_1.20-dfsg.1-2.2_all.deb

$ sudo apt-mark hold enigma enigma-data enigma-doc

$ enigma

 

Python3-pygameのアプリが遅い

TrixieベースのBrainuxの場合、python3-pygameの基盤がSDL1.2からSDL2に
切り替わっているため、そのままでは非常に重くなり動作困難になります。

python3-pygameのSDL1.2化に挑戦していますが、現在難航中です。
(動作確認しているアプリが少ないので、影響はないとは思いますが)
python3-pygame ライブラリを利用したソフトウェア

Python3.13になって、いろいろ内部仕様が変わっていてSDL1.2化と共存できていません。

  • pygame 1.9.6 が SDL 1.2 を使う最後の安定版です。
  • ただし、このバージョンは Python 3.8 までしか公式対応していません。
  • Python 3.13 で動かすには、ソースコードを修正してビルドする必要があります。

 

bookwormパッケージ以前のGTK2のアプリが動かない

bookwormパッケージのGTK2 アプリは libgtk2.0-0(非 t64)を要求しますが、
libgtk2.0-0 は libcups2(non‑t64) → libgnutls30(non‑t64) → libnettle8(non‑t64:3.8.1-2) を要求します。
しかし apt 3.0.3(t64) が “libnettle8 < 3.9.1-2.2~ を禁止” しているため、依存関係が絶対に解決できません。

ですので、libgtk2.0-0を利用するbookwormパッケージについては、TrixieバースのBainuxでは動きません。

gnome-games, gtkpool, gtans あたりが対象になります。

 

Trixieで利用可能になったパッケージの紹介

debian13(Trixie)で、新たに追加になったもいくつかあります。
(それ以前でのbullseyeなどではapt installできません)

———-

trixie 以降でインストール対応のアプリ

SDL1.2

spout  小さな抽象的な白黒2D洞窟シューティングゲーム(bullseyeではapt installできない)

https://packages.debian.org/trixie/spout

起動:spout

これは日本の開発者Kuniによる、小規模で抽象的なシューティングゲームです。エンジンの排気ガスが洞窟の壁を侵食する道具としても機能する「洞窟飛行ゲーム」です。

あなたの目標は、洞窟の壁や窓枠に衝突することなく、できる限り長く上空へ飛び続けることです。

●縦スクロールの洞窟飛行ゲーム
方向変換とスラスターだけで洞窟内を飛行します。
洞窟の壁やウインドウの境界にぶつかるとゲームオーバーです。
できるだけ高い所まで、上に向かって進みます。

スペースキーを押して開始します。
シフトキーを押しながらエスケープキーを押すとプログラムを終了します。
【操作】[←]:左回転 [→]:右回転 [space]:進む [Esc]:一時停止

trixie からリポジトリに追加になったゲームです。

Brainでも快適にプレーできます
(trixieベースのDebianでは、libsdl1.2debianの入れ替えの必要あり)

噴射で洞窟の壁が破壊できるので、
狭いところや行き止まりを噴射を使って広げるなんてテクニックも必要になって切るようです。もちろん失速の期限性がありますので、操作はかなり難しくなります。

起動オプションは以下のものが使用できます。
-fでフルスクリーン
-z <数字>で、画面サイズを変更できます
 (Default:4 で、数値小さくすると画面が小さくなりますがスピードも速くなります。)

 

 インストール:APT経由 ”sudo apt install spout”
 (trixie 以降でインストール対応のアプリ。bullseyeではapt installできません。)

 

———-

python3-cairo

△ ghextris 六角形のグリッド上で行われるテトリスのようなゲーム

https://packages.debian.org/trixie/ghextris

起動:ghextris

ゲームの目的は基本的にテトリスと同じです。ゲームエリアの上部から落ちてくるブロックを使って、完全に埋まったラインを作り、それが消えて新しいブロックのためのスペースが生まれるというものです。ただし、ブロックは六角形のブロックで構成されているため、視覚化能力がさらに鍛えられます。

●ブロックが六角形のテトリス
テトリスと同じですが、ブロックが六角形なので難しいです。
【操作】 [←]:左へ [→]:右へ [↑]:回転 [SPC]:落下

Brainだと縦解像度が足りないので、画面下を表示できるように移動が必要です。
ただ、ゲーム開始がGUIだと一番上のGame->New Gameをする必要があるのですが、
画面を一番下が表示できるようにしておくと、これが出来ない。

Ctrl+Nで開始はできるので、これで代用すればゲーム自体は開始&プレイできます。
この場合ゲーム終了は、以下で可能です。
・起動したshellでCtrl+C
・タスクバーでghextrisを選んで、右クリックのClose

 

 インストール:APT経由 ”sudo apt install ghextris”

 

———-

 

まとめ

今回リリースされたTrixieベース(debian13)のBrainuxは、
以前のBullseyeベース(debian11)のBrainuxと比較すると、
少しレスポンスが遅れる気がしないでもないですが、
問題なく使えそうです。

Bullseyeベースは既に2024/8で通常サポート切れで「oldoldstable」となっていますので、
aptレポジトリがいつまで、使えるかが不透明な状態です
(aptレポジトリも強制的に変更しないと使えない状態)。

2028年まで通常サポートがあるTrixieベースのBrainuxがリリースされたことで、
しばらくは安心してBrainuxで遊べそうです。

バージョン (コードネーム) リリース日通常サポート終了LTS終了予定
13 (Trixie)2025年8月(予定)2028年8月2030年6月
12 (Bookworm)2023年6月10日2026年6月2028年6月
11 (Bullseye)2021年8月14日2024年8月2026年6月-8月

 

Views: 189

カテゴリー: Brain, Brainux, debian, Linux パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です