使用方法
4.9.65-bone-rt-r9-botic.zip を解凍します。
ターミナル(ファイル転送)ソフトでBBB(G)と接続しファイルが転送可能な状態にしておきます。
rt4965ディレクトリごと /build_boot にコピーします。
4.9.65-bone-rt-r9-modules.tar.gzを解凍し、4.9.65-bone-rt-r9ディレクトリ(解凍後にできるlib/modules/4.9.65-bone-rt-r9)ごと/lib/modulesにコピーします。
※systemd-update-utmp.serviceでエラーが発生していました。コマンドラインから systemctl と入力すると赤字でエラー表示が出るはずです。出なければこの操作は必要ありません。) systemctl mask systemd-update-utmp.service として systemd-update-utmp.serviceを止めてしまって下さい。(これで音のスケールが大きくなるはずです……)
selboot rt4965 と入力します。
再起動後kernelが入れ替わっているはずです。uname -a で
Linux alarm 4.9.65-bone-rt-r9 #1 PREEMPT RT Sun Nov 26 11:44:53 JST 2017 armv7l GNU/Linux と表示されるはずです。
ここ2週間ぐらいkernelをいじっていました。きっかけはコメント欄なのですが、Linux4.9.60あたりで音が大きく変わったような気がしました。
それまでは解像度は高いけれど、すこしキツ目で少々重苦しいような雰囲気を感じていました。2台あるBoticシステムの片方をUPnPのダブルラインにしていたのもこのことが原因でした。
Linux4.9.60kernelあたりで音の感じが変わったようです。ふわっとした感じが出てきてキツさがなくなりました。最新のLinux4.9.65も同傾向で更に音場が大きくなった気がします。
◆クロスコンパイル
クロスコンパイル用の母艦が必要です。私の場合、ubuntu16.04ですが、WindowsやMacj上でもubuntuやdebianが動くマシンがあれば良いはずです。母艦上の各種ツール(git など)はインストール済みとします。クロスコンパラ-の準備は必要ありません。
クロスコンパイル用のディレクトリを用意します。以下はそのディレクトリ上での操作です。
botic7-rc3 のソースをダウンロードし解凍しておきます。
以下は BeagleBone Black – Linux on ARM – eewiki にある手順通りすすめるだけです。
git clone https://github.com/RobertCNelson/bb-kernel
cd bb-kernel/
git checkout origin/am33x-rt-v4.9 -b tmp
./build_kernel.sh
1行ずつ入力していくと、最新版のクロスコンパイラ-やRTパッチ済のカーネルソースがダウンロードされ少し時間はかかりますが menu config が立ち上がります。
menu configu を ctrl-c で止めます。コマンドラインに戻ります。
手作業でboticファイルをコピーします。
先に解凍してある linux-upstream_botic から bb-kernel/KERNEL (最新版のカーネルソース)にbotic関係のファイルをコピーします。
arch/arm/boot/dts (差分をコピー。)
firmware (差分をコピー)
(差分をコピー:ファルマネージャーでコピー元ディレクトリを開きすべて選択しコピー、コピー先ディレクトリを開き貼り付け、[このアクションをすべてのファイルに適用する]にチェックを入れスキップをクリックする。)
以下のディレクトリ毎入れ替える。
include/sound
sound/soc/codecs sound/soc/davinci sound/soc/generic
.config を入れ替える。
arch/arm/boot/dts/Makefile をエディターで開き570行あたりに
am335x-boneblack-botic.dtb \(バックスラッシュ)
am335x-boneblack-botic-sabre32.dtb \(バックスラッシュ)
を書き加える。
./tools/rebuild.sh を実行すると再度 menu config の画面が出てきます。
Device Drivers —>
< *> Sound card support —>
<*> Advanced Linux Sound Architecture —>
<*> ALSA for SoC audio support —>
CODEC drivers —>
<*> Botic CODEC
-*- ASoC Botic sound card support
<*> Botic on BeagleBone Black
このようにboticドライバが組み込まれるはずです。linux-upstream_boticの .config を使うとRTを再設定する必要があるかもしれません。
カーネルオプションを選択決定し menu config を終了すると勝手に進み
bb-kernel/deployディレクトリに zImage dtbs などが出来上がっています。
SDカードにインストールするスクリプト(bb-kernel/tools/install_kernel.sh)もありますが、
bb-kernel/deployに dtbs firmware のディレクトリを作りそこに解凍後、
am335x-boneblack-botic.dtb→am335x-boneblack.dtb や zimageのりネームなど行ないターミナルソフトでBBB(G)上のSDカードに直接コピーしたほうが楽と思います。
毎回同じことをするので、boticファイルをコピーするスクリプトを書けば操作するのはほんの僅かな時間ですが、なかなか気が向かず毎回手作業で行っています。それでもNelsonさんのは実に簡単で実際に操作する時間は10分ぐらいですし、元々RTパッチの掛かったソースなので実に簡単です。
みみず工房の掲示板で、boticカーネルの作り方を公開してくださったinthedark さん、Nelsonさんとともに大感謝です。ありがとうございました。
追記
boticファイルコピースクリプト
上記の手作業のコピーを一発で行うスクリプトです。
linux-upstream_boticとbb-kernelは同じディレクトリにあることが前提です。そこへ以下を botic-cp.sh とでも名づけて保存して下さい。
ここから
#!/bin/sh
#
CPF=linux-upstream_botic
CPT=bb-kernel/KERNEL
cp -u $CPF/arch/arm/boot/dts/* $CPT/arch/arm/boot/dts
cp -u $CPF/firmware/* $CPT/firmware
rm $CPT/include/sound/*
rm $CPT/sound/soc/codecs/*
rm $CPT/sound/soc/davinci/*
rm $CPT/sound/soc/generic/*
cp $CPF/include/sound/* $CPT/include/sound
cp $CPF/sound/soc/codecs/* $CPT/sound/soc/codecs
cp $CPF/sound/soc/davinci/* $CPT/sound/soc/davinci
cp $CPF/sound/soc/generic/* $CPT/sound/soc/generic
#cp cp -f $CPF/.config $CPT
exit 0
ここまで
(menu config を止めた状態であれば、)
cd ../
chmod x botic-cp.sh (実行権限付与)
./botic-cp.sh
.config 入れ替え
arch/arm/boot/dts/Makefile を編集
cd bb-kernel/
./tools/rebuild.sh
これでboticが組みこまれた menu config になっているはずです。
アップロードしたkernel及びクロスコンパイルで作成されたkernelは、boticパッチが完全にあたっておらず、不備がある可能性があります。ご使用はあくまでご自身の責任でおねがいします。