3(以下RPi3)は、そこそこマシンパワーがありデスクトップLinuxが動くので音楽制作用途としても使えるのではないかと試行しています。いろいろなソフトが動くもののレイテンシーが大きくなってしまうのが難点です。そこでリアルタイムカーネルを試してみようと思います。ここでいうリアルタイムというのは本来はレイテンシーを下げるという意味では無いのですが、CPUのスケジューリングが正確になることによって、結果的にオーディオ再生のレイテンシーを下げることができるはずです。音楽などマルチメディア制作向けのLinuxは、必ずリアルタイムカーネルを採用しています。Raspbianにリアルタイムカーネル(rt-preemptという種類のもの)を自分でビルドして導入する手順を紹介します。導入の方法概要リアルタイムカーネルは、ノーマルなカーネルにリアルタイムカーネル用のパッチをあててビルドして作成します。カーネルは、RPi3でビルドすると時間がかかるので、PC上でクロスコンパイルします。OSはLinuxを使います。WindowsやMac上でも作成可能のようですが、ビルド環境を整えるのが大変です。最近のPC/Macであれば、VMwareやVirtualBox、Parallels等の仮想環境上のLinuxで問題ないと思います。Debian系のLinuxであれば使い方はRaspbianに近いので使い方も問題ないはずです。クロスコンパイル用のツール類も用意されていますので、手順さえ間違えなければそれほど難しくないと思います。Raspbian用のカーネルのビルドについては本家でも情報が出ています。https://www.raspberrypi.org/documentation/linux/kernel/building.md基本な流れではこれを踏襲しますが、このページの方法がスマートでしたので参考にしました。ビルド環境の準備まず、リアルタイムカーネルをインストールするノーマルのRaspbianを用意します。-yを実行して最新状態にしておきます。カーネルをビルドするPCを用意します。desktopの64bit版をダウンロードして使いました。32bit版、64bit版のどちらもで構いません。lxdeは、raspbianの元になっているものですので、こちらのほうが馴染みやすいかもしれません。Linuxの使い方はここでは省略します。linuxからsshでRPi3に入れるようにしておいてください。カーネルのバージョンの確認パッチをあてるカーネルとリアルタイムパッチのバージョンを揃える必要があります。パッチはここからダウンロードします。https://www.kernel.org/pub/linux/kernel/projects/rt/バージョンごとにフォルダに分けられています。カーネルと一致させた方が良いですが、4.4、4.6という2桁目まであわせれればうまくいく可能性があります。raspbianのカーネルは、以下でダウンロードできます。https://github.com/raspberrypi/linux.gitbranchがrpi-4.4.yといったようにバージョンごとに分けられています。パッチのバージョンとあわせると、4.4.yか4.6.yが利用できることになります。細かいバージョンを確認すると、それぞれ4.4.13と4.6.2となっています(2016.6.22現在)。試してみたいと思います。-aとすれば確認できます。GNU/Linuxと表示されます。ノーマルカーネルのソースにパッチをあてるまずはLinux側です。これでユーザーホームの位置になる移動するはずです。この位置を基準に作業をします。ノーマルカーネルのソースをダウンロードします。カーネルのgitをまるっとコピーすると1G以上あり、完了までかかりますので、利用したいバージョンのソースだけダウンロードすることにします。https://github.com/raspberrypi/linux.gitlinuxという名前のフォルダが作成されそこにダウンロードされます。そのLinuxフォルダに移動します。linuxそこにリアルタイムパッチをダウンロードします。https://www.kernel.org/pub/linux/kernel/projects/rt/4.6/patch-4.6.2-rt5.patch.gzパッチはいろいろな圧縮形式で置かれていますのが、gz形式のものをダウンロードします。-p1エラーが出なければ成功です。マイナーバージョンが違うカーネルにパッチを当てている場合で、ここでエラーが表示されたら、あきらめて他のバージョンで試してみましょう。ビルド用ツールのダウンロードユーザーホームに戻ります。..ビルドするためのツール類をダウンロードしてきます。サイズが大きめなので、最新状態のみにしておきます。1環境変数のセットビルド用に環境変数をセットします。これは一時的なものですので再起動/再ログイン等で戻ります。逆に途中で再起動などすると設定が戻ってしまいますので注意してください。ARCH=arm次のコンパイラの指定ですが、usernameは各環境に合わせて変えてください。CROSS_COMPILE=/home/username/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-次のビルドしたカーネル類の配置場所の指定です。usernameは利用環境にあわせて変えてください。INSTALL_MOD_PATH=/home/username/rtkernelRPi3用のカーネルをビルドするという指定です。KERNEL=kernel7カーネルのビルド設定カーネルソースのディレクトリに移動し、ビルドの設定をします。bcm2709_defconfig別の方法もあります。これはRPi実機の設定を直接適用させます。僕はこちらを利用しました。この場合、RPi側で、ターミナルから以下のコマンドを実行し、設定を書き出します。configsLinux側に戻り(linuxフォルダ内で)、PRiから設定ファイルをダウンロードしてきます。raspberryは、RPiのIPアドレスを入れます。./raspbianのパスワードが求められますので、入力すればRPiとsshで接続され、先ほど作成した設定ファイルがLinux側にコピーされます。コピーしてきた設定ファイルを所定の場所に書き出します。.configこれで実機から設定を引き継ぐことができました。次にリアルタイムカーネルのためのビルドの設定行います。menuconfigとするとターミナル内に設定画面が表示されます。確認、変更するのは2点です。Supportパラメータはスペースキーで確定させます。変更したらSaveをしておきましょう。exitを押していけば元の(上位の)画面に戻ります。後者の設定は、通常はデフォルトに設定されいるので変更無しのはずです。カーネルのビルドとインストール実際に各モジュール等をビルドしていきます。-j2とか-j4とかすれば多少ビルドが早くなります。(数値はCPUコア数が上限です。modules_install次にビルドした必要なファイル類をまとめます。linuxフォルダ内にいるという前提です。$INSTALL_MOD_PATH/bootこれで必要なファイル類が、rtkernelフォルダにまとめられました。これでRPi3にリアルタイムカーネルをインストールできるのですが、ここで一つ問題があります。rtkernelフォルダにはカーネル以外にもFirmware等も含まれているようですが、Wifi用のFirmwareはオープンソースではないため含まれていません。このままリアルタイムカーネルをインストールするとWifiに接続できなくなります。firmware-brcm80211とすればFirmwareをインストールすることができます。ない場合は、ここでWifiのFirmwareを追加しておきます。https://github.com/RPi-Distro/firmware-nonfreeでFirmware類をダウンロードしてきます。WifiのFirmwareを所定の場所にコピーします。./rtkernel/lib/firmwareまとめたファイルをRPiに送るため圧縮します。*圧縮したファイルをsshでRPi3に送ります。PRi3のIPアドレスに変えてください。ファイルが送信できたらRPi側でインストール作業を行います。以下のとおり実行してください。/lib/これでインストールできました。cmdline.txtとしてsdhci_bcm2708.enable_llm=0という行を加えればこれを避けることができるようです。rebootとして再起動すれば、リアルタイムカーネルで起動するはずです。表示されればOKです。(時刻はビルドした日付です)リアルタイムカーネルにしても、OSの使い方はノーマルカーネルのときと変わりませんのでいろいろ試してみましょう。rpi-updateを実行するとノーマルのカーネルに書き換わってしまうため気をつけてください。逆にノーマルのカーネルに戻したい場合は有効です。通常のアップデートでもカーネルのアップデートが来る場合もあります。その場合は、一旦ノーマルカーネルに戻して再度リアルタムカーネルをインストールするのが良いと思います。最後にリアルタイムカーネルの導入は多少手間ではありますが、必要なツール類がそろっていることもあって、手順さえ間違えなければ簡単だと思います。Authorコイデマサヒロディレクター、プロデューサー、ギタリスト。mimiCopyをはじめ弊社リリースの全てソフトウェア製品の企画を担当。ネイティブアプリ開発がメインでOS問わず対応可。dubバンドのギタリストとしても活動中。前回はpisoundとMODEPを紹介しました。(4)Archiveスポンサーリンクスポンサーリンクはてなブログをはじめよう!artteknikaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。