デジタルな話ーBについて語りたい その19 kernel-buildな話

最新版のRT-kernelをアップします。

 

使用方法

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を再設定する必要があるかもしれません。
アップロードしたkernelのconfigファイルです。.configにリネールしてお使い下さい。
カーネルオプションを選択決定し 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パッチが完全にあたっておらず、不備がある可能性があります。ご使用はあくまでご自身の責任でおねがいします。

kick について

kick 時々 moct どちらも名前のもじりです。kick は姓からですし、moct の方は名前の音読み+αです。 kicktickは要するに私のようにということで、基本きまぐれ、思いつき、言いたい放題、まれに真面目といことです。 メールアドレス  moctアットマークkickcoffee.org
カテゴリー: audio パーマリンク

デジタルな話ーBについて語りたい その19 kernel-buildな話 への8件のフィードバック

  1. 老いぼれニート のコメント:

    追伸です。
    再起動して確認したところ、usb0は生えてくれませんでした。
    ttps://archlinuxarm.org/platforms/armv7/ti/beaglebone-blackでは
    4.9.65-rt-usb0に入れ変えてもusb0が生えるのですが、rootfsのほうも
    関係するのでしょうか。残念、試行を続けます。

    • 老いぼれニート のコメント:

      追伸2です。
      arch-botic2310202017.imgから入れ直してrt4965をセットして何回か
      起動したところ、usb0がその都度生えています。もうしばらく様子を見てみます。
      何回も書き込みすみません。

  2. ytk のコメント:

    いつも良い音を聴かせていただいています。ありがとうございます。
    さっそく4.9.65-bone-rt-r9-boticをインストールしてみましたがうまくいきません。

    rt4965フォルダーごと /build_boot にコピー
    4.9.65-bone-rt-r9フォルダーごと/lib/modulesにコピー
    selboot rt4965 と入力
    再起動後uname -a で
    Linux alarm 4.9.65-bone-rt-r9 #1 PREEMPT RT Sun Nov 26 11:44:53 JST 2017 armv7l GNU/Linux と表示されました。

    しかし、GMPCで再生しようとしてもできません。

    musicフォルダーにsynologyNASフォルダーを作り、
    /etc/rc.localファイルに
    mount -t nfs -o rsize=65536,wsize=65536,timeo=14,retrans=5,nfsvers=3, 192.168.1.7:/volume1/music /music/synologyNAS/
    と記述してNASをNFSでマウントして使っていますが、
    マウントがうまくいかないようで、synologyNASフォルダーを表示させると空になっており、GMPCで再生できなくなってしまいます。

    (selboot rt4958などと入力して元に戻して再起動すると、synologyNASフォルダーにNASの内容が再表示され、GMPCでまた再生できるようになります。)

    手順で何か漏れていることがあるのでしょうか?
    よろしくお願いします。

    • kick のコメント:

      ytkさん こんばんは
      4.9.65-bone-rt-r9-modules.tar.gzを解凍すると、libというディレクトリができるはずです。その中にmodulesというディレクトリがあり更にその中の4.9.65-bone-rt-r9をディレクトリごと/lib/modulesにコピーなのですが、そうなっていますか。

      • ytk のコメント:

        さっそく、ありがとうございます。
        確かに4.9.65-bone-rt-r9-modules.tar.gzを解凍し、4.9.65-bone-rt-r9をディレクトリごと/lib/modulesにコピーしました。

  3. 老いぼれニート のコメント:

    kickさん こんにちは。
    早速クロスコンパイルについてご教示いただきありがとうございます。
    今までboticの後にrtパッチをあてたほうがいいのではと思い、buildrootでコンパイルして
    いました。
     今はbb-kernelでコンパイルは通るものの、ALSAのdeviceが生えず、音を聞くまで
    至っていません。usb0もだめです。boticパッチがうまく当たってないのかもしれません。
    これからじっくりと取り組んでみます。
     yoさんのconfigを基にコンパイルしたときはusb0までできましたので、.configも比較して
    見たいと思います。
     まずはお礼まで。ありがとうございました。

    • kick のコメント:

      老いぼれニートさん こんばんは
      boticファイルのコーピースクリプトを作りました。記事の方に追記しておきますのでよろしければお使いください。boticが生えてくるはずです。

      • 老いぼれニート のコメント:

        kickさん こんにちは。
        丁寧な説明ありがとうございます。boticとともに
        やっと、usb0が生えました。kickさんのconfigを参考にしながら
        いじくりまわして、zimage,dtbs,moduleを入れ替えて
        ifconfig usb0 upでusb0ができることを確認できました。
        (いじりすぎてどこの設定が効いたのかわかりません。)
        ただ、mpcで操作しようとするとmpd error : Timeout がでて
        きて音を聞くまで行き着いていません。
         まだまだ道のりは長いようです。

老いぼれニート へ返信する コメントをキャンセル

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

CAPTCHA