ソースコードで設定/コンパイルするときは、「完全プリエンプティブカーネル(リアルタイム)」を選択できません。

ソースコードで設定/コンパイルするときは、「完全プリエンプティブカーネル(リアルタイム)」を選択できません。

安定した最新のPREEMPT_RTパッチ(5.4.28-rt19)を使用して5.4カーネルをコンパイルしようとしていますが、何らかの理由で機能しません。完全プリエンプティブコア(RT)内部オプションnconfig/menconfigの作成

以前は4.19 rtパッチをコンパイルしたことがありましたが、現在の構成(/boot/config-4.18-xxx)を新しい構成にコピーするのと同じくらい簡単で、.configオプションが表示されました。これで、次のようにしか見えません。

No Forced Preemption (Server)
Voluntary Kernel Preemption (Desktop)
Preemptible Kernel (Low-Latency Desktop)

F4を押して「みんな見える”、次のオプションが表示されます。

XXX Fully Preemptible Kernel (Real-Time) 

しかし、選択する方法はありません。.config次のようなさまざまなPREEMPTオプションを使用して手動で設定してみました。

CONFIG_PREEMPT=y
CONFIG_PREEMPT_RT_BASE=y
CONFIG_PREEMPT_RT_FULL=y

しかし、それは決して見えませんでした。先ほど行ってコンパイルしましたがCONFIG_PREEMPT_RT_FULL=y(保存する前に上書きしましたmake nconfig)、まだ完全にプリエンプティブカーネルがインストールされていないようです。

4.19 の場合、uname -a次のような内容が表示されます。

Linux 4.19.106-rt45 #2 SMP PREEMPT RT <date>

またはそれに似ていますが、今は次のように言います。

Linux 5.4.28-rt19 #2 <date>

私がここで何を見逃しているのか知っている人はいますか?

オペレーティングシステム:CentOS 8.1.1911

カーネル: 4.18.0-147.8.1 -> 5.4.28-rt19

答え1

make nconfig起動時/開始後にエキスパートモードを有効にしてくださいmenuconfig。その後、完全プリエンプティブコア(RT)オプションを選択できます。

答え2

utkが取ったアプローチは私にはまったく合っていませんでした。

論文ではARM64サーバー(ThunderX CN8890)を使用していますが、何をしてもメニュー構成に表示する完全プリエンプティブコア(RT)を取得できません。

kernel/Kconfig.preemptを確認した後、答えを得ました。

config PREEMPT_RT
    bool "Fully Preemptible Kernel (Real-Time)"
    depends on EXPERT && ARCH_SUPPORTS_RT
    select PREEMPTION

->https://elixir.bootlin.com/linux/latest/source/kernel/Kconfig.preempt#L61

EXPERTフラグ(上記の説明ではkrishna chaitanyaによる組み込みシステムの切り替え)を有効にしましたが、構成ファイルにCONFIG_ARCH_SUPPORTS_RTエントリがありません。

フラグを手動で入力すると、makeステップで上書きされます。デフォルトでこのフラグを有効にするには、arch / Kconfigファイルを開き、ARCH_SUPPORTS_RTエントリを検索します。 (ナノで検索するにはCTRL + Wを押します)

次の項目を変更

config ARCH_SUPPORTS_RT
    bool

到着

config ARCH_SUPPORTS_RT
    def_bool y

EXPERT(一般設定 - >組み込みシステム)フラグも有効になったので、一般設定 - >プリエンプションモデルの下に「完全プリエンプティブカーネル(リアルタイム)」オプションを表示する必要があります。

フラグを強制することはこの問題を解決する奇妙な方法ですが、それでも私にとっては効果的です。

答え3

許容される回答は、最大5.8のカーネルバージョンで動作します。 5.9以降、フルプリエンプティブオプションが表示される前にKVMを無効にする必要があります。このオプションは以下にあります。

Virtualization -> Kernel-based Virtual Machine (KVM) support

これを見つけました、ありがとう。https://unix.stackexchange.com/a/616822/231640そしてhttps://lore.kernel.org/linux-rt-users/[Eメール保護]

答え4

ライブパッチがないか、RTパッチでLinuxカーネルソースを使用しているようです。 https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/

また、見ることができますLinux Foundation Wikiのライブページ

関連情報