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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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-libsdl1.2.pref
Package: SAMPLE-libsdl1.2debian Pin: release n=bookworm Pin-Priority: 700
なお、pin-proprity(リポジトリの優先度)は以下のコマンドで表示できます。
$ apt-cache policy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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.2https://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をビルドする方法です。
ソースをApt sourceでbookwormリポジトリから引っ張ってこようとしましたが、 SDL1.2(1.2.15)は bullseye が最後のソースのため、bookwormリポジトリにはないそうです。
$ sudo apt update $ sudo apt-get install g++ build-essential $ mkdir DPKG-BUILD $ cd DPKG-BUILD $ mkdir libsdl1.2debian $ cd libsdl1.2debian $ sudo apt -t bullseye source libsdl1.2debian $ sudo apt -t bullseye build-dep libsdl1.2debian $ cd libsdl1.2-*
#(変更しなくてもビルドは通ります。いったん最適化の目的で以下の設定を追加しました。) $ sudo 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-nasm \ –disable-video-ggi –disable-video-svga –disable-video-aalib \
#ビルド(Brain時期ビルドでは、1.5時間くらいかかりました。) $ sudo dpkg-buildpackage -us -uc -b
$ cd .. $ sudo dpkg -i libsdl1.2debian_1.2.15+dfsg2-6_armel.deb $ sudo dpkg -i libsdl1.2-dev_1.2.15+dfsg2-6_armel.deb $ sudo apt-mark showhold $ 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/bookwor m /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 $ sudo 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-* $ sudo 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
#申し訳程度の最適化設定(有効になっているか未確認) $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 )
#再度ビルドを開始します。(多分brain自ビルドで、11時間ぐらい?) $ sudo 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
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できません。)
———-
まとめ
今回リリースされた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: 46