RedHawk Linux

**RedHawk Linux**（レッドホーク・リナックス）は、米国に本社を置くコンカレント・コンピュータ (Concurrent Computer) が、Red Hat Enterprise Linux (RHEL) のカーネルをリアルタイムLinuxカーネルに置き換えて開発した、x86系リアルタイム版のRed Hat系 Linuxである。Red Hat MRG とは異なる。
バージョン1.1は2002年9月30日リリースされた。

2017/5にコンカレント・コンピュータは、RedHawk Linux を含むリアルタイム事業をBattery Venturesに売却し、リアルタイム事業は、Concurrent Real Time Incが継続した。

## 概要
カーネルを置き換え、リアルタイムライブラリを追加している部分がRHELと異なる。

また、RedHawk Linuxでは、上流ストリームのカーネルとRedHawkカーネルをGRUBで選択起動できる。

カーネルに対するすべてのリアルタイムパッチは、DVDによってソースコードで供給されており、上流ストリームとのバージョン関係は以下の通りである。

# RedHawk 1.1 RHV8ユーザランドでカーネル2.4.18 +リアルタイムパッチ
# RedHawk 1.2 RHV8ユーザランドでカーネル2.4.18 +リアルタイムパッチ
# RedHawk 1.3 RHV8ユーザランドでカーネル2.4.21-pre4 +リアルタイムパッチ
# RedHawk 1.4 RHV8ユーザランドでカーネル2.4.21 +リアルタイムパッチ
# この間欠番
# RedHawk 2.1 RHEL 3.0ユーザランドでカーネル2.6.3 +リアルタイムパッチ
# RedHawk 2.2 RHEL 3.0ユーザランドでカーネル2.6.7 +リアルタイムパッチ
# RedHawk 2.3 RHEL 3.0ユーザランドでカーネル2.6.9 +リアルタイムパッチ
# この間欠番
# RedHawk 4.1 RHEL 4.1ユーザランドでカーネル2.6.15 +リアルタイムパッチ
# RedHawk 4.2 RHEL 4.2ユーザランドでカーネル2.6.18 +リアルタイムパッチ
# RedHawk 5.1 RHEL 5.1ユーザランドでカーネル2.6.23 +リアルタイムパッチ
# RedHawk 5.2 RHEL 5.2ユーザランドでカーネル2.6.26 +リアルタイムパッチ
# RedHawk 5.3 欠番
# RedHawk 5.4 RHEL 5.4ユーザランドでカーネル2.6.31 +リアルタイムパッチ
# この間欠番
# RedHawk 6.0 RHEL 6.0ユーザランドでカーネル2.6.36 +リアルタイムパッチ
# この間欠番
# RedHawk 6.3 RHEL/CentOS/RHEL 6.3ユーザランドでカーネル3.5.7 +リアルタイムパッチ
# この間欠番
# RedHawk 6.5 RHEL/CentOS 6.5ユーザランドでカーネル3.10.34 +リアルタイムパッチ
# この間欠番
# RedHawk 7.0 RHEL/CentOS 7.0ユーザランドでカーネル3.16.3 +リアルタイムパッチ
# この間欠番
# RedHawk 7.2 RHEL/CentOS 7.2(CentOS7-1511)ユーザランドでカーネル4.1.15 +リアルタイムパッチ
# RedHawk 7.3 RHEL/CentOS 7.3/Ubuntu 16.04 LTS ユーザランドでカーネル4.4 +リアルタイムパッチ
#RedHawk 7.5 RHEL/CentOS 7.5/Ubuntu 18.04 LTS ユーザランドでカーネル4.9 +リアルタイムパッチ
#RedHawk 8.0 RHEL/CentOS 8.0/Ubuntu 20.04 LTS ユーザランドでカーネル4.14 +リアルタイムパッチ
#RedHawk 8.2 RHEL/CentOS 8.2/Ubuntu 20.04 LTS ユーザランドでカーネル5.4 +リアルタイムパッチ
#RedHawk 8.4 RHEL/Rocky 8.4/Ubuntu 20.04 LTS ユーザランドでカーネル5.10 +リアルタイムパッチ

リアルタイムパッチは、コンカレント・コンピュータの判断によって独自パッチとその他のパッチを組み合わせており、FBSと呼ばれる周期制御スケジューラ(レートモノトニックスケジューリング)も含まれている。

プロセッサシールドと呼ばれる機能で、任意のCPUにアサインされている割り込みの禁止や許可が実行中において可能であることを最大の特徴としている。
NUMAシステムでは、マルチコア上での割り込みからの保護に加えて、NUMAノード上で使用するメモリを固定するメモリシールド機能を利用できる。

これらの機能を利用するための、リアルタイム環境を整えるコマンドに、
run(1),
cpu(1),
shield(1)
があり、これを組み合わせることで、リアルタイム化していないバイナリアプリケーションプログラムでも、リアルタイムに利用可能である。
なお、RedHawk 5.1以降では、組み込み向けとしてRedHawk Embedded、サーバ向けとしてRedHawk Serverがそれぞれ別のラインナップとなっている。
また、RedHawk 5.4で、KVMとNVIDIAのCUDA環境をサポートした。

