Linux

從原始碼配置/編譯時無法選擇“完全可搶占核心(實時)”

  • July 16, 2021

我正在嘗試使用最新的穩定 PREEMPT_RT 更新檔 (5.4.28-rt19) 編譯 5.4 核心,但由於某種原因無法在make nconfig/menconfig中選擇**完全可搶占核心 (RT)**選項。

我之前編譯過 4.19 rt 的更新檔,只要把目前的配置(/boot/config-4.18-xxx)複製到新.config的,就會顯示選項。現在我只看到:

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

如果我按 F4 到“ ShowAll ”,我確實看到了這個選項:

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

請在啟動make nconfig/後啟用專家模式menuconfig。然後您將能夠選擇完全可搶占核心 (RT) 選項。

utk 採用的方法對我來說並不完全奏效。

我在論文中使用 ARM64 伺服器 (ThunderX CN8890),無論我做什麼,我都無法讓完全可搶占核心 (RT) 出現在 menuconfig 中。

檢查 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

我啟用了專家標誌(通過上面評論中的切換嵌入式系統作為 krishna chaitanya)但我的配置文件缺少條目:CONFIG_ARCH_SUPPORTS_RT

當我手動輸入標誌時,它會被 make 步驟覆蓋。要預設啟用此標誌,請打開文件 arch/Kconfig 並蒐索條目:ARCH_SUPPORTS_RT。(在 nano 中按 CTRL+W 進行搜尋)

將條目從

config ARCH_SUPPORTS_RT
   bool

config ARCH_SUPPORTS_RT
   def_bool y

當您現在還啟用了專家(正常設置 -> 嵌入式系統)標誌時,您應該在正常設置 -> 搶占模型下看到“完全可搶占核心(實時)”選項。

強制標誌是解決此問題的一種hacky方法,但它仍然對我有用。

引用自:https://unix.stackexchange.com/questions/582075