スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リアルタイムカーネルのビルド 

最近Linuxのカーネルを自分でビルドすることができるようになったので,先日リアルタイムカーネル(RT-Kernel)のビルドに挑戦してみました.なお環境は,UbuntuStudio 14.04.3 LTS,カーネルは自家製のVer.4.1.15-lowlatency_amd64です.

1)まずはカーネル構築に必要なパッケージをインストールします.
 $ sudo apt-get install build-essential
 $ sudo apt-get install kernel-package libncurses5-dev
 $ sudo apt-get install libqt4-dev pkg-config
 $ sudo apt-get install qt3-dev-tools libqt3-mt-dev

2)RT WikiのサイトでPREEMPT_RTカーネルパッチのあるヴァージョンを確認します.

3)The Linux Kernel Archivesから作りたいカーネルのソースコードのアーカイブ(tar.xzファイル)をダウンロードして,適切な場所に解凍します.

4)Kernel PPAから作りたいカーネルのパッチファイル(*.patchファイル)を全てダウンロードして,先程解凍したソースコードのフォルダに置きます.

5)RT Wikiから作りたいカーネルのPREEMPT_RTパッチ(*.patch.gzファイル)をダウンロードして解凍し,先程解凍したソースコードのフォルダに置きます.

6)ソースコードのフォルダに移動して全てのパッチを当てます.コマンドは以下の通りです.
 $ patch -p1 < *.patch

7)現環境のカーネルの設定を流用してconfigファイルを作成します.コマンドは以下の通りです.
 $ make localmodconfig
 $ make oldconfig

8)7)の時,オプションを選択しなければならない場合がありますが,基本的にはデフォルトを選びます(リターン入力でOK).またこの時,Preemption Modelを聞かれますが,その場合は「Fully Preemptible Kernel (RT)」を選びます.

9)以下のコマンドでconfigファイルを開きます.
 $ make xconfig

10)9)の画面で以下の設定を確認します.
・amd64互換CPUを使用の場合は64bit kernelにチェックを入れる
・Enable the Block LayerのI/O schedulerを[deadline]にする
・Processor type and featuresのPreemption Modelを[Fully Preemptible Kernel (RT)]にする
・Processor type and featuresのTimer frequencyを[1000HZ]にする

11)わかりやすいようにリリース名を設定する.Makefileファイルを開いて先頭部で
 EXTRAVERSION = -20160103
などと記述しておく.

12)カーネルをビルドする.うちのPC(AMD FX-8150 8コア)では5〜10分程度かかる.
 $ make-kpkg clean
 $ sudo make-kpkg -j9 --initrd kernel_image kernel_headers
(-jの後の数字はCPUのコア数+1くらいにしておく)
(本来ならば--append_to_version=-rtなどのカーネルの名称オプションも付けるべきだがこのパッチでは自動的に名称に-rtが付いてしまうので省略した)

13)作業フォルダの上に.debファイルができるので,dpkgコマンドでインストールする
 $ sudo dpkg -i *.deb

14)再起動し,Grubメニューで今回できたカーネルを選択し起動する.
 $ uname -a
で起動したカーネルの種類が確認できる.


んで,リアルタイムカーネル(私が今回作成したのは”4.1.15-20160114-rt17”)の音質ですが,ヘッドホンでよく聴くとローレイテンシーカーネルより音のアタック感が増し,高音域の伸びがキレイになり,演奏の空気感みたいなものが増したような気がします.まあプラセボかとは思いますが,リアルタイムカーネルでも他のソフトで特に不具合は出ていないみたいですし,しばらくこれを使ってみたいと思います.



もし,Preemption Modelを[Fully Preemptible Kernel (RT)]に不具合が出るようでしたら,[Preemptible Kernel (Basic RT)]に設定を変更してビルドすると不具合が出なくなるかもしれませんので試してみて下さい.

スポンサーサイト

コメント

はじめまして。
こちらを参考に16.04のリアルタイム化をこころみていますが、
「$ make localmodconfig」で躓いています。

「現環境のカーネルの設定を流用してconfigファイルを作成します」
は、「/bootのconfigファイルを作業フォルダにコピーする」で、良いのでしょうか?

また、perl以外に必要なものはあるのでしょうか?

お教えいただけるとありがたいです。

Re: タイトルなし

コメントありがとうございます.

> はじめまして。
> こちらを参考に16.04のリアルタイム化をこころみていますが、
> 「$ make localmodconfig」で躓いています。
> 「現環境のカーネルの設定を流用してconfigファイルを作成します」
> は、「/bootのconfigファイルを作業フォルダにコピーする」で、良いのでしょうか?

合っているかどうかわかりませんが,多分コピーするで良いと思います.

> また、perl以外に必要なものはあるのでしょうか?
> お教えいただけるとありがたいです。

取り敢えず一番最初に記述したパッケージをインストールすればビルドできます.
よろしくお願いいたします.

ご回答ありがとうございます。

ファイル「config-4.4.0-21-lowlatency」をコピーして、
「$ make localmodconfig」したのですが、以下のエラーが出ます。

make: *** ターゲット 'localmodconfig' を make するルールがありません. 中止.

追伸
私は、14.04 studio realtime で、sysv-rc-confで、すべてのサービスを止めています。
サービスは止めれば止めるほど、音が良くなるようです。
また、プレイヤーは、aplayexを使っています。

Re: タイトルなし

> ファイル「config-4.4.0-21-lowlatency」をコピーして、
> 「$ make localmodconfig」したのですが、以下のエラーが出ます。

私の環境では特にファイルのコピーなどをしなくてもmake localmodconfigすれば
その時動いているカーネルの環境がconfigファイルに反映されるのですが….
不思議です.