RedHawk 6.0では、IPv6およびLVMをサポートし、USB起動が出来るようになった。シールド時のリアルタイム応答性は15μ秒を保証している。

Redhawk 6.3では、SELinuxをイネーブルにして利用できるようになった。

RedHawk6.3以降では、従来のRHELベースからCentOSベースを標準にし、PREEMPT_RTもサポートしている。

RedHawk7.2以降では、ARM64をサポート、シールド時のリアルタイム応答性は5μ秒を保証している。

RedHawk7.3では、Ubuntuもサポートし、TegraX1,X2もサポートしている。

RedHawk7.5では、Jetson Nano,Jetson AGX Xavier,DRIVE PX 2 AutoChauffer (P2379)がサポートされた

## API
APIは、POSIX 1003.1b（リアルタイム）およびPOSIX 1003.1c（POSIXスレッド）である。

なお、POSIX 1003.1b-1993およびPOSIX 1003.1c-1995は、IEEE Std 1003.1, 1996およびISO/IEC 9945-1 : 1996 としてPOSIX 1003.1にマージされ、現在のPOSIX 1003.1にすべて含まれている。
拡張リアルタイムAPIとして、Concurrent Real Time 独自のAPIも、libccur_rt として提供されている。
プロセスIDを指定してメモリロックを行う、mlockall_pid(2)やCPUの割り込みから保護するshield(1)を実現するmpadvise(2)や、プライオリティインヘリタンス（優先順位の逆転）対応の関数等がこのlibccur_rtに含まれている。

## 開発環境
NightStarツールと呼ばれるGUIベースの開発環境を5つ提供している。

* NightView: ソースコードデバッガ
* NightTrace: イベントアナライザー
* NightProbe: データモニター
* NightTune: システムチューナー
* NightSim: リアルタイムスケジューラー

NightTraceは、アプリケーションと同時にマルチコアで動作するカーネルをグラフィカルにトレース表示できる。

NightSimは、FBS（周期スケジューラ）を用いたリアルタイムプロセス専用のツールであり、Linuxのスケジューラとは無関係である。

なお、RHELやFedora、CentOS、openSUSE、Ubuntu、Debian用の非リアルタイム版NightStarLXも用意され、非商用利用、教育・研究利用は、無償で利用可能である
その他に、Archtectと呼ばれる、組込用開発ツールを販売している。

## CUDA Toolkit
RedHawkのVersion 5.4以降には、標準でNVIDIAのCUDA Toolkitがインストールされている。
* CUDA Toolkit v3.1 : RedHawk 5.4.[0-4](i386,x86_64)
* CUDA Toolkit v3.2 : RedHawk 5.4.x(i386,x86_64)
* CUDA Toolkit v4.0 : RedHawk 6.0.0(x86_64)
* CUDA Toolkit v4.1 : RedHawk 6.0.[0-3](x86_64)
* CUDA Toolkit v4.2 : RedHawk 6.0.x(x86_64)
* CUDA Toolkit v5.0 : RedHawk 6.3.[0-7](x86_64)
* CUDA Toolkit v5.5 : RedHawk 6.3.x(x86_64)
* CUDA Toolkit v5.5 : RedHawk 6.5.x(x86_64)
* CUDA Toolkit v6.0 : RedHawk 6.5.x(x86_64)
* CUDA Toolkit v6.5 : RedHawk 7.0.x(x86_64)
* CUDA Toolkit v7.0 : RedHawk 7.0.x(x86_64)
* CUDA Toolkit v7.5 : RedHawk 7.2.x(x86_64)
* CUDA Toolkit v8.0 : RedHawk 7.3.x(x86_64)
*CUDA Toolkit v9.1 : RedHawk 7.5.x(x86_64)
*CUDA Toolkit v10.1 : RedHawk 8.0.x(x86_64)

## その他の製品
その他に、クローズドループシミュレータとデータ収録用のプロダクトが存在する。
* SIMulation Workbench SIMulation Workbench紹介 
* Laboratory Workbench Laboratory Workbench紹介
MATLAB/Simulinkを利用したリアルタイムシミュレーションを行うのが、SIMulation Workbenchで、データ収録を行うのがLaboratory Workbenchである。
なお、Laboratory Workbench (LWB) は、元々世界で初めてリアルタイムUNIX (RTU) を開発した、マサチューセッツ・コンピューター (MASSCOMP)の製品であったが、1988年に同社が買収され、そのソフトウェアをRedHawk linuxに移植した製品である。

## 関連項目
* リアルタイムオペレーティングシステム

## 脚注



## 外部リンク
* RedHawk Linux
* Concurrent Real Time 社
* RPM resource run
* RPM packages run