コイデマサヒロ
前回、前々回と自前でビルドしてリアルタイムカーネルを導入しました。カーネルのビルド自体は、それほど難しいものではありませんが、今回は番外編のおまけとして、通常のパッケージシステムによる簡単な導入方法を紹介します。一部、手動による設定がありますが、そこを理解しておけば、いつでもノーマルカーネルに戻すことができます。インストールされるカーネルは、RT Preemptです。
準備
ノーマルのRasbianをSDカードに焼きます。
そのSDカードでRaspberry Pi 3を起動し最新状態にします。
今回もほぼターミナル上で作業を行います。
$ sudo apt-get update $sudo apt-get upgrade $ sudo apt-get dist-upgrade
上記で既にインストールされているはずですが、念のため下記を実行しておきます。
$ sudo apt-get install raspberrypi-bootloader
リポジトリの追加
リポジトリの追加とは、apt-getでファイル類をダウンロードするときの提供元を追加するということです。今回インストールしようとしているRTカーネルを提供しているMachinekitのリポジトリを追加します。Machinekit自体は、LinuxCNCを使うためのディストリビューションを公開していて信頼の置けるところのはずです。
ルートユーザーに変更します
$ su
パスワードを求められたら、現在のユーザーのパスワードを入力します。
$ apt-key adv --keyserver hkp://keys.gnupg.net --recv-key 43DDF224 $echo "deb http://deb.machinekit.io/debian raspbian main" > /etc/apt/sources.list.d/machinekit.list
リポジトリを追加したため更新をかけます。
$ apt-get update
これでMachinekitのリポジトリからのパッケージのインストールが可能になります。
カーネルのインストールと設定
$ apt-get install linux-image-rpi2-rt
(現時点でカーネルのバージョンは、4.4.4-rt9-v7+でした。)これでリアルタイムカーネル類がダウンロードされてインストールされますが、このままで使えません。設定が必要です。
/boot/config.txt に以下の2行を追加します。
$ cd /boot $ echo kernel=$(ls kernel_rt*.img) >> config.txt $ echo device_tree=dtbs_rt/bcm2710-rpi-3-b.dtb >> config.txt
またRT Preemptで問題があった場合、 この2行をコメントアウトすればノーマルのカーネルで起動するはずです。
次に、/boot/cmdline.txt を編集します。
$ nano /boot/cmdline.txt
でファイルを開き、
dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.nak_holdoff=0 sdhci_bcm2708.enable_llm=0
を既に設定されている行に追加します。一行にすべての設定を書くようになっています。コマンドごとに空白を開けるのを忘れずに。
【注意】cmdline.txtの設定項目で、dwc_otg.fiq_fsm_enable=0 の指定を行うと、Jackがうまく動かないようです。十分な検証は行っていませんが、ALSA直だと動くようです。この設定を入れたほうが検証ツールによるリアルタイム性能は良く、入れなくてもノーマルカーネルよりは良いので、利用状況に合わせてこの設定を入れるかどうか試して見るのが良さそうです。
最後に
パッケージでインストールできるとお手軽で良いですね。
ますこの方法でリアルタイムカーネルの動作を試してみて、目的にかなうようなら自分でビルドしてみるのが良いかもしれません。
[参考サイト]
http://www.machinekit.io/docs/getting-started/install-rt-kernel-RPi2/
https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=33809&start=950
コイデマサヒロ
ディレクター、プロデューサー、ギタリスト。mimiCopyをはじめ弊社リリースの全てソフトウェア製品の企画を担当。ネイティブアプリ開発がメインでOS問わず対応可。dubバンドのギタリストとしても活動中。