szmlb.net

tips for robotics

ubuntuでリアルタイムLinux

ubuntuリアルタイムOS化する方法についてのメモ.

linuxカーネルのリアルタイムカーネルに関しての歴史は以下のサイトにまとまっている.

UbuntuStudio/RealTimeKernel - Community Help Wiki
UbuntuStudioTips/Setup/Kernels - Ubuntu Japanese Wiki

まとめると以下の5種類のカーネルが存在する.

linux-generic (non-real-time)
linux-preempt (soft real-time)
linux-lowlatency (soft real-time)
linux-realtime (hard real-time)
linux-rt (hard real-time)

ubuntu 10.04以前では, linux-rtというパッケージをapt-getすれば, ハードリアルタイムなカーネルが選択できるようになっていたようだ.
ubuntu12.04以前では, linux-lowlatencyというパッケージをapt-getすることで, ソフトリアルタイムなカーネルがインストールされる.
そして, aboganiさんが公開しているパッケージlinux-realtimeをapt-getすることで, ハードリアルタイムなカーネルの導入が可能となる.
ubunut14.04においても同様にlinux-lowlatencyパッケージを導入可能だが, linux-realtimeパッケージの導入ができない.
ちなみに, ubuntu studio14.04ではlinux-genericとlinux-lowlatencyが統合されており, 標準でlowlatencyカーネルとなっている.

自前でカーネルにパッチをあててビルドする方法

RT PREEMPTパッチを標準のカーネルにあてる.
RT PREEMPT HOWTO - RTwiki

Beagle Bone BlackやIntel Edisonでカーネルをリアルタイム化した事例がある.
ソフトとハードの交差点:【BeagleBone Black】RT-Preemptカーネルの評価 - livedoor Blog(ブログ)
Intel Edisonをリアルタイム化する - Qiita

下記サイトには, RT PREEMPTカーネルのビルド方法の手順が記載されている.
System configuration [Linux-Sound]

また, 下記レポジトリで, 最適化されたubuntu studioのカーネルが配布されている.
thismaechler / ubuntustudio-14.04-realtimeaudio — Bitbucket

ubuntuに対して自前でRT PREEMPTのパッチを当ててビルドした時のメモを下記記事にまとめました.
ubuntuにrt-preemptカーネルを導入する - AKHrobotics

パッケージインストールによる方法

lowlatencyカーネルの導入
$ sudo apt-get install linux-lowlatency (linux-lowlatency-pae)

realtimeカーネルの方法
背筋トレーニング日記: Ubuntu 12.04LTS でリアルタイムプログラミング
背筋トレーニング日記: Ubuntu 12.04LTS でリアルタイムプログラミング(2回目)

$ sudo add-apt-repository ppa:abogani/realtime
$ sudo apt-get update
$ sudo apt-get install linux-realtime
$ sudo reboot

評価についてはまた別途まとめたい.

追記