> make: *** ターゲット 'localmodconfig' を make するルールがありません. 中止.
>
> 追伸
> 私は、14.04 studio realtime で、sysv-rc-confで、すべてのサービスを止めています。
> サービスは止めれば止めるほど、音が良くなるようです。

そうなんですね.私はまだ怖くてサービス停止作業はやったことがありません.
ちょっとチャレンジしてみようかな(笑)
DebianとかArchなどで最小限度の構成でシステムを構築すると音楽再生に特化した
環境が構築できるかもしれませんね.

> また、プレイヤーは、aplayexを使っています。

初めて知りました.aplayの拡張版という感じですね.私は音楽ファイルは全てflacに
統一してしまったので残念ながらaplay系は使えません.

度々すいませんが、
「解凍したソースコードのフォルダ」を具体的にお教え願えないでしょうか?
私は、デスクトップの下に、\rt\rtbuild フォルダを作って作業しています。

サービスの件ですが、14.04 16.04共に、すべて殺していますが、
無線LAN接続で、WEBブラウズに支障はありません。
当然ですが、ローカルからの音楽再生もOKです。
ぜひ、お試しください。

さらに、恥ずかながら、私のノウハウを申し上げると、
リッピングは、(可能な限りHDDを動かさない)
・Braseroで、isoファイルをRAMディスクに保存
・CDEmu clientで、RAMディスクに保存した、isoファイルを仮想ディスクとしてマウント
・Asunderで、リッピング
・全てのソフトは、「nice -n -20 asunder」のように、nice -n -20 のオプションを付けて、優先度を最高で動かす

・再生時は、LANを切り、xset dpms force offでウインドも止めています。

Re: タイトルなし

> 度々すいませんが、
> 「解凍したソースコードのフォルダ」を具体的にお教え願えないでしょうか?
> 私は、デスクトップの下に、\rt\rtbuild フォルダを作って作業しています。

もしかしてデスクトップのフォルダ名がカタカナではないでしょうね? 必ずフォルダ名は全て半角英数字になるところに置いて下さい.私は~/Downloads/Kernel/4.4.7rt以下に全て展開してそこを作業フォルダにしてビルドを行っています.

> サービスの件ですが、14.04 16.04共に、すべて殺していますが、
> 無線LAN接続で、WEBブラウズに支障はありません。
> 当然ですが、ローカルからの音楽再生もOKです。
> ぜひ、お試しください。

ありがとうございます.参考にさせて頂きます.

> さらに、恥ずかながら、私のノウハウを申し上げると、
> リッピングは、(可能な限りHDDを動かさない)
> ・Braseroで、isoファイルをRAMディスクに保存
> ・CDEmu clientで、RAMディスクに保存した、isoファイルを仮想ディスクとしてマウント
> ・Asunderで、リッピング
> ・全てのソフトは、「nice -n -20 asunder」のように、nice -n -20 のオプションを付けて、優先度を最高で動かす
> ・再生時は、LANを切り、xset dpms force offでウインドも止めています。

凄く工夫されていますね.私は再生ソフトのnice値を-10くらいにする程度です(^^;

お世話になります。

残念ながら、未だ16.04のリアルタイムRT化には成功していません。

度々すいませんが、RT化に成功されている、
・ubuntuのバージョン
・カーネルのソースコードのバージョン
・カーネルのパッチファイルのバージョン
・PREEMPT_RTパッチのバージョン

をお教えいただけないでしょうか?

追伸
All core any cures なる、プログラムがvectorにあります。
ubuntuで動作します。
CPUのレジスタを初期化することにより音が良くなるようです。
zipファイルを解凍すると、「AllCoreAnyCures_x64_window.tar.gz」が出てきます。
これは、実行ファイルを圧縮したもので、解凍すれば動きます。

2chで紹介されていたので、試してみましたが、結構効果がありました。

Re: タイトルなし


> 度々すいませんが、RT化に成功されている、
> ・ubuntuのバージョン

Ubuntustudio 16.04 LTS

> ・カーネルのソースコードのバージョン

linux-4.4.7

> ・カーネルのパッチファイルのバージョン

http://kernel.ubuntu.com/~kernel-ppa/mainline/から拾ってきたものです
0001-base-packaging.patch
0002-debian-changelog.patch
0003-configs-based-on-Ubuntu-4.4.0-19.35.patch

> ・PREEMPT_RTパッチのバージョン

patch-4.4.7-rt16.patch

> 追伸
> All core any cures なる、プログラムがvectorにあります。
> ubuntuで動作します。
> CPUのレジスタを初期化することにより音が良くなるようです。
> zipファイルを解凍すると、「AllCoreAnyCures_x64_window.tar.gz」が出てきます。
> これは、実行ファイルを圧縮したもので、解凍すれば動きます。

ありがとうございます.早速試してみます.ではでは

おかげさまで、リアルタイムカーネルのビルドに成功しました。

リアルタイムだけでは、それほど変化はありませんでした。

・Kernel Hacking(カーネル開発)
 カーネルの開発はしないので外しました。
・Security OptionsのAppArmor support
 音質を求めたオーディオ再生では WEBには繋がないので、外しました。

割り込みが減れば聞こえていなかった音が聞こえ始めました。

Re: タイトルなし

> おかげさまで、リアルタイムカーネルのビルドに成功しました。

おめでとうございます.良かったですね.
Linuxはソースというかコンフィグを弄って自分が欲しいカーネルを
構築できるのが素晴らしいですね.

> ・Kernel Hacking(カーネル開発)
>  カーネルの開発はしないので外しました。
> ・Security OptionsのAppArmor support
>  音質を求めたオーディオ再生では WEBには繋がないので、外しました。

確かにこの2つはいらないかも.私も外してみようかな.
ではでは.

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://cobo4u.blog87.fc2.com/tb.php/319-70936404

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